Hello! I've heard about the trend of virtualization for a while from my friend in the IT field, but I've only now begun considering ways that I could implement it to benefit my situation. One of the great features, to my understanding, of virtualization, is a fuller utlization of resources. Computers have always had a difficult time of parsing their jobs to different cores, or different processors, so, if you were to divide up the processors of your computer between different tasks, you could make much more effecient use of your processing power. Well, that's how it seems that it would work in my head. So, here's my first question:
Okay, when shopping for a computer, spending extra on a faster single processor will net greater end result that spending extra on two slower processors. But in this scenario, let's say someone decided to splurge and get the extra speed and extra processors, and ended up with a top of the line 2.93Ghz 8 Core Nehalem. That computer will be faster than a quad core 2.93Ghz, but definitely not faster than two quad core 2.93s running side by side. So, if one was to divide that 8-core computer up into two OS X Server virtual machines, and run fully processor intensive tasks on each of those VMs, would it equal the power of the two separate quad core machines? (minus of course a hopefully reasonable performance drop from the processing used by the original operating system and vmware application) Furthermore, would making four VMs give even greater productivity increases due to further spreading of processing? It makes a lot of sense to me that it would. Am I crazy, or am I just starting to realize the possibilities of virtual machines?
Okay, if that's true, then that opens up a lot of doors. One very powerful computer and four old computers could become four pretty powerful computers with a cumulative processing power much greater than that of the host machine. Expendature on multiple machines could be greatly lowered, and upgrade costs would be consolidated. So, if that works, my next question would be how remote client machines could access these virtual machines so users can give commands to them. The obvious answer would be VNC, and I have been experimenting with this a bit. So far though, I'm unable to find a zero-latency solution. I have a 4Gb fibre network, so I'm not worried about bandwidth saturation. As of yet, no VNC applications that I've found send more than 1 MBps. JollysFastVNC works pretty well, and is the best I've found, but still not whating I'm hoping for in a sitatuion with no bandwidth limitations. I understand that these applications are generally geared toward WAN access, but is there a remote control option suitable for zero-latency LAN situations?
My next concern, assuming that the distribution of processing in VMWare Fusion works the way that is should, is the distribution of other resources. One particular area that I'm curious about, and hope to test soon, is storage. Hard drive speed is commonly a bottleneck in computers, and purchasing RAID cards, enclosures, and fast drives to remedy this is a big expendature, especially if it has to be done for every system in your environment. Well, if all of your computers, or four of your computers, were virtual machines inside of another computer, then the expendature on setting up a fast RAID volume could be much lower, hypothetically. This is the way that I imagine it, please tell me if it works like this:
Your host machine is running it's OS on it's internal drives, but it's using an external SAS RAID card to connect to a much faster array. Let's say assume this RAID array has a read and write speed around 800 MBps. This is the array used to host your virtual machine operating systems. If all four of the virtual machines are being accessed for a lot of hard drive access simultaneously, will each of them have access to 200 MBps, or will the array be bogged down by the multiple requests, causing slower access speeds for all users? Furthermore, if all four virtual machines are sitting idle, using 5% of the drive speed each, and suddenly one gets a command for a lot of hard drive access, will it be able to use the remaining 85%? If so, this makes virtualization a very attractive solution for providing fast hard drive access to multiple computers.
Am I mistaken in thinking that RAM is assigned to a virtual machine instead of being shared the way that a hard drive would be? I've seen my friend set up a virtual machine before, and I remember him choosing an amount of his system RAM to dedicate to that computer. If that's the case, then one would probably need to max out their RAM for the host machine, but it would be worth it to not have to purchase three more equally powerful computers.
The last piece of hardware that I have a question about, and the one that I'm most worried about would be the video card. The video card would have to be shared by all virtual machines, right? I'm unsure if video card processors are multi-core these days, so I don't know if they would benefit in productivity by being fed manually threaded tasks. If they're not, would the video card get bogged down if it was receiving graphic intensive tasks such as phot editing on two or more virtual machines? If so, could installing multiple video cards remedy this? Would these video cards need to be assigned separately to different virtual machines, or are GPUs more effective at threading tasks than mult-core processors?
Alright, I'm sorry for all of the lengthy questions, but I'm very excited by the possibilities created by VMWare. Any replies at all would be very welcome. Thanks a bunch!
-Ryan