Virtual Machines What Why How Powerpoint What is

  • Slides: 24
Download presentation
Virtual Machines What Why How Powerpoint?

Virtual Machines What Why How Powerpoint?

What is a Virtual Machine? A Piece of software that emulates hardware. Might emulate

What is a Virtual Machine? A Piece of software that emulates hardware. Might emulate the I/O devices Might emulate the CPU Might be very high fidelity emulation Might cheat

Different from an O. S. An OS has system calls. To write to the

Different from an O. S. An OS has system calls. To write to the serial port, you call write(. . . ) A VM fakes hardware. To write to the serial port, you copy bytes and trigger interrupts.

Operating Systems and Virtual Machines Operating Systems can run on real hardware. Operating Systems

Operating Systems and Virtual Machines Operating Systems can run on real hardware. Operating Systems can run on fake hardware (virtual hardware). Lots of Oss can run on the same real machine. If the VM is good, the OS cannot tell. Timing issues Performance (good or bad)

Uses of a Virtual Machine Pretend to be a non-existent machine (prototyping) Multitask lots

Uses of a Virtual Machine Pretend to be a non-existent machine (prototyping) Multitask lots of virtual machines on one physical machine (web servers). Emulate any machine or network Atari Parallels Vmware's Teams

Examples of Virtual Machines VMware Parallels Has many Linux/Windows boxes running on one. Has

Examples of Virtual Machines VMware Parallels Has many Linux/Windows boxes running on one. Has a Windows OS running under Mac. OS VM Has many applications running on a mainframe.

How to Make a Virtual Machine Take over the CPU into supervisor mode. Mark

How to Make a Virtual Machine Take over the CPU into supervisor mode. Mark a bunch of memory regions protected Interrupt table, devices, page tables Start running the OS code On the real CPU in non-supervisor mode On a fake CPU if need be CPU is different CPU is non-virtualizeable

What if it's the Wrong CPU You can always fake the CPU Read the

What if it's the Wrong CPU You can always fake the CPU Read the instruction Do what it would do Repeat Suffer a 5 x to 20 x performance hit

Reading/Writing to the Serial Port Writing OS writes to a device register VM gets

Reading/Writing to the Serial Port Writing OS writes to a device register VM gets an interrupt, fakes the write Reading VM gets an interrupt. VM fakes an interrupt to the OS.

Serial Port (Continued) Efficiency Stinks Virtualizability Can have more serial ports than exist Can

Serial Port (Continued) Efficiency Stinks Virtualizability Can have more serial ports than exist Can redirect serial ports to anything else (USB? )

Virtualizing Video Framebuffer Frame Buffer Mark every page is r/o When OS writes, VM

Virtualizing Video Framebuffer Frame Buffer Mark every page is r/o When OS writes, VM gets an interrupt and writes HUGE slowdown

Virtualizing a Modern Video Card OS makes a command list OS writes to a

Virtualizing a Modern Video Card OS makes a command list OS writes to a register on the video card to trigger the graphics processor unit. VM gets an interrupt VM rewrites the command list if needed VM sends the (new) commands to the video card.

Virtualizing Graphics With a Fake Device Driver Make a device driver that does not

Virtualizing Graphics With a Fake Device Driver Make a device driver that does not actually drive a device, but instead communicates with the VM. Have the VM receive these messages and execute the instructions. SPEED!!!!

Virtualizing RAM OS has a page table stored in ram it thinks it owns.

Virtualizing RAM OS has a page table stored in ram it thinks it owns. VM has really marked that as read-only. When the OS makes a change, the VM gets an interrupt and reflects the change to the real page table.

RAM in a Virtual Machine No sharing between guess OSs. No way for an

RAM in a Virtual Machine No sharing between guess OSs. No way for an OS to make RAM as unneeded. NO way to change the allocation of RAM between Vms on the fly.

CPU in a Virtual Machine Each guest OS gets the CPU a fixed amount

CPU in a Virtual Machine Each guest OS gets the CPU a fixed amount If a guest OS is idle. . . CPU is wasted

File Systems in a Virtual Machine Each guest OS has it's own fake disk

File Systems in a Virtual Machine Each guest OS has it's own fake disk drive. Each fake disk drive is typically a file on the host. Yes, this is lots of disk space.

Cheating in a VM It's called a performance enhancement : -) Since Window's data

Cheating in a VM It's called a performance enhancement : -) Since Window's data structures are well known, and it's possible to write a windows device driver. . . Vmware can share identical RAM pages Vmware can harvest free RAM Vmware can harvest idle CPU Vmware has a vmware file system

Xen Basic Idea: Don't emulate a real machine, that's too hard and slow. Edit

Xen Basic Idea: Don't emulate a real machine, that's too hard and slow. Edit each guest OS to communicate with the host (paravirtualization). Implications better performance, easier implementation Can no longer run unmodified Oss

Xen (again) Xen has code inside Windows (non-published) and Linux. Xen (starting at 3.

Xen (again) Xen has code inside Windows (non-published) and Linux. Xen (starting at 3. 0) can also do straight virtualization for a few Oss (like Windows). Best? ? ? of both worlds. Also supports live migration Only a 300 ms delay

Performance If you need to fake the CPU If your application is I/O intensive

Performance If you need to fake the CPU If your application is I/O intensive performance can suffer If you application is CPU intensive performance is like 5 -10% of real time. performance is better If you are emulating an Atari 2600(tm) Your performance is better than real time.

Performance (again) Dr. Dobbs says CPU performance hit is < 10% Ram hit is

Performance (again) Dr. Dobbs says CPU performance hit is < 10% Ram hit is “costs ~200 M” http: //www. ddj. com/hpc-high-performancecomputing/199000664; jsessionid=BSCMYJRQRF 5 VSQSNDLRSKHSCJUNN 2 JVN? pgno=3

Crazy Nested VM-itude Can you run a VM inside a VM? Should you run

Crazy Nested VM-itude Can you run a VM inside a VM? Should you run a VM inside a VM depends maybe not How deep can you go typically, either zero or infinity

Other Uses of VMs Since any guest can be a file. . . Ship

Other Uses of VMs Since any guest can be a file. . . Ship it across country Pause and restart Clone thousands Debug