Tuesday, December 22, 2009

Hypervisor virtualization basics a visual representation

For all of you that want a place to point folks to describe the basics of virtualization, I have put together a few videos to describe the hypervisor, CPU, and network concepts in a visual way.

The intent is to give a quick amount of conceptual information to those folks that suddenly are dealing with VMs, but might not have the experience to fully understand what they are looking at.

Hypervisor Basics:

The basics of what a full (type 1) hypervisor is.


The hypervisor pool of resources – the CPU:

The basics of CPU scheduling. It is far more complex than this and there are many methods.  It gets really messy when hyper-threading is introduced.

More CPU scheduling details are over at the Xen.org site (the Xen folks are more open in discussing the gritty details of all this):  http://wiki.xen.org/xenwiki/CreditScheduler

The hypervisor pool of resource – the network:

This is about virtual networks / virtual switches / bridging.  The concepts, as each vendor implementation offers different features.


Marc Sherman said...

All three are great but the networking video is the best (for me) since it is the least I know about.

Thank you for making these!


BrianEh said...

I am open to additional ideas - trying to do these in a visual way takes a bit of creativity and there are some concepts that I have not come up with a good way to represent.

Karthikvm said...

Really very useful for the beginners.
The visual demonstration is very creative way to make the concepts clear.

Thanks Karthik

Anonymous said...

PLEEEEASE!!! would you make one like these for DISKS :))
and tks really a lot! congratulations by your voluntary efforts for 'HV education' ;))

BrianEh said...

I am still thinking about the disk thing. I have an idea but I want to come up with things that are useful. Any particular comments about what types of disk concepts are confusing are welcome.

nutty said...

Thanks! This was very usefull to me.

Anonymous said...

Very good and innovative. Thanks for the time
- Harish

Peter said...

Thanks for the visual examples, nice and clear.

We have an issue with a single-threaded application running 10x slower on a virtual machine as compared to a physical, but we don't know why. The perl app uses mosek libraries for intense math calculations. We're wondering if CPU scheduling is causing us grief. Although we've set affinity to get a dedicated core, could it be that the load (peaking at over 90%) is actually being shared? Any ideas?

BrianEh said...

Just from reading your description of your application I would not expect it to virtualize well.

In my mind, you have an example of a perfect application to leave on bare metal. It will always shine on bare metal, it will always be starved (to some degree) as a VM.

Affinity simply binds a VM to a processor. If the VM takes 100% of the CPU there is never a break in the threading and the VM usually does not drift to another processor. The net effect in this case is that affinity has little effect on performance.

Reserve and weight are the settings that give the vCPU more time on the physical processor.

But, (this is a big point) if your hypervisor is not loaded with many VMs these settings have very little effect. These settings are designed for tuning individual VMs when the entire system is under load - a constant load of many VMs.

Anonymous said...

I was wondering where would I find the networking video Marc Sherman has referred. Is there a link to it? Thanks.

BrianEh said...

It is in the post - "networking basics"

Anonymous said...

Thank you. Your videos are clear and informative. It is people like you that make the Internet a great place.

Anonymous said...

Thanks for your work. Very Useful Videos.

Now I will see wooden cubes when working with virtual machines ;)