When VMware Performance Fails, Try BSD Jails
Siker writes in to tell us about the experience of email transfer service YippieMove, which ditched VMware and switched to FreeBSD jails. "We doubled the amount of memory per server, we quadrupled SQLite's internal buffers, we turned off SQLite auto-vacuuming, we turned off synchronization, we added more database indexes. We were confused. Certainly we had expected a performance difference between running our software in a VM compared to running on the metal, but that it could be as much as 10X was a wake-up call."
Oh the irony
Kiteboarding Gear Mention slashdot and get 10% off!
Virtualization is an excellent story to sell. It is a process that can be applied to a wide range of problems.
When applied to a problem it seems to create more performance issues than it solves. But it can make managing lots of services easier. I think that's the primary goal to these VMware-like products.
Things like Xen take a different approach and seem to have better performance for I/O intensive applications. But a Xen hypervisor VM is in some ways more similar to a BSD jail than it is to VMware's monitor.
VMware is more like how the Mainframe world has been slicing up mainframes into little bits to provide highly isolated applications for various services. VMware has not caught up to the capabilities and scalability to things IBM has been offering for decades though. Even though the raw CPU performance of a PC is better than a mid-range mainframe at 1% of the cost (or less). But scalability and performance are two separate things, even though we would like both.
“Common sense is not so common.” — Voltaire
I wonder if this would help me, I am running 2 VMWare servers on an older box and it is a little lethargic at the moment. If I could ever get to the story I might be able to find out :|
No Coffee, No Workee
So we go back to where we started from: chroot and jails. What really is the benefit of extended virtualization? I haven't "embraced" it as I am supposed to do.
I can see where it makes sense if you want to merge several servers that do absolutely nothing all day into a single machine but a decent migration plan will run all those services on a single 'non-virtual' server. Especially when those machines are getting loaded, the benefits of virtualization quickly break down and you'll have to pay for more capacity anyway.
As far as high availability goes: again, low cost HA doesn't work that well. I guess it's beneficial to management types that count the costs of but don't see the benefit in leaving a few idle machines running.
Then you have virtualized your whole rack of servers into a quarter rack single blade solution and a SAN that costs about the same than just a rack of single servers but you can't fill the rack because the density is too high. And like something that recently happened at my place: the redundant SAN system stops communicating with the blades because of a driver issue and the whole thing comes crashing down.
Custom electronics and digital signage for your business: www.evcircuits.com
Or there's always User-Mode Linux.
My blog
TFA: "Error establishing a database connection"
So much for that. Also, am I correct in assuming BSD's jail is the equivalent of Linux's chroot? Is this another case of "Didn't know I should have been limiting processes instead of visualizing another OS for a single process" stories? I mean .. isn't that, well, obvious?
We had performance issues with VMWare Server as well, especially in the disk I/O area. Converting to XenServer from Citrix solved the issues for us. We have great speed, can virtualize other OS's, and management is significantly better.
We use jails a lot at my work. We have a few pretty beefy "jail servers", and use FreeBSD's ezjail port to manage as many instances as we need. Need a new spamfilter, say? sudo ezjail-admin create spam1.example.com 192.168.0.5 and wait for 3 seconds while it creates a brand new empty system. It uses FreeBSD's "nullfs" filesystem to mount a partially populated base system read-only, so your actual jail directly only contains the files that you'd install on top of a new system. This saves drive space, makes it trivially easy to upgrade the OS image on all jails at once (sudo ezjail-admin update -i), and saves RAM because each jail shares the same copy of all the base system's shared libraries.
For extra fun, park each jail on its own ZFS filesystem and take a snapshot of the whole system before doing major upgrades. Want to migrate a jail onto a different server? Use zfs send and zfs receive to move the jail directory onto the other machine and start it.
The regular FreeBSD 7.2 jails already support multiple IP addresses and any combination of IPv4 and IPv6, and each jail can have its own routing table. FreeBSD 8-CURRENT jails also get their own firewall if I understand correctly. You could conceivably have each jail server host its own firewall server that protects and NATs all of the other images on that host. Imagine one machine running 20 services, all totally isolated and each running on an IP not routable outside of the machine itself - with no performance penalty.
Jails might not be the solution to every problem (you can't virtualize Windows this way, although quite a few Linux distros should run perfectly), but it's astoundingly good at the problems it does address. Now that I'm thoroughly spoiled, I'd never want to virtualize Unix any other way.
Dewey, what part of this looks like authorities should be involved?
FTA, "Jails are a sort of lightweight virtualization technique available on the FreeBSD platform. They are like a chroot environment on steroids where not only the file system is isolated out but individual processes are confined to a virtual environment - like a virtual machine without the machine part."
Not knowing much about FreeBSD and it's complementary software, what is the difference between FreeBSD Jail and Solaris Zones?
A Solaris Zone could also be described the same way.
Vip
This is slightly off the server virtualization topic, but I had a similar experience with LTSP and some costly competitors. Using LTSP we were able to put up 5X the number of stable Linux desktops on the same hardware. I'd tell every organization out there to do a pilot bake-off as often as possible. It won't happen all the time, but I suspect that more often than not, the free open solution, properly setup will beat the slickly marketed, closed proprietary solution.
Virtual machines tend to be fast in theory, but slow in practice. Just look at Java.
The new buzzword of Virtualization has reached all corners of the US Government IT realm. Blinded by the marketing hype of "consolidation" and "power savings" agencies of the three-letter variety are falling over themselves awarding contracts to "virtualize" the infrastucture. Cross-domain security be damned, VMWare and Microsoft SoftGrid Hyper-v Softricity Whatevers will solve all their problems and help us go green at the very same time, for every application, in every environment, for no reason.
This is the recovery from the client-server binge-and-purge of the 1990s.
Here we go again.
Kriston
If you really need all the performance you can get for a service, don't virtualize it, or at least check that what you can get is enough, Virtualization have a lot of advantages, but dont give you the full resources of the real machine is running into (and if well how much you lose depend on the kind of virtualization you use, still wont be full). Maybe the 10x number could be VMWare fault or just a reasonable consequence of how is doing virtualization (maybe taking into account disk IO performance you could explain a good percent of that number).
Zones are the same concept, with the same benefit.
An added advantage Solaris zones have is flavoured zones: Make a Solaris 9 zone on a Solaris 10 host, a Linux zone on a Solaris 10 host and soon a Solaris 10 zone on an OpenSolaris host.
This has turned out much more stable, easy and simply effecient than our Vmware servers, which we now only have for Windows and other random OS's.
Amazing! Not running several additional copies of an operating system with all of the needless overhead involved is faster! Who would have guessed?
Sometimes a virtual machine is far more "solution" than you need. If you really want the same OS with lots of separated services and resource management... then run a single copy of the OS and implement some resource management. Jails are just one example - I find Solaris Containers to be much more elegant. Of course, then you have to be running Solaris...
I don't know what kind of crack I was on, but I suspect it was decaf.
XenServer is a great product and has many skilled developers. The "from Citrix" really gives me a queasy feeling. I know the products are solid and innovative, but so many people I hear out in the wild, scream and run from Citrix. It might be behind the reason Ubuntu and Red Hat are backing KVM for virtualization. Even to the point where RH bought Qumarant (KVM "owners").
So I would love to RTFA to make sure about this, but their high-performance web servers running on FreeBSD jails are down, so I can't...
But here's what I do know. FreeBSD hasn't been a supported OS on ESX Server until vSphere came out less than two weeks ago. That means that either:
A) They were running on the Hosted VMware Server product, whose performance is NOT that impressive (it is a Hosted Virtualization product, not a true Hypervisor)
or B) They were running the unsupported OS on ESX Server, which means there was no VMware Tools available. The drivers included in the Tools package vastly improve things like storage and network performance, which means no wonder their performance stunk.
But moreover, Jails (and other OS-virtualization schemes) are different tools entirely - comparing them to VMware is an apples-to-oranges comparison. Parallels Virtuozzo would be a much more apt comparison.
OS-Virtualization has some performance advantages, for sure. But do you want to run Windows and Linux on the same physical server? Sorry, no luck there, you're virtualizing the OS, not virtual machines. Do you want some of the features like live migration, high availability, and now features like Fault Tolerance? Those don't exist yet. I'm sure they will one day, but today they don't, or at least not with the same level of support that VMware has (or Citrix, Oracle or MS).
If you're a company that's trying to do web hosting, or run lots of very very similar systems that do the same, performance-centric task, then yes! OS Virtualization is for you! If you're like 95% of datacenters out there that have mixed workloads, mixed OS versions, and require deep features that are provided from a real system-level virtualization platform, use those.
Disclosure: I work for a VMware and Microsoft reseller, but I also run Parallels Virtuozzo in our lab, where it does an excellent job of OS-Virtualization on Itanium for multiple SQL servers...
"I want to get more into theory, because everything works in theory." -John Cash
I would expect that the BSD product is similar in design - basically chroot on steroids.
FreeBSD Jails are the same thing as Solais Zones, just on FreeBSD. Since FreeBSD is about evil daemons, they need an evil-sounding marketing name for it. More seriously, they probably just didn't want to bring on the wrath of lawyers for trademark infringement.
The I/O performance on the free "VMWare Server" product *sucks* - because it's running on top of a host OS, and not on the bare metal.
I'm not surprised that FreeBSD Jails had better performance. VMWare Server is great for test environments and such, but I wouldn't ever use it in production.
It's not at all near the same class of product as the VMWare Infrastructure stuff (ESX, ESXi, etc.)
VMWare offers VMWare ESXi as a free download, and I/O performance under it would have been orders of magnitude better.
However, it does have the drawback of requiring a Windows machine (or a Windows VM) to run the VMWare Infrastructure management client.
Well, in one case it does: when you're trying to run a different operating system simultaneously on the same machine. But in most "enterprise" scenarios, you just want to set up several isolated environments on the same machine, all running the same operating system. In that case, virtualization is absofuckinglutely insane.
Operating systems have been multi-user for a long, long time now. The original use case for Unix involved several users sharing a large box. Embedded in the unix design is 30 years of experience in allowing multiple users to share a machine --- so why throw that away and virtualize the whole operating system anyway?
Hypervisors have become more and more complex, and a plethora of APIs for virtualization-aware guests has appeared. We're reinventing the kernel-userland split, and for no good reason.
Technically, virtualizaiton is insane for a number of reasons:
In having to set aside memory for each guest, we're returning to the OS9 memory mangement model. Not only are we reinventing the wheel, but we're reinventing a square one covered in jelly.
FreeBSD's jails make a whole lot of sense. They allow several users to have their own userland while running under the same kenrel --- which vastly improves, well, pretty much everything. Linux's containers will eventually provide even better support.
I think they got /.'d.
Note: I was 13 when I wrote most of this. Take with several grains of salt.
If you are separating similar work loads like web apps and databases you are probably better off running them within the same os and database server and separating them via security as the poster realized.
However if you have a variety of services that do not do the same thing you can really benefit from separating them in virtual machines and have them share common hardware.
Virtualization also gives you some amazing fault tolerance options that are consistent across different OS and services that are much easier to manage than individual OS and service clustering options.
EA David Gardner -"... but the consumers have proven that actually what they want is fun."
I can see how running multiple processes would make Jail better for *BSD, but if you want to run an entirely different OS in a VM, it just isn't there. That said, I don't think VMware is as awesome as Xen, but Xen has trouble running certain OSes that VMware can run without issue (within reason), so I think they all have their strong areas of coverage.
"My immediate reaction is "WTF? What kind of moron doesn't make things 64-bit safe to begin with?" Linus
http://www.playingwithwire.com.nyud.net/2009/06/virtual-failure-yippiemove-switches-from-vmware-to-freebsd-jails/ Because otherwise it's hosed.
coding is life
I hate to link to my own comment, but it seems particularly relevant here.
"Here we go again" indeed. Hell, I wasn't around for the first go-round and I recognize it when I see it.
Parent poster admits to using iTanic - someone tie his hands to the tree while I call the Vet.
We will tranq him and put him in a zoo. This will mean big things for us, big things. Tours on broadway, my picture on the cover of Time....
That just gets you a cached version of a page with a link to the actual article. The actual article is more useful.
I work for $LARGE_US_BANK in the performance and capacity management group, and we constantly see the business side of the house buy servers that end up running at 10-15% utilization. Why? Lots of reasons - the vendor said so, they want "redundancy", they want "failover" and they want "to make sure there's enough". Given the load, if you lose 10-20% overhead due to VM, who cares ?
I want to delete my account but Slashdot doesn't allow it.
In your scenario, I'd recommend running DBAN
You ask that the OS be put into a virtual machine, would you not expect a big performance hit??? It is only common sense to anyone with any basic computer knowledge. You are adding another layer between the hardware and the program, what do you think would happen?
Fight Spammers!
Disclaimer: TFA was down (slashdotted) so I didn't bother to read it.
You're thinking too much about the OS and not enough about the apps, which are the entire reason why we have computers.
If applications were written well, and played nice with others, and had realistic sizing requirements/guidelines then I could see your point. However a lot of apps frankly are poorly written with this idea of 'I can do anything on my OS that I want to.' That leads to having to silo applications as well as oversized servers (just throw lots of hardware at my inefficient program).
Not to mention that in general there are certain workloads that are more appropriate for certain varying OSes, which can also vary depending on the IT staff supporting said applications. I don't want to have separate hardware for each different OS.
The underlying OS architecture can matter somewhat, but until developers write better apps it's not as big a deal as one might think would be my 2 cents.
Crappy programing beats virtualization overhead cost. (though I'd love if that wasn't the case!)
I've seen similar hideous slowdowns on ESX before for database workloads, and it's not VMware's fault.
This kind of slowdown is almost always because of badly written chatty applications that use the database one-row-at-a-time, instead of simply executing a query.
I once benchmarked a Microsoft reporting tool on bare metal compared to ESX, and it ran 3x slower on ESX. The fault was that it was reading a 10M row database one row at a time, and performing a table join in the client VB code instead of the server. I tried running the exact same query as a pure T-SQL join, and it was something like 1000x faster - except now the ESX box was only 5% slower instead of 3x slower.
The issue is that ESX has a small overhead to switching between VMs, and also a small overhead for estabilishing a TCP connection. The throughput is good, but it does add a few hundred microseconds of latency, all up. You get similar latency if your physical servers are in a datacenter environment and are seperated by a couple of a switches or a firewall. If you can't handle sub-millisecond latencies, it's time to revisit your application architecture!
"we added more database indexes..."
I have no experience with BSD Jails so I can't comment, but...
YES IF YOU ADD NEEDED INDEXES TO A SIGNIFICANTLY SIZED DATABASE A 10X PERFORMANCE INCREASE (OR EVEN FAR GREATER) IS NOT UNHEARD OF
As with everything, there is always a trade-off. I run OS/2 on my laptop inside of a virtual machine. The reason I do that is to be able to run Windows apps and not have to deal with some of the lack of OS/2 device drivers for some hardware.
Fight Spammers!
The difference between a good ratio and a bad ratio between vm's and hardware is often due to the need in some combinations to run every vm's IO state through the BIOS in order to complete an IO. That's a lot of interrupt state passing and subsequent process rescheduling. You get a multiplier when multiple vm's are all competing for the same trap completion and queues grow as a result. I know that Intel at least has a chip set that optimises this (they call the feature VT) . Ring 0 instruction completion has a huge multiplying effect on virtualisation efficiency. Right chip set = good, wrong chip set = sorta.
Do not mock my vision of impractical footwear
You might as well have said,
"Our earth moving business took a big jump in productivity when we switched from ice-cream scoops to backhoes".
I've worked for many of the Fortune 10 (DB, GS, CS, JP, MS, etc.) banks on the Windows server side and they are all going full steam ahead for virtualization with VMWare or Xen exactly because they have been buying way too much hardware for their backend applications for the last decade. The utilization on all of these servers hardly hits 5-10% and the vast majority of time these systems sit idle. The standard has always been rackmount servers with multiple processor/core systems with gigs of memory all sitting around being unused, mostly Compaq/HP systems with IBM xSeries servers and some Dells thrown in for good measure.
The reason that this over-capitization has been the requirement of the business line departments to choose only from four or five server models for their backend application. These standard configs are usually configured in rackmount spaces 1U, 2U, 3U, and 4U sizes and with nearly maxed out specs for each size and the size of the server determines the performance you get. You have a light web server you get a blade or a pizza box, you have a light backend application you get a 2U server with two processors or four cores even though you might have a single threaded app that was ported from MS-DOS a few years ago, you want something beefier you get the 4U server with 4 processors, 8 cores and 16 GB of RAM even though your application only runs two threads and allocates 512MB of ram maximum. I've monitored thousands of these servers through IBM Director, InsightMangager, and NetIQ for performance and 99% of the time these servers are at 2% processor and memory utilization and only once in a while for a short amount of time one or two of the cores get hit with a low-mid work load for processing and then go back to doing nothing. These were the Production servers.
Now consider the Development servers, where a bank has 500 servers dedicated for developer usage with the same specs as the production boxes and at any one time maybe a few of those servers get used for testing while the other few hundred sit around doing nothing while the developers get a new release ready for weeks at a time. The first systems to get virtualized were the development servers because they were so underutilized that it was unthinkable.
(Off topic: Funny and sad story from my days in 2007 at a top bank (CS) helping with VMWare virtualzation onto HP Blades and 3Par SAN storage for ~500 development servers. The 3Par hardware and firmware was in such a shitty state that it crashed the entire SAN frame multiple times crashing hundreds of development servers at the same time during heavy I/O load. The 3Par would play the blame game against other vendors accusing Brocade for faulty SAN fibre switches, Emulex for faulty hardware and drivers, HP Blade and IBM Blade for faulty server, and the Windows admins for incompetence. Only to find that it was their SAN interface firmware causing the crashes.)
VMWare solves the problem of running commercial backend applications on Windows servers since each application is so specific due to the requirements of the OS version, service pack, hotfixes, patches, configurations that the standard is always one-server to one-application and nobody every wanted to mix them because any issue would always be blamed on the other vendor's application on the server. There were always talks from management about providing capacity to businesses that is scalable instead of providing them with single servers with a single OS. That was five years ago and people wanted to use Windows Capacity Management features but they were a joke since they were based on per-process usage quotas and the of course nobody wanted to mix two different apps on the same box so those talks went nowhere.
That is until VMWare showed up and showed a real way to isolate each OS instance from another while it also allowed us to configure capacity requirements on each instance while letting us package all those shitty single threaded backend applications each running on a separate server onto on
For something similar for Linux, take a look at Linux-Vserver. I've been using it for a while, it's pretty good. A while ago, I wrote a howto showing how to install Linux-Vserver on Debian Etch, most of it would still apply today :)
Chroot and jails? Hypervisors? Sounds like what we really need is a microkernel OS with decent security features, like Access Control Lists.
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
It's just in jail.
Theres a nice little article here (basic reg. required) contrasting VMware and Citrix XenServer, where the end user was forced to abandon VMware (their default choice) after suffering performance problems and after 6 months of back and forth with tech support and engineering at the vendor. In the end XenServer delivered 2x the real world performance on identical hardware with a default install. Not all workloads are equally well virtualized! N.
iCore Virtual Accounts Container based virtualization for Windows.
Shai Schticks:"You don't make peace with friends, you make peace with enemies"
Sounds to me like they heard about some potential performance problem, and without understanding that problem or trying to compare performance of various solutions, they decided NFS was the solution for that performance problem.
Did they ever try using the virtual block devices provided by the virtualization rather than the NFS solution? My guess is that NFS was actually the reason for their performance problems.
Do you care about the security of your wireless mouse?
I've run both on comparable hardware. Hyper-V was way, way better, performance-wise if you had >3 or 4 running VMs simply because it didn't have the extra scheduling overhead. In either case though, if your disks are slow the VMs will be too.
As much as I like and admire SQLite, I'm not sure if it's the right tool for the job. Something like PostgreSQL, with proper MVCC and nice multicore scaling, would probably have worked a lot better in the first place.
Classical Liberalism: All your base are belong to you.
OpenVZ is often overlooked for this kind of workload. _Kind_ of similar to a jail environment. We use it for a lot of "light" servers - project websites, that kind of thing but it will handle a lot more than that. http://wiki.openvz.org/Main_Page . Easy to install, really easy to configure & manage.
Thanks very much for your reply. :-) I will give a go to Hyper-V and see how it works out, as I plan to run 5 concurrent VMs.
Disks should be fine - they're just desktop grade 7,200 SATAs but I don't expect the VMs to do much more than idle for 90% of the day.
They actually used VMware Server 1 for a production site. No, seriously they really did. That's what's being compared here. Is FreeBSD even a supported guest?
FreeBSD users are either a well organised trolling group or ridiculously bad at advocacy. Surely this was designed to cause outrage amongst those who know what they're doing? I just can't believe it's accidental.
How does your OS do when it isn't racing a crippled child?
'Jail' is such a terrible metaphor to choose for a product. I want a happy metaphor like 'sandbox', not something redolent of brutality, despair and iron sorrows.
There is no reason to switch to BSD just to get this functionality; Linux has plenty of choices for isolating software, allowing all sorts of tradeoffs between performance and isolation.
If you want something more lightweight than VMware/VirtualBox, you have plenty of choices on Linux: KVM, AppArmor, vserver, OpenVZ, LSM, SELinux, or even the BSD jails patch.
Why would anyone use VMware Server in a production environment? It is not meant to be a heavy-duty hypervisor as it runs on top of another OS.
ESX 3.5 and 4.0 are meant to run mission critical applications.
Anandtech ran up 8 VMs on top several server CPUs, including the new six-core. Those 8 VMs include a heavy Oracle OLTP database (2x) and 100 GB large SQL Server database:
ESX 3.5 and 4.0 benchmarks
VMware ESX is about running several instances of Windows and Linux on top of the same machine and manage them easily. FreeBSD Jails are of course a better solution if you just want lots and lots of small machines and the management overhead is zero. Jails are what is called "Container based virtualization".
Container based virtualization
Why would an MTA have a GUI? That seems foolish to me.
There may be a need to have a GUI for the config files, but many would just use vi.
ESXi hasn't been free even for a year. I was at the announcement and had to wait about a week before it became available. That was last July/August, I believe. ESXi wouldn't load on any of my servers. It didn't recognize our disk controllers. Seem if you don't use HP/Dell/IBM servers, you definitely need a SAN. Don't get me wrong, iSCSI Rocks, but we didn't have a SAN at the time.
You wasted your time. I'm a DBA with a programming background. Virtualization is not suitable for mid- to large- database environments. Database software is designed to handle all IO and memory issues internally. The virtualization software just gets in the way.
They compared it to Server v1? That's an unfair comparison. When you stack a hypervisor on top of another OS, yeah, there's going to be overhead. Probably too much overhead for a production server. Compare it to ESX3.5 or even ESX3i, then we'll talk.
You forgot option 3) Card carrying member of the KKK. Most likely the Grand Dragon.
You might be surprised. I have had 6 VMs running on a Hyper-V server with 8GB of RAM; the disks were 500G SATA 7200rpm on the Intel ICH9R RAID controller, RAID 10 (4 disks). Performance is great, even when snapshotting and so forth, or running 8 VMs at full memory commit.
I have another Hyper-V box with 8GB of RAM and the nVidia RAID controller; running 2 VMs on a RAID 1 set was atrocious.
Ahh. More useful info thanks. I would have been using an nVidia (fake) RAID controller on RAID-1, too.
:-P
I think I will give it a go and see what happens but thanks for your useful info.
I just wish I hadn't started my initial comment with a silly joke that got me modded redundant so that more people might have seen my comment and provided useful feedback, like you did.
In their place I would checkout the Solaris equivalent of jails. Solaris Zones look really good.
Jails aren't the low end, even. UNIX is a multiuser environment, and simply running multiple instances of the server in separate directory trees provides all the isolation you need. If that's not enough, you can use chroot, then jails or the various equivalents on Linux, then lightweight VMs, and full VMs, blades, separate servers...
It's a continuum. The best solution depends on the overhead you can afford to lose and how tight the compartmentalization has to be. For a lot of problems I've seen people using VMs to solve, even jails are kind of heavyweight.
Windows, of course, has a different application model and it's harder to use some of these intermediate solutions... but you should still be able to do things like run multiple Apache servers bound to different addresses in different directory trees and user IDs, instead of taking on the overhead of a VM.
I wrote: "simply running multiple instances of the server in separate directory trees provides all the isolation you need".
Of course, I meant: "simply running multiple instances of the server in separate directory trees often provides all the isolation you need".
Note to self: preview your posts, idiot.
They were running thier outfit on VMWare Server - as in the free-runs-on/in-a-desktop version. So basically thay benchmarked a virtual machine runnning on top of a full blown OS running on physical hardware. Then they switched to running a virtualised environment on physical hardware. I am amazed that they ony got a 10 fold increase! Seriously, Try ESXi, the free hypervisor from VMWare and run the benchmarks again. The author really should do more research before slating vmware.
Quidquid latine dictum sit, altum sonatur.
I learned this myself, and just don't do it. VMWare is awesome for CPU- or memory-intensive tasks, but for IO-intensive stuff like databases it's horrible. At least that's my experience, with ESX 3.5 and an iSCSI SAN.
rooooar
some things may not be a good candidate for virtualization. ESPECIALLY in a virtualization client that loads ON TOP OF AN OS.
i'm wondering where they got their performance expectations from. FTFA, they didn't buy the vmware tools that would give them the performance and capabilities they desired.
so, to sum it up, they virtualized an application or applications they possibly shouldn't have. they didn't pay for the set of tools that would have given them the best shot of acheiving their virtualization goals, and instead used what was quite possibly the worst tool for the job. now they're complaining about it, and pointing out how (apparently) just running a single OS on the servers, with multiple application instances.
what a waste of time. this is not news. don't use wireload or yippiemove. they, according to their own words in TFA, don't have a clue what they're doing.
not only is time travel possible, it's irrelevant.
This says it all in one sentence. VMWare Server (as opposed to ESX or ESXi) is a dog. It barely ran with two WinXP installs and one RHEL5 on a 4-core server with 8 GB of RAM. Life was a little better after upgrading to VMWare Server 2, but running it on top of an OS instead of using a hypervisor kills performance. I switched the same box over to ESXi 3.5 and all three installs scream. Additionally, the memory page deduplication driver means that I have capacity for probably another five to seven lightly loaded systems without worrying about the occasional load spike.
As far as some jobs just not being well suited to virtualization, that's an obvious truth. However, most work in that class is CPU bound compute work. If you are not buying storage on a shoestring budget (i.e. you can run VMFS3 on a FC or trunked Gb SAN rather than fiddle with NFS) then you should have reasonable IO performance. The OP doesn't give any detail on storage performance (either in bandwidth or IOPS) so there's no way to tell what it requires. Having looked at his YippieMove service web page there doesn't seem to be a lot that is required. It seems like they picked the low performance, free VMWare tool and when it didn't work did something completely different. This says less about VMWare than it does about the OP's design/testing process.
While I agree with you on FreeBSD being a fine (if not *the* finest) server OS,
it really irks me to see the "not intended for desktop use" myth being perpetuated.
The desktop *is* one of the explict targets for FreeBSD:
"With over 20,000 ported libraries and applications, FreeBSD supports applications for desktop, server, appliance...."
http://www.freebsd.org/about.html
"*BSD makes a great server. It also makes a great desktop....
*BSD has access to the same desktop tools (KDE, GNOME, Firefox, windowmanagers) as Linux.
And ``office'' applications such as OpenOffice suite work under *BSD too."
http://www.freebsd.org/advocacy/myths.html#server
FreeBSD 7 in fact, among other things, had *major* wireless rework done,
a feature almost exclusive to desktop use.
The aggressive demeanor of your post is shameful and in contrast with
the overall spirit of the *BSD community.
IBM has, after all, been working on virtualisation for nearly 40 years. (for the GP's benefit)
Okay, I have been through this at work several times recently. There are two major slow-downs in the default (but reasonably bullet-proof) VMWare machines running on a Linux _host_.
1) If you are doing NAT attachment _don't_ use the vmware NAT daemon. It pulls each packet into userspace before deciding how to forward/nat it. So don't use the default nat device (e.g. vmnet8). Add a new custom made "host only" adapter (e.g. vmnet9-or-more) by adding another adapter, and then use regular firewalling (ip_forward = 1 and iptables rules) so that the packets just pass through the Linux kernel and netfilters once. (you can use vmnet1 in a pinch but blarg! 8-)
1a) If you want/need to use the default nat engine (e.g. vmnet8) then put the nat daemon into a real-time scheduling group with "chrt --rr --pid 22 $(pgrep vmnet-natd)". Not quite a good as staying in the kernel all the way to your physical media.
1b) if you do item one, don't use the vmware-dhcpd, configure your regular dhcpd/dhcpd3 etc daemon because it will more easily integrate with your system as a whole.
(in other words, vmware-dhcpd is not magic, and vmware-natd is _super_ expensive)
2) VMWare makes a /path/to/your/machine/machine_name.vmem file, which is a memory mapped file that represents the RAM in the guest. This is like having the whole vm living forever in your swap space. It's great there if you want to take a lot of snapshots and want to be more restart/crash/sleep safe. It _sucks_ for performance. If you use "mainmem.usenamedfile=FALSE" in your .vmx files. (you have to edit the files by hand). This will move the .vmem file into your temp directory and unlink it so it's anonymous and self-deleting. It slows down snapshots but...
2a) Make _SURE_ your /tmp file system is a mounted tmpfs with a size=whatever mount option that will let the tmpfs grow to at least 10% larger than the (sum of the) memory size of (all of the) vritual machine(s) you are going to run at once. This will cause the "backing" of the virtual machine RAM to be actual RAM and you will get rational machine RAM speed.
2b) If you want/need to, there is a tmpDirectory=/wherever diretive to say where those files go. It gangswith the usenamedfile=FLASE and you can set up dedicated tmpfs files to back the machines specially/separately.
2c) If you want/need the backing or have a "better" drive you want to use with real backing, you can use the above in variations to move this performance limiter onto different spindle than your .vmd (virtual disk files).
3) No matter what, your virtual memory file counts against your overcommit_ratio (/proc/sys/vm/overcommit_ratio) compared to your ram. It defaults at 50% for _all_ the accounted facilities system-wide. If you have 4Gig RAM and try to run a 3G vm while leaving your overcommit_ratio at 50, you will suffer some unintended consequences in terms of paging/swapping pressure. Ajust your ratio to like 75 or 80 percent if your total VM memory size is 60 to 65 percent of real ram. _DONT_ set this nubmer to more than 85% unless you have experimented with the system stability at higher numbers. It can be _quite_ surprising.
Anyway, that's the three things (in many parts) you need to know to make VMWare work its best on your linux host OS. It doesn't matter what the Guest OS is, always consider the above.
Disclaimer: I don't work for VMWare etc, this is all practical knowledge and trial-n-error gained knowledge. I offer no warranty, but it will work...
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
I covered this in more detail in a top level post below. The actual performance problems for most vmWare machines (typically) is not the virtual disk. The way vm machine memory is backed by a mapped regular file, combined with the way large-memory VMs interact with the overcommit_ratio on a Linux host OS (e.g. running vmware under linux, regardless of what the vm is running internally) produce almost all of the slowdowns.
The way VMWare does NAT through a userspace daemon isn't the best thing on the planet either.
(read the how-to post below for the remedies instead of looking here for re-pasted text, I'm not _that_ much of a karma whore 8-)
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
If you are running a windows guest, regardless of whether you are running a Linux or Windows host you should:
1) _Definitely_ leave paging turned on in the windows guest.
2) If you have multiple physical disk devices, make a "D:" drive as a separate virtual disk where the virtual disk image files are on a different physical spindle in the host os. Now inside the windows guest delete the page file from C: and create one on the new/separate D: drive (who's files are on the "the other spindle" in the host os).
3) If you _NEVER_ want to "suspend" the windows guest (you can still suspend the host separately) you can do the following advanced trick...: [NOTE: this may be worth doing even if you don't have a separate spindle for D:]
3a) Create a virtual disk to mount as D:
3b) Start windows guest OS.
3c) Log in as an administrator and Format the D: drive (with all that entails); FAT is fine and possibly optimal as the file system type.
3d) Go into the windows VM settings and delete the windows pagefile from C and make a large fixed or system-managed page file on D:
3e) Windows will tell you that you have to reboot for this to take effect, but _DONT_, shut down windows instead.
3f) Go into the settings for the virtual disk that you just made the D: drive and make it "non-persistent".
You now have a eternally empty "D:" drive, its only contents is the freshly formatted disk image. Every time windows starts it will know that there _should_ be a page file on D: and it will create that page file anew on an "empty" drive, so it will always be defragmented etc and you can move the windows vm around more easily (like it will zip/tar up smaller) since the random contents of the pagefile will always be discarded on shut down. D: is also now the _ultimate_ self cleaning /tmp directory for windows. If you move your TEMP and TMP environment variables to point to D:\ (or if you make other directories on D: before step 3e,) they will always be empty on reboot, including whatever cache files you put there etc.
As an aside, all windows instances everywhere should have "pagedefrag" installed on them (search microsoft.com for this application) whether they be Host or Guest OS instances.
Also, not to plug yet-another product I have no interest in besides finding it useful, jkDefrag is the best and works particularly well after pagedefrag and before a vmware shrink operation.
Innocent people shouldn't be forced to pay for inferior software development.
--"Code Complete" Microsoft Press
So BSD is still alive huh?
The new buzzword of Virtualization has reached all corners of the US Government IT realm. Blinded by the marketing hype of "consolidation" and "power savings" agencies of the three-letter variety are falling over themselves awarding contracts to "virtualize" the infrastucture. Cross-domain security be damned, VMWare and Microsoft SoftGrid Hyper-v Softricity Whatevers will solve all their problems and help us go green at the very same time, for every application, in every environment, for no reason.
Both zones on Solaris 10 (+Trusted Extensions) and VMware are rating MLS-capable and can be used for cross-domain security. Solaris can also do CIPSO tagging on the network as well AFAIK.
If you want to take it for a spin, Solaris 10 (and TX) run under VMware just fine, and so you can play with MLS on your own system.