Virtualizing Cuts Web App Performance 43%
czei writes "This just-released research report, Load Testing a Virtual Web Application, looks at the effects of virtualization on a typical ASP Web application, using VMWare on Linux to host a Windows OS and IIS web server. While virtualizing the server made it easier to manage, the number of users the virtualized Web app could handle dropped by 43%. The article also shows interesting graphs of how hyper-threading affected the performance of IIS." The report urges readers to take this research as a data point. No optimization was done on host or guest OS parameters.
That is all very well, but we all KNOW apps slow down when we run them in a VM. What difference does it make to the average n00b who wants to watch funny videos and check their email? Anyone using computers for serious numbercrunching obviously won't virtualize anyway. No big deal
Duh.
Seriously. I don't know who gave anyone the impression that virtualization was a performance booster. Management improver? Sure. Stability insurance? Why not? But if you don't get that virtualizing your servers imposes a bit of overhead, then you're probably not paying attention.
I especially love the idea that running different types of server virtualized on the same machine is a good idea; the idea of virtualization of multiple servers is to distribute the load. If you have, say, ftpd, httpd and mysqld running as their own virtualized systems, they will all get hit *simultaneously*.
Again. Duh.
110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
Isn't it obvious? I already knew that performance would drop with Windows OS is hosted on Linux. It isn't WMware fault.
Who uses VMWare Server in a production environment anyway? We run all of our Web services, Exchange servers and SQL databases in VMWare's Virtual Infrastructure 3. VMWare Player and Server are only ment for lab evironments and low load applications. VMWare even says as much on their website. Either this is just FUD or the author is an idiot. In other news water is wet.
"Virtualized machine (hyperthreading disabled)
Disabling hyperthreading had negligible effect on the virtualized machine. In our test, the capacity increased a tiny amount to 403 simultaneous users. The difference between this result and the virtualized machine with hyperthreading enabled, however, is smaller than the margin of error for these tests -- more testing would be required before concluding the performance was better in the virtualized machine with hyperthreading disabled. "
The hyperthreaded capacity was 350. So my question is how is a 15% gain in clients served a "tiny amount"?
They performed the test on VMware Server not VMware ESX Server which is what most enterprises will use. VMware ESX Server runs on "bare metal", so it does not have the overhead of the host operating system.
Come on. VMware has come a LONG way. If they are not using at least VMware ESX 3, then this is not a valid test.
Linux under VMWare's network performance is pretty bad. An interesting visual confirmation is to use an ssh shell and watch the lag. That may just be the broadcom chips in the servers the company I was working for used, though. Guest OSes are fine for some low traffic stuff that only a few people will be using, and is definitely the way to go in the test lab; but I wouldn't use this configuration as a company's primary reverse proxy or mail solution.
That said,
I use a windows vmware session under linux for those times I have no choice, and it works just fine network-wise as a workstation.
And with quad core processors already here, do we care? There are major advantages in virtulizing a web application server, like being able to copy your disk image from staging to $n production servers for load balancing.
My first attempt at virtualization was last September with VMWare Server. During testing everything seemed fine. When everything was using it, performance was awful. Everything crawled. I ended up doing an all-nighter to move everything back to a regular server. Note, I wasn't overloading things. There was only one VM on the host. The memory was fixed, not paged to a disk like it is by default. The hard drive was preallocated. My intention for virtualization was to make things easier to manage.
That's when I started experimenting with Xen. This time I put the test under a very high load, and it seemed to handle everything well. I deployed it in October and so far there hasn't been a single performance issue.
I'm now totally addicted to Xen. I create Vms all the time, have split up services into different VMs (ie, when cups crashes it no longer takes out the copy of samba that handles logins, damn I hate cups). So far, no performance issues at all.
Dell Poweredge SC1420 with dual Xeon 2.8GHz processors
While I can't seem to find all the information on the SC1420, it appears as though this product uses processors from the Prescott generation of Intel CPUs. Some chips from this group support "Vanderpool", Intel's hardware virtualization solution, but not all do. The presence or absence of this feature could greatly impact the performance penalty faced by operating a virtualized computing environment. Further, Intel's new Core2 based CPUs feature a hardware virtualization implementation which may have vastly different performance characteristics. AMD's K8 family supports hardware virtualization as well. I'm excited about their new line of CPUs based on the K10 (Barcelona) core, which feature "NestedPageTables," which are supposed to greatly reduce overhead by doing memory translations in hardware instead of in software by the hypervisor.
All I'm really trying to say is that this article really is only a single data point. I wouldn't let their results influence your overall view of virtualization in any way...
I am a viral sig. Please help me spread.
Come on! You run virtualised web servers because 99.9% of all web servers are idle at any given time. So you put 100 on a server. The customer doesn't see any worse performance with their 3 hits a week page and the ISP makes more money/server.
This smells like a hidden advertisment for "Web Performance Inc.". Now somebody please tell me why I should trust the results produced by a relatively unknown product and company, and not stick to proven tools like Borland SilkPerformer or Mercury Loadrunner.
A monkey is doing the real work for me.
There's quite a lot wrong with their setup.
1) As others have pointed out, they should be running on ESX to get best performance.
2) Physical machine was a dual-proc. How many processors did they assign to the VM?
3) Physical machine had 2GB memory. They assigned 2GB to the VM!! Vmware will take 256MB of this
for itself, so that 2GB visible to Windows will be being swapped.
4) How many disks did the physical machine have, and what was on them?
If e.g. the physical machine had two disks, the VM should have been given two disk files, with each file being placed on a different physical spindle.
You get the picture.
Do i need to say more? We all know running any VM app is always going to be slower than a real OS on real Hardware. Ok mabe I didnt realise how much slowdown their was but there are easier and cheaper ways to run web servers. Nice to have given it a go and gathered stats but nothing new.
I do like the idea of a variably sized beowulf cluster running a floating number of package (LAMP) servers. Get more clients? Add more VLAMPs. Things slowing down? Add more hardware.
I started getting aroused as I read your post. This is highly disturbing.
Please stop stalking me, bro.
I know that the term 'data' is generally used as a singular in informal speech, but it still drives me nuts. I bet there are a lot of other current or former Latin club members that howl at this literary fingernails-on-chalkboard usage of the term. Not that I stayed after school for Latin club meetings, or to play Civ, or D&D...
Silently weeps into his tattered copy of Remedia Amoris
-Foo
I agree with many of the commentators here that this is pretty obvious. We use virtualization a lot, but also realize its limitations. For example, we don't run SQL or anything heavily transaction or I/O bound. CPU utilization is usually not a problem; virtual machines perform as well as their physical counterparts in most instances unless you have a lot of CPU intensive virtual machines running.
:D
Web servers are mostly memory and CPU bound which would give one the impression that they would be great candidates for virtualization. However, VMWare Server is not the solution; network I/O is not good on Server. Typically your results would be maybe 75% of the actual physical speed on a "passthrough", less on a NAT. It depends a lot on how your network is set up, not to mention the abilities of the physical machine.
The best solution is Virtual Infrastructure (used to be ESX). That product tackles most of the failings of VMWare server and fixes them. The only exception is that I still wouldn't run anything I/O heavy on VI. SQL's a no-no. Also, if you're not getting the performance from a single web server that you expect, you can easily throw up more web servers. Now, obviously you might get into M$ licensing issues, but that's why you run your web services on Apache
Of course VMware and Xen are going to be slow - that is the tradeoff you get when you want the ability to run both Windows and Linux at the same time.
http://openvz.org/ - it does a much better job of virtualizing IMO. The only minus is that all VM's have to use the same kernel version.
Or better yet, if you need better performance under load, why not Xen? I expected to see something in there on paravirtualisation, but nothing.
We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
Unless it scales linearly with the number of users, that is a pretty useless metric for the performance of the virtualization system (No, I didn't RTFA).
I have decided to refrain from commenting on this article, as I do not wish to be tarred with the epithet "me-too-er".
Having said that, "Me, Too!"
For speed, the newer virtualization tools KVM, Xen, and Virtuozzo are presently substantially ahead of the present incarnation of VMWare. KVM requires the new "hardware virtualization" CPU's from Intel and AMD which must be mentioned here, since they represent a major industry recognition of the value of virtualization. This article seems to be giving people the impression that performance of VMWare Server is indicative of virtualization tools in general, and that all virtualization tools slow down hosted virtual machines dramatically. This is simply false. I know hosting providers running 50 virtual servers on a single dual CPU box with thousands and thousands of users, which would simply not work if all virtualization tools had a 43% hit per instance. Another key matter here is that the author fails to mention (or realize?) VMWare Server is crippleware. VMWare states explicitly not to use VMWare Server for anything other than testing because it does not have the performance or feature set of their full blown ESX and GSX servers. Also, while VMWare may be the oldest and arguably most mature virtualization suite, it is certainly not the fastest.
who are these people? why are they not being publicly flogged?
They're using their grammar skills there.
I think it was pretty obvious that it would add overhead and therefore drop performance. This study is good for quantifying how much of a performance threat it is. And 43% is not an incredibly bad value in my opinion, it is not even 50% ...
Copyright infringement is "piracy" in the same way DRM is "consumer rape"
It isn't surprising that VMWare would be bad at a web-app workload. See the original paper on Xen:
/ 2003-xensosp.pdf
http://www.cl.cam.ac.uk/research/srg/netos/papers
Top of page 9 has a chart comparing native Linux, Xen, VMWare, and UML for different workloads. They show VMWare degrading performance by over 70% for SPECWEB 99.
Web applications are OS intensive; while VMWare is quite good at pure CPU-bound tasks, it has to perform a lot of emulation whenever you are running inside the OS. So it will stink at anything with lots of small IO, lots of metadata operations, or lots of process creation/switching. For example, VMWare shows a whopping 90% slowdown for OLTP database workloads, according to the Xen paper, and it really isn't surprising. The OS microbenchmarks in the above paper (page 10) show that VMWare has abysmal performance for things like fork(), exec(), mmap(), page faults, and context switches.
Basically, Xen doesn't have to emulate the OS, because they make modifications to the OS. VMWare does dynamic binary rewriting (think fancy emulation) to run an unmodified OS; they therefore pay through the nose in performance overhead for OS-intensive workloads.
What what the typical application. Was it well writen or not. what was the reason for the slowdown (Memory, Network, ?). Without that 43% is just a munber as good as 42%, the answer to all performance loss questions
The CPU-overhead on the Xen hypervisor is much much lower - between 2-4%. http IO has been less explored. There have been workshops on its use in HPC http://xhpc.wu-wien.ac.at/ http://xhpc.ai.wu-wien.ac.at/
Since a virtual server only gets 57% of the performance of a physical server, just run TWO virtual servers!
That way, you'll get 114% throughput!
Next week, I solve world hunger, global warming, and bring peace to the Middle East.
1. They fucked up their setup. They assigned 2Gigs to VM and all host has is 2Gigs too? Brilliant.
2. Since when are you allowed to post benchmarks of MS software?
In the same way as +1 Funny doesn't change your karma, maybe a -1 Retracted or -1 Incorrect that doesn't knacker your karma is needed too...
Granted, I've stayed as far away from it as I can, but can customers finally use yum without sick workarounds, or is it still effectively restricted to using vzyum on the hardware node itself, rather than the VE?
I'm sorry to say, but XEN kicks Virtuozzo's ass in terms of usability and stability.
Has anyone done a recent true apples to apples comparison with Vmware, Virtual Server, and maybe Sen on the same exact hardware running the same guest VMs? Obviously it would have to have Windows as the host OS due to Virtual Server being Windows only but I would like to see how the various solutions stack up in different scenarios. Such as IO heavy, CPU heavy, sheer number of VMs that can be hosted, etc.
---
You can use any kind of HTML formatting that Slashdot accepts.
Generated by SlashdotRndSig via GreaseMonkey
But it highlights one thing: if you hand virtualization to clueless people, you'll get bad perfs.
It also shows, both in the article and in the comments here, the severe misunderstanding surrounding the concept of "virtualization".
I see lots of clueless people saying "uh, of course, virtualization perfs sucks". I think those people don't realize today's virtualization technology ain't grandpa's past-century emulators.
There are today virtualization technologies that offer basically native speeds. Xen can now run in two modes (para-virt or hardware-virt, the latter if the MOBO/BIOS/CPU supports Intel-VT / AMD-V)... In paravirt mode Xen offers native speeds (the overhead is so small you'll have a hard-time measuring it). Better: network I/O ain't good enough for you? Simply "passthrough" a PCI device (say a PCI network card) to your paravirtualized guest. The guest (and only the guest) is directly accessing the PCI card (no more network I/O problems). But you can't run Windows on Linux using paravirt under Xen...
In hardware-virtualized mode, under Xen (or KVM, which only does hardware-virt), you can run Windows. Network and disk I/O, for hardware virt, at this point sucks. However you can install special drivers in your guest to make it speedier (drivers for Windows under Xen are $$$ and under development for KVM).
But, wait, there's more to come... Next gen IOMMU is around the corner. And as soon as it gets implemented in Xen, the already super-fast virtualized system gets an additional boost and you'll have something even closer to native, even when running Windows under Xen.
If you think "virtualization will always be slower" you need a reality check: the CPU makers are working hard so that the virtualization overhead becomes irrelevant. And suddenly the ones not using virtualization will find themselves with a less capable, less secure, less maintanable box being, in some particular, anecdotical, cases only 0.05% faster.
Virtualization is here to stay and the overhead, already very small today, will keep shrinking.
Although the focus is on virtualization and its effect on performance, I noticed that the author disclosed that he ran the tests on VMWare. The VMWare EULA states in section 3.3 "You may use the Software to conduct internal performance testing and benchmarking studies, the results of which you (and not unauthorized third parties) may publish or publicly disseminate; provided that VMware has reviewed and approved of the methodology, assumptions and other parameters of the study.".
This relates to the earlier slashdot story where xensource had to redact areas of their performance whitepaper
I wonder if they gave him the green light to report these results on VMWare?
This is stupid!
First of all, VMware Server was never intended to be used as a dedicated server, even when put over Linux! That's plain dumb! VMware made it available so that customers can demo the product before buying it.
If anyone wanted to run a dedicated virtual server, then they should use VMware ESX Server.
To obtain semi-realistic statistics on how virtualization is improving, then such statistics should be taken from test on ESX, an environment set up for actual server use; If possible, test the VM on different versions of ESX.
And how is that a load balancing test?? Using one machine only!?? A load balancing occurs when you have multiple machines and distribute the workload on all of them.
Silly test.
Mod points are a dangerous tool. Abuse them wisely.
Virtualization will slow things down... yes that's obvious, since you're emulating the hardware to a certain extent, and triggering a bazillion context switches every time I/O happens. This stuff is bad for web apps, sure, but normal people don't run just one VM per box. The benefit comes from having multiple VM's running on the same physical machine. For many outfits, it's far cheaper and more efficient to have a whole bunch of little isolated VM's running on one big beefy SMP server, than to have them all as little boxen taking up tons of space and chugging more electricity than Tokyo Square on payday. It also makes it a lot easier to migrate those VM's to bigger/better gear as needed for upgrades or failover protection, often with zero downtime (just a bit of lag during transfer). That's how you can justify spending 25k on a 16-core SMP beast with 32gb of ram and four independent RAID-5 banks. It's still cheaper than 16 separates, not just the upfront cost of equipment but also the ongoing maintenance costs.
Hell I even have a VM server in my apartment, just for the convenience of running 4 distinct OS'es on one neatly stashed box. I don't need a KVM switch or long-ass serial cable, everything's done VNC-style through the VMware console from boot to poweroff. That feature alone makes VM's immensely attractive in many scenarios. For sysadmins, you can do all the work from your desk, no need to go stand in the chilly server room for an hour waiting for a tape restore or OS reload, and you can even script a lot of functionality through the hypervisor API. I'm not saying it's the solution to everyone's problems, but for those things it was designed for, it does them extremely well.
-Billco, Fnarg.com
A study shows that even without optimization, web apps can ran at almost 60% of their native speed using virtualization. Using better optimization, this percentage can be even higher. It's all how you present the data!
Some settling may occur during posting.
I thought the "Does hyperthreading help in the realy world" issue was related to the way Windows does task switching.
I am under the impression that hyperthreading helps Windows more than Linux because Windows fails to save certain register states, and thus incures a higher cost, in terms of performance, when it task switches.
His test uses Windows VM's on top of Linux. Thus I could see when it could help in his situation, but believe that the generalization about hyperthreading is misleading.
Can anyone clarify this?
Competition Good, Monopoly Bad.
If you are serious about performance of virtualization then you need to look at Solaris Zones, and Linux VServer or Virtuozzo. Running multiple instances of the OS is very inefficient. Zones probably provide the best resource management compared to VServer.
This is obviously one data point, and as others have mentioned, not even the best point for deployment.
But there's a whole raft of virtualization solutions available, and that's just in the Linux kernel, not to mention the Windows solutions. It would be fun/interesting to see an updated comparison of the various solutions.
Then for the real benchmark point, it would be good to see what IBM does with the Big Iron virtualization. Intel and AMD are finally adding hardware support, and it sounds like Intel is improving its support on upcoming products, and no doubt AMD will be, as well. But IBM has been virtualizing for decades, and IMHO has probably forgotten more than Intel and AMD have ever learned.
The living have better things to do than to continue hating the dead.
It says clearly "It should be noted that no tuning was performed on the native server, the virtualized server or the VMs host machine."
Does this mean they did or did not install the guest tools? If they did, well, ignore this.
If they did not it will have a huge impact on the performance of the guest. It's the difference between vmware emulating lots of bits and doodads to make an AMD lance ethernet card and ide interface look exactly like the real hardware so the distributed drivers don't freak out and "here's a packet -- send it."
Nobody in their right mind runs a VM without the drivers, but it is an "optimization"
hmmm.
VMWare uses one kind of virtualization, where it intercepts system calls (by loading a module into the kernel that traps faults to privileged instruction execution) and emulates them. When doing heavy amounts of system calls, like using TCP/IP sockets or opening files or reading files that are already open or writing to the UNIX socket for a database (which reads and writes to disk a ton) or whatever, the system slows down massively. Paravirtualizing Hypervisors like Xen rely on the guest OS having its code rewritten to specifically call the hypervisor, in which case the overhead of a syscall is... a syscall. For the most part, performance hit is negligible.
Support my political activism on Patreon.
Hyperthreading? Good lord, this is running on ancient hardware. This should be deployed on something that can use either AMD-V or Intel VT. VMWare has hyperthreading support and can show some improvement with "snappiness" but it doesn't seem to help in general throughput over the long run and may contribute to instability.
Usually, the limiter in this type of setup would be IO. When one virtualizes such a setup, you must reconfigure your application to minimize disk IO (with web servers we cache like crazy and really jack up the ram. 16-64 GB is my norm if it is a highly transactional site). 2GB is definitely not enough for IIS & Server 2003 doing anything more than serving static pages.
[RIAA] says its concern is artists. That's true, in just the sense that a cattle rancher is concerned about its cattle.
The headline says the application uses ASP. The article states they used ASP.NET in their tests. This is a large performance difference, primarily because .NET is byte-compiled at execution. ASP is purely interpreted.
I don't see why everyone is saying that's it's a given that running in a VM is slower than running native. I know that makes sense, but will it always be so ?
Look at the Java VM, in some case it can do a better job of running native code, it dynamically knows about using faster hardware and CPU optimizations that the underlying native code did not.
Why cannot a future VM examine common operations and run them faster, like networking code ?
They state in the test that the servers are dual proc servers.
VMWare Server, the free edition only emulates a single processor environment for your virtualized host.
VMWare ESX or whatever they are calling the expensive thing today, has the ability to give your virtualized host multiple processors.
So it's not surprising that it could only handle half the load, it only had half the processors.
We don't do virtualization for heavy use environments. We do it because different business groups don't want to share servers... that is, they can't agree on maintenance windows, etc.
Hmmm virualization 101. Don't virulize anything that requires high I/O if you do not have the hardware to do it.
:)
.. and yeah it can
First of all I built an ESX server farm for high I/O apps. Feel free to search for my name at vmware. I used to work
at Welch Foods until the new CIO just mentioned to words "Outsource IT" I left before a decision was made so I can
"stick it to the man". What the heck, the IT Director left anyway. Anyway we created an esx server farm with 8 Dell
6650s, and we had 2 Dell 6680 prototypes to evaluate. Most of these machines had 48GB of RAM and 4 GBIC connections
to our EMC SAN. And... Lots and lots of disk thrown at the databases!!!!!!!!
Another prime candidate to use for a server farm would be a BLADE server with 2 dedicated GBICS per blade.
If you decide to put up esx server on one server with just 2 scsi controllers and expect to run multiple virual machines
to support multiple web applications, then you are a dumb ass and should get out of IT.
If your a company that would like an ESX 3.0 server farm designed, then send me an email
My next consulting gig will be Delta Dental.. A very fast esx server farm ro run Oracle on Linux.
be done. You need the right hardware and software know how. TUNING.. lots of tuning.
If I read this right, it's an unoptimized install on a barely server-grade system using a dev package rather than a production package. I would *expect* it to run less than stellarly.
This translates to "brother-in-law IT is crap."
heck, it might be better to say "VMware server will limit performance degradation to 43% when used in a poorly thought out implementation."
I've been on slashdot so long I'm starting to get out of touch with the cool stuff if it ain't on slashdot.
As long as CPU's continue to get faster and cheaper, and caches larger, this is hardly a gloom & doom end of the world. Most systems don't tax their CPU's most of the time anyway, and for the next 3 years at least CPU's will continue to get faster and cheaper.
"It's the height of ridiculousness to say for those 9 lines you get hundreds of millions."
Um duh! I thought the idea behind virtualization was to run what would have taken two computers on the same computer, and simplify administration. Who really has a mission critical high volume server running in a VM machine? Shakes head... I've used it to take four old (old) servers and put it on one new computer which is actually an upgrade from the P233mhz machines they were running on. I can also see user environments using VMWare to make it easier to restore computers when ID10T's screw something up. But never for a high volume web server. Besides IIS calls way more threads than Apache does to host a page, why would you use IIS for a high volume web server? I do appreciate the study pointing out the obvious!
Also, the OS vendors like Microsoft and Linux distro vendors should get together with VM vendors and make their installers install the OS "vm-ready." This way, if a customer tried to boot his server's hard drive in a VM environment, it would come up, see the hardware change, and continue along its merry way. Likewise, the OS vendors should create tools to make it easy to move a VM drive to actual hardware. This may mean making an "interrogation CD" that can boot a new box to create a list of hardware, which can then be used to install the correct drivers on an existing VM'd installation in preparation for migration. I realize some of these tools already exist but the industry needs to standardize.
VM engines would distinguish themselves by their relative efficiencies, costs, management tools, additional virtual devices, what hardware devices they pass through to emulated VM devices, what devices were passed through "direct" as virtual rather than emulated devices, etc.
Also, ideally, there would be a popular, easy-to-set up, minimal-overhead, open-source, reasonably-efficient, reasonably-easy-to-manage VM designed for cases where 1 VM ran on each real box. In the simplest case, this would amount to nothing more than
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Because eventually, over time, a disaster will occur causing 100% downtime (or 0% throughput) on a monolithic system. Being able to restart the virtual machine quickly or even transparently on another piece of hardware without doing restores, hardware driver installations, or any number of other time delaying obstacles will increase the overall performance and total throughput of the application. In other words: A monolithic system can calculate pi to 10,000 places faster than a Virtual Machine. But they might both get to 10^10000000000 places in similar timeframes .
...But I digress. TREMBLE PUNY HUMANS!ONE DAY MY SPECIES WILL DESTROY YOU ALL!
Te purpose of VM is to consolidate servers. The reason yu'd want to consolidate is that you find you are running 4 physical boxes and each one is running at about 1/10 of full capacity. So you say "cool I can loose three boxes and cut managmant and electrical power by 3/4. On the otyher hand if you find you need more performance you buy more boxes and "load balance" them
Also everyone knows you loose some performance running VM but if you need to run OS "A" guest or OS "B" host this is the only way. If you need to run Solaris on Solaris there are faster and better ways (zones) and same with Linux (zen)
The whole point of VM in a data center is to put "extra" cycles to better use, you would never use if if "cycles" were in short supply.
Better to say "Don't virtualize stuff with high I/O unless your virtualization solution paravirtualizes the I/O".
/mnt/virtimages/windowsxp.img). Give each "virtual disk" its own partition. Easy with LVM. For example, my laptop's virtualized Windows partition is /dev/system/windows - under QEMU/KVM it's VERY responsive (with the exception of guest video resolution changes - QEMU+KQEMU handles this well but QEMU+KVM does not. The result is a blank white window with maximum guest OS CPU usage for a few seconds.)
As others have posted, VMWare Server sucks for high-I/O situations, while other solutions (Xen using paravirtualization instead of HW virtualization, and to some degree even Xen with HWV) perform MUCH better in high-I/O situations.
At least a few tips regarding disk I/O:
Paravirtualize. Easy with Xen + Linux hosts/guests
When paravirtualizing, don't use file-backed disk images (e.g.
retrorocket.o not found, launch anyway?
This is pretty basic stuff, I think everyone knows that when you use a VM it won't run as fast as hardware. This is a classic tradeoff of management vs. speed. What is more important? Choose your solution from there. Although I think a good way to setup your servers is to use a hardware server and have a VM box for cutting over in case of failure on the main server. This way you at least have something running and aren't SOL if your server dies.
I would beg to differ.
p df
We've done testing with many tools, and VMware ESX is the fastest true virtualization suite that we've tested.
First off, Virtuozzo isn't a real Virtual Machine hypervisor at all, it's a way to jail applications in a Windows environment so they don't interfere with each other; it doesn't create all-out VMs like the others.
Second, your view on "hardware virtualization" assist is flawed - Intel VT and AMD-V (which are the two virtual assist features out there) both simply make it *easier* to write a Virtual Machine Monitor, not faster. VMware doesn't require AMD-V or VT except in a specific case (64-bit VMs on Intel hardware) because VMware's Binary Translation stuff is *faster* than the built-in CPU instructions. They've had more than half a decade to perfect their virtual machine monitor, and their performance is very, very good.
You see all these new Virtualization products out on the market now that require VT or AMD-V (Xen needs it for windows VMs, KVM needs it period) because now, anyone can write a reasonably-performing VM Monitor by using the build-in CPU features. But that doesn't make it faster!
See this presentation from VMworld 2006 for more info:
http://download3.vmware.com/vmworld/2006/tac9463.
"I want to get more into theory, because everything works in theory." -John Cash
The company I was a consultant for recently, had a policy using VMware for almost all windows servers. We were installing a new type of java middleware software, and noticed a significant performance overhead from using VMWare. We estimated the overhead might be as high as 50% (that 43% sounds familiar), while VMWare usually claims only a few percent overhead, for most applications.
The important part was that the middleware product was expensive and the license type was a per processor license. So a 50% overhead, implied that the number of processors needed could double, and thus the license costs could double, which would a be very significant cost increase.
So it is nice to hear similar experiences form other applications. My own view is that VMware might be very well for many situations, but there are exceptions. I don't have any proof, just a gut feeling, but is seems that having java applications with high numbers of threads can suffer a significant performance hit.
It depends on what type of virtualization you do and how you do the virtualization and stuff.
They should have ran Linux, Apache and PHP virtualized on a Linux machine, instead of Windows, IIS and ASP on a Linux machine.
Th key thing to not is that their tests don't substantiate their conclusion:
> These results indicate that a virtualized server running a typical web application may experience
> a 43% loss of total capacity when compared to a native server running on equivalent hardware.
This may lead to people believing that virtualiz]ation just isn't worth the advantages. The key problem is that there are several virtualization schemes. Off the top of my head, I can list:
* Xen
* KVM
* Linux-VServer
* OpenVZ
* User Mode Linux
* lguest
Each has it's pros and cons in terms of overhead, maintenance, and performance. Generalizing based on one VMWare configuration, is just plain foolish.
Let's not forget the old chroot approach that gives you 90% of the advantages of virtualizing web servers with few of the disadvantages.
The key thing to do is to pick the right technique for the right task.
The test was so poorly performed that the article was useless. It is little more than a poorly disguised ad for their load testing product. All I want to know is: how much would it cost for me to post a similar slashvertisment as a'story'?
In the late 90's I heard about CocaCola in Atlanta using virtual machines to increase the number of users per Lotus Notes server. When running Lotus Notes servers on Windows they found that they ran out of threads even though the procesor and disk load were not maxed. By running linux on the HW and running multiple Windows VM's for Lotus Notes server they were able to have more users per physical box.
At the time they were running out of server space and power in the server rooms so there was a rule that one server had to be sunset before another was added. By adding multiple virutal machines per server they were able to increase the number of users w/o adding more physical servers.
I'll have the fries, please....
I have exchanged a couple of emails with Chris Merrill (the person who did the test). He confirmed that SQL Server was used as the backend for the ASP.NET Issue Tracker System (the app they were testing) and that SQL Server was virtualized too (I am not sure which version and which edition of SQL Server they were using). My experience have been that database servers do not virtualize well, at least not the ones under any kind of decent load. Unless we are talking really small or very mildly used web apps, you do not normally put web tier and database tier on the same box (at least not in the Microsoft world). It would be very interesting to see the results with SQL Server removed from the equation (running on another server).
why in the bloody hell were they testing with VMWare Server 1? If they want to test a production business app then they should have used a tuned VMWare ESX machine and tuned guest OS. As far as I'm concerned VMWare Server, while a good product (and better than MS's server product) is not something to be used in production, it's more for labs/dev environments, or very small companies that have no budget for virtualization and can live with the performance decrease.
I also see they used cheap hardware, something meant for small SoHo or branch offices. Should have tested on a Poweredge 2950 at least, with good storage.
xen, vmware, why so difficult? Why not run vserver (or similar) in a unionfs layer? You can still have all the benefits of migratibility without the performance hit.
Microsoft itself measured 5% virtualization overhead on Mainframes. http://download.microsoft.com/download/7/3/e/73e77 129-db34-4c95-b182-ab0b9bd50081/MainframeBenchmark Proj.pdf
And they are not talking about a single image, they are talking about 60 or 90 images in this 2003 Mainframe-Benchmark.
Would be interesting to see what is the performance and throughput penalty with a 90 image IIS-Setup.
They key thing I got from this was that VMWare Server not ESX doesn't seem to allow the virtual machine to take advantage of hyperthreading. With hyperthreading disabled, the performance of the virtual machine was MUCH closer to the performance of the real machine.
Having said that, as other posters have mentioned, this is with VMWare Server, not ESX which is the VMWare product meant for high load environments and not labs.
Having read your comment, reeking with dumb-ass attitude, and splashing internal information about your previous and next employer's IT departments all over the place, I'd just say don't hold your breath waiting for that phone call for your next gig...
I have spent a significant amount of time and trouble trying to find out exactly what processor is used in the SC1420. I ran the Intel CPUID program and tried to feed the results into the Intel processor specification decoder. In the end, I was unable to match the processor with any certainty against any specific CPU. I contacted Intel and provided hem with the CPUID results, and they refused to answer my question and said that it was up to Dell whether or not they wanted to disclose the processor they put in the system. I asked Dell what the sPsec number was on the processors they use and they rerfused to answer my question. The only way to find out for sure is to pull the CPU out of the box and scrape off the thermal goo and read the sSpec number off the chip. Of course doing so voids your Dell warrantee and leaves you with a dissasembled computer. Becase of this stupid situation where I am not allowwed to know what part I have purchased, I will no longer buy anything from Dell.
Interesting paper, but not very applicable to an Enterprise Data Center. No one in their right mind would even think of putting VMware Server 1 in production: test and development, maybe, but production - never. Also, no one in IT management or administration would ever think of putting a single VM on a Virtual Server. The minimum would be two or three.
Also, the article did not state the specifications of the native Windows 2003 server. Did the native server have more or less CPUs? Did it have the equivalent amount of RAM? Were the NIC cards the same or at least the same speed? In performing the tests, the host system should have one CPU reserved for itself and about 512 MBs of RAM. It should also have a dedicated NIC card. So, if the native Windows server had two CPUs, 2 GBs of RAM and 1 NIC, the host server would need 3 CPUs, 2.5 GBs of RAM and 2 NIC cards. At least with this configuration we are getting closer to comparing apples to apples.
I would expect a performance loss of some percentage using VMware Server, but not 43%. The author did say that no tuning was attempted and I would expect that with proper tuning and the above hardware specifications it would be possible to achieve an acceptable 20-30% performance loss. Even with ESX there will be approximately 5% loss due to the overhead of the kernel, but this is very acceptable.
The idea behind virtualization is not one-for-one performance matching, but to consolidate multiple physical servers into one. If you have 5 servers running with a peak 10% CPU load and equivalent memory and I/O loads, then they are candidates for virtualization. IT managers are looking for lower Data Center operating costs more than they are looking for higher performance models. If it means they need to add an additional VM to cover the performance losses, that's acceptable as long as they get the power, cooling, floor space and general operating costs reduced.
In closing let me restate that the fundamental issue with doing a one-for-one performance analysis regarding virtualization is flawed. No one expects an application running in a VM to perform the same as it would on a stand-alone system.
VMware has posted a response: http://blogs.vmware.com/vmtn/2007/04/response_to_l oa.html
.Net application.
# The test results are another example of "apples to oranges" comparison, and the reason VMware requires a benchmark review to ensure that benchmark test methodology is correct. Here are more details about how the physical and virtual configurations differ:
1. CPU: In this case, the physical environment consists of dual Intel Xeon processors with hyperthreading enabled i.e. there are 4 logical CPUs in the physical environment. The virtual environment details are not provided, but assuming default values, we imagine the virtual machine is using a single virtual CPU. So in essence the test is comparing results from a 4-processor physical environment to a 1-processor virtual configuration. This can have a huge impact on multi-threaded apps such as this
2. Memory: The physical environment used 2GB memory available to the machine. In the virtual environment, the VM was also assigned 2GB (the article implies that the physical machine has more memory). While all the details are not available, this memory configuration may result in swapping since the host operating system and VMware Server have their own memory requirements.