Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We had an old Windows XP server running a Filemaker database on a 2.6 GHz Intel CPU, but that server died. It's been replaced by a box with two 2.4 GHz Xeon CPUs and 5 GB of RAM that's running Ubuntu 11.04 natively, and Windows is running as a VirtualBox guest. 2GB of RAM has been dedicated to the Windows guest.

Of course, these old Xeon CPUs don't have the VT-x extensions, so I wouldn't expect to be able to add CPUs to the VirtualBox guest, but the Filemaker database is running at least 2-3x slower than it did on the old server. I would expect that utilizing one 2.4GHz CPU out of four available shouldn't result in such an astounding difference.

I would also like to be able to continue using this setup, since it would also mean we'd be able to remove our Linux server from the rack, which is running on even slower hardware (not that the system requirements are high for its job though).

So my question is: Why is this so slow? Is there anything I can do to change the situation? Or should I just give up now and find more suitable hardware?

Please note: I understand that the "new" machine should be about 1% slower in theory, so please don't tell me this "should" be fine. I need more concrete answers (as in, "I've tried this before and you should do X") since in the real world, it appears to be about 50% slower. I'm about to blame "virtual" CPUs to multithreading on single core processors, and possibly the difference in CPU architecture between Xeon and Pentium 4 CPUs.

share|improve this question

migrated from Aug 16 '11 at 0:09

This question came from our site for system and network administrators.

VirtualBox isn't exactly the best performance among the virtualization options out there. – Shane Madden Aug 9 '11 at 18:07
You mentioned adding more CPUs to the VM. Keep in mind this would probably decrease performance instead of increasing it. -- Have you run iotop/top/sysstat/etc on the host system to see if there are any obvious performance problems. – Zoredache Aug 9 '11 at 18:12
@zoredache: I don't think it's disk IO that's the problem, and one CPU gets maxed out when the Filemaker server is properly busy. But at the same time, the CPU being used changes nearly constantly, which I find kind of funny. – Ernie Dunbar Aug 9 '11 at 18:21
Hopefully you have installed the Virtualbox Guest Additions. And hopefully you run Ubuntu as the server edition. And all Dual Core Xeons with that mentioned GHz have VT-x! – mailq Aug 9 '11 at 18:24
@Shane Madden: Well, if you have any suggestions for changing the situation, I'm all ears. :) – Ernie Dunbar Aug 9 '11 at 18:26

Those CPUs should have VT so if you have a BIOS that does not let you turn it on, then move to another box that DOES let you turn VT on. You shouldn't try to run Windows guests without VT.

Databases are usually limited by two things. First of all disk speed, and secondly, the availablility of RAM to cache the data that they read from disk. Is it possible that the old box was optimized for database serving with a fast hard drive and you are now on a server with a slow desktop hard drive? It sounds like you have a reasonable amount of RAM if the guest server has 2 G available to it, unless this machine has a very high demand. How many users access it at one time?

If you just cloned the Windows hard drive to make the VM, it is possible that there is some configuration setting that is making life difficult. Did the old machine have 2 cores? If so, then it would be a good idea to test giving the VM 2 cores because either XP or Filemaker might be configured to expect that.

share|improve this answer
Actually, there was a bit of detail in the discussion that you may have missed. These CPUs are the old, first generation Xeon processors, model 2 according to /proc/cpuinfo. They're single-core but multithreaded, giving the kernel the impression that it has 4 CPUs to work with. Also, the original server has 1 single-core Pentium 4 cpu, but runs much faster with a native install of XP. In my experience with this Filemaker database, its performance is quite dependant on CPU speed, and your suggestion not to run Windows guests without VT is probably exactly where the problem is. – Ernie Dunbar Aug 15 '11 at 16:14
@Ernie - Take a look at VBoxManage modifyvm in the Vbox help file. There are some parameters that may improve performance that can't be set from the gui. – Joe Internet Aug 17 '11 at 0:43
VTx doesn't improve performance. What it does is simplifies virtualization code and is essential for a 64bit host to virtualize a 64 bit guest. – Matt H Aug 17 '11 at 3:31
@MattH: it also makes it so that you can assign multiple CPUs to a guest OS. That may not actually provide better performance, but it's a feature that's disabled for me. – Ernie Dunbar Aug 17 '11 at 16:10

Running XP on virtualbox on a Pentium-4 is actually fine, speed wise, as long as it's not relying on heavy disk IO. Your Xeons should be more than up to the task, with or without VT extensions. The issue is the disk IO.

If you can mount a samba share from a speedy fileserver, and FileMaker is happy using that for it's data, that will be a really big speed boost.

Also, make sure you have the virtualbox drivers installed in the VM. If they aren't, installing them should be another sizable speed boost.

If you can, put the .vdi files for the VM on it's own drive. That will insulate it from some of the IO overhead. Even if you have the filemaker files on a fast samba share, windows reads and writes all the time (swapfile anyone?).

And you probably want to give the VM just one virtual CPU; the previous commenter is right, adding more in this case will probably slow things down, not speed them up.

Good luck.

share|improve this answer
Ok, I'll give this a try, but that sounds overly complicated for a situation that requires simplicity. Windows really shouldn't need to swap to disk in my situation, since I've allocated it 2 GB of RAM and the WTM says it uses all of 101MB of PF usage. Physical memory shows that 1.5 GB of RAM is free. If Filemaker really wanted to, it could load the entire 750 MB database into RAM. – Ernie Dunbar Aug 16 '11 at 17:11
Nope. Loading the database over the network is definitely slower (I timed a particularly slow search with a stopwatch for each test case). Filemaker also complains that it would be slower if I load its files over the network, and that rings true. – Ernie Dunbar Aug 16 '11 at 23:41
I've also ensured that VirtualBox OSE host software and the Windows XP guest additions are the same version. – Ernie Dunbar Aug 16 '11 at 23:45
You might want to use the non-OSE version instead... – Joe Internet Aug 17 '11 at 0:46
Drat. I have seen it be faster, especially when the host system's drive is getting choked. And the guest additions are installed and up to date. Are you leaving the virtualbox GUI up all the time? You could install a VNC server (or turn on RDP) in the vm, and run your vm with vboxheadless. And I'm assuming you've done all the obvious tweaks inside of windows. Sounds like you need to try the virtualbox forums, to see what they say about speed tweaking. Good luck. – Kyle__ Aug 17 '11 at 13:47

I have found personally that although Virtual Box is a great product, there are some parts of it that do not perform at all well compared to bare metal.

The first step would be to try and figure out where the performance bottleneck is. Is it Disk I/O or Network I/O?

If you notice poor network I/O, consider using the paravirtualized drivers for VB.

Although, recent versions of VB have improved dramaticallym the paravirtualized drivers are the way to go to get the best performance.

Be aware too that database applications use the disk heavily. Your disk is probably not a native drive right? more like a file on a filesystem so there is more overhead in that.
Consider using raw disk from the guest. See here:

Under Advanced Storage Configuration. I hope this helps.

share|improve this answer

I have a windows xp guest with multiple CPUs and it too is slow. I suspect Virtualbox's IO APIC implementation is slow. I found some benchmarks on a similar configuration to yours (even a similar age):

You will likely have to reinstall the VM from scratch with only one CPU; I think XP requires IO APIC when supporting SMP configurations.

Also, If you use one newer CPU rather than these two older CPUs you will likely get a performance increase because the work per clock cycle will increase.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .