2

In VMWare you can use multiple CPU, but only as much as present on the host. Is there a way to use more CPU than physically available ?

It would be to :

  • test software designed to run on an expensive 16-way box on commodity 2-way boxes.
  • Use an image designed for 2-way on a 1-way host
  • test software on not-power-of-2-way (think 3) (Although this could eventually be done on a 4-way box)

In VMWare you can use multiple CPU, but only as much as present on the host. Is there a way to use more CPU than physically available ?

It would be to :

  • test software designed to run on an expensive 16-way box on commodity 2-way boxes.
  • Use an image designed for 2-way on a 1-way host
  • test software on not-power-of-2-way (think 3) (Although this could eventually be done on a 4-way box)

Update:

I specifically want be able to run a 16-way configured OS on a 2-way hardware, not basic over-subscribing (like 16 2-way on a 4-way hardware) that is effectively handled by almost every virtualization software currently available.

I also don't really want to invest in a very specific solution if I don't have to since the idea is to limit the investements required.

And I cannot just increase the number of the threads as it has been cleverly suggested since :

  • In one application, I would like to be able to test the self-regulation of process numbers.
  • I want also to be able to see the impact of having a few number of big SMP (16+ way) hosts over a big number of small hosts (1 or 2 way).

Update(bis):

I finally found out that QEMU does exactly this.

Steve Schnepp
  • 2,222
  • 3
  • 21
  • 27
  • Can you refine your question? Do you want to run one Windows (or Unix or whatever) 16-way instance on a 2-way box under virtualization? The way your question is written, it might be interpreted as running 8 2-way instances on a 2-way box, which is what Chopper3 was thinking. Just trying to make it more clear so others don't make the same mistake. – Brent Ozar May 18 '09 at 11:30
  • You got it right : one 16-way on one 2-way. – Steve Schnepp May 18 '09 at 12:28

5 Answers5

6

Even if you do find an emulator that will do this, the reality is that you won't be able to fully test in this scenario - race conditions, locks, and such can't be fully tested to work in a parallel environment if you are still running everything essentially sequentially.

-Adam

Adam Davis
  • 5,366
  • 3
  • 36
  • 52
4

Actually QEMU offers the -smp X launch option that does exactly what I need.

Steve Schnepp
  • 2,222
  • 3
  • 21
  • 27
3

VMWare DOES let you oversubscribe CPUs though, i.e. if you have dual quad-core Xeons (i.e. 8 cores total) you can have 6 x dual vCPU VMs. Obviously if all 6 VMs 'go white' at 100% CPU you're going to run into performance issues but that is, hopefully, unlikely to happen. Same goes for memory too by the way. Hope this answers your question.

Chopper3
  • 100,240
  • 9
  • 106
  • 238
2

I think you need some serious simulation to do that, like Simics or similar.

When it comes to simple testing just using more threads than there are cores would provide at least some useful data, right?

It sounds like it would be ludicrously cpu-demanding to emulate more cores - at least in any meaningful way. But I could be wrong ^^

Oskar Duveborn
  • 10,740
  • 3
  • 32
  • 48
2

No, you can't run a 16-way image on a 2-way box. If you don't mind spending a little money, get a few used IBM 440's off Ebay. You can daisy-chain them together to build one 16-way box, and they're absurdly cheap, like sub-$200. They weigh a ton, and they're loud, and they use a lot of power, and they're not particularly fast (all single-core) but they will achieve what you're after. Plus they run VMware ESX - I've used them since v2.5.

The daisy-chaining cable isn't usually included, so you'll need to find a source for those. And you have to make sure that all of the 440's have the same CPU speed.

If you're in the South Florida area, let me know and I can hook you up with a shop that might sell theirs.

Brent Ozar
  • 4,425
  • 17
  • 21