Lecture 26 Virtual Machine Monitors Virtual Machines Goal

  • Slides: 36
Download presentation
Lecture 26 Virtual Machine Monitors

Lecture 26 Virtual Machine Monitors

Virtual Machines • Goal: run an guest OS over an host OS • Who

Virtual Machines • Goal: run an guest OS over an host OS • Who has done this? • Why might it be useful? • Examples: Vmware, Virtual. Box, Xen, KVM, Azure, Parallels Desktop, etc.

Motivation • Functionality: want Linux programs on Mac OS X • Consolidation: avoid light

Motivation • Functionality: want Linux programs on Mac OS X • Consolidation: avoid light utilization • Cloud computing: fast scalability • Testing/Development: for example, xinu

Needs • An OS expects to run on raw hardware. • Need to give

Needs • An OS expects to run on raw hardware. • Need to give illusion to OS of private ownership of H/W. • Didn’t we already virtualize H/W? How is this different?

Process Virtualization • We have done two things: • given illusion of private resources

Process Virtualization • We have done two things: • given illusion of private resources • provided more friendly interface • The interface (what processes see/use): • • virtual memory most instructions most registers syscalls, files, etc

Machine Virtualization • We have done two things: • given illusion of private resources

Machine Virtualization • We have done two things: • given illusion of private resources • provided more friendly interface • The interface (what guest OS’s see/use): • • “physical” memory all instructions (even dangerous ones!) all registers “physical” devices, interrupts, disks, etc.

System Models P 1 P 2 P 3 Linux Hardware VMM Hardware

System Models P 1 P 2 P 3 Linux Hardware VMM Hardware

P 1 P 2 P 3 Linux OS X VMM Hardware Windows

P 1 P 2 P 3 Linux OS X VMM Hardware Windows

P 1 P 2 P 3 Linux OS X Hypervisor Hardware Windows

P 1 P 2 P 3 Linux OS X Hypervisor Hardware Windows

Architecture of Disco

Architecture of Disco

Components to be Virtualized • CPU • Memory • I/O

Components to be Virtualized • CPU • Memory • I/O

Approach 1 • Write a simulator. • For example: • big array for “physical”

Approach 1 • Write a simulator. • For example: • big array for “physical” memory • run over OS instructions, call function for each • Problems? • Performance • Solution? • Limited Direct Execution!

Approach 2: Limited Direct Execution • Hypervisor runs in kernel mode and can do

Approach 2: Limited Direct Execution • Hypervisor runs in kernel mode and can do anything. • Processes and guest OS’s run in user mode when they don’t need to do anything privileged. • Machine switch • save the entire machine state (including registers, PC, and any privileged hardware state) • restore the machine state of the to-be-run VM • jump to the PC of the to-be-run VM

Process Privilege • Process: how do processes correctly do privileged ops?

Process Privilege • Process: how do processes correctly do privileged ops?

Executing a System Call

Executing a System Call

System Call Flow Without Virtualization

System Call Flow Without Virtualization

System Call Flow with Virtualization • Must also have the VMM in the middle…

System Call Flow with Virtualization • Must also have the VMM in the middle… Process Guest OS system call: trap to OS OS trap handler: decode trap, exec syscall return-from-trap VMM process trapped: call os Trap handler (at reduced privilege) OS tried return-from-trap: do real return-from-trap resume execution: (@PC after trap)

Where is the Guest OS Handler • Without virtualization • OS initialize trap table

Where is the Guest OS Handler • Without virtualization • OS initialize trap table • With virtualization • When OS tries to initialize trap table, it traps into the VMM

Trap Table Initialization with Virtualization • Must also have the VMM in the middle…

Trap Table Initialization with Virtualization • Must also have the VMM in the middle… VMM H/W Guest OS Initialize trap table Remember address Of various handlers Switch to guest User mode Kernel mode Store guest trap Table address Initialize trap table

System Call Flow with Virtualization Process Guest OS system call: trap to OS OS

System Call Flow with Virtualization Process Guest OS system call: trap to OS OS trap handler: decode trap, exec syscall return-from-trap VMM process trapped: call os Trap handler (at reduced privilege) OS tried return-from-trap: do real return-from-trap resume execution: (@PC after trap) • There is overhead • Disco takes advantage of supervisor mode on MIPS

Timer Interrupt Handlers • VMM Trap Handler! • Guest OS Trap Handler! tick() {

Timer Interrupt Handlers • VMM Trap Handler! • Guest OS Trap Handler! tick() { if (…) { switch OS; } else { call OS tick; } } tick() { maybe switch process; return-from-trap; }

Timer Interrupt Example P 1 P 2 P 3 Linux OS X VMM Windows

Timer Interrupt Example P 1 P 2 P 3 Linux OS X VMM Windows

Another Example P 1 P 2 P 3 Linux OS X Windows VMM •

Another Example P 1 P 2 P 3 Linux OS X Windows VMM • P 1 calls lidt! • Linux kills P 1. Privileged? • Linux tries to return-from-trap to P 2. Privileged?

Components to be Virtualized • CPU • Memory • I/O

Components to be Virtualized • CPU • Memory • I/O

How to get more pages? • Process: asks politely • OS: just uses it!

How to get more pages? • Process: asks politely • OS: just uses it! • VMM needs to intercept such usage. How? (assume software-managed TLB)

 • Strategy: store VPN => MFN mapping in TLB. • OS tries to

• Strategy: store VPN => MFN mapping in TLB. • OS tries to insert VPN => PFN to TLB • VMM intercepts it, looks up in its PT, inserts VPN => MFN • Examples… • Timeline…

Process Guest OS Mem load TLB miss: trap Extract VPN from VA. Do page

Process Guest OS Mem load TLB miss: trap Extract VPN from VA. Do page table lookup. Get PFN, update TLB Return from trap VMM Call OS TLB handler (reducing privilege) Unprivileged code trying to update TLB! Tried to install VPN-to-PFN. Insert VPN-to-MFN. Jump back to OS. Return from trap. Resume execution: (@PC of instruction)

A VMM-level “Software TLB” • TLB misses become more expensive on a virtualized system

A VMM-level “Software TLB” • TLB misses become more expensive on a virtualized system • Extra steps to handle TLB miss • TLB is shared • TLB is flushed on machine switch • A VMM-level “software TLB” • Records every virtual-to-physical mapping that it sees the OS try to install • Check whether it has the desired virtual-to-machine mapping

Information Gap • OS’s were not built to run on top of a VMM.

Information Gap • OS’s were not built to run on top of a VMM. (less true than it used to be) • H/W interface does not give VMM enough info about guest OS. • In particular, is the OS using all its resources? • How does the VMM know to give CPU to another OS? • How does the VMM know to give pages to another OS? • How does OS know page is already zeroed? • Para-virtualization

Summary • VM’s have overheads. • New opportunities for sharing often outweigh the disadvantages,

Summary • VM’s have overheads. • New opportunities for sharing often outweigh the disadvantages, as utilization is improved.

TLB and Virtual Machine Monitor TLB Flows: We have an application accessing memory running

TLB and Virtual Machine Monitor TLB Flows: We have an application accessing memory running on an OS with a software managed TLB. Assume, for simplicity, a simple linear page table kept in physical memory. Here are some different hardware and software things that can happen during memory access (next slide). At first, assume we are not running on a VMM, i. e. , this is just an application running on top of the OS. (a) Write down the flow that occurs when a user application encounters a TLB hit: (b) Write down the flow that occurs when a user application encounters a TLB miss to a valid page that is present in memory: (c) Write down the flow that occurs when a user application encounters a TLB miss to a valid page that is not present in memory: Now assume that the OS is running on a virtual machine monitor. (d) Write down the flow that occurs when a user application encounters a TLB hit: (e) Write down the flow that occurs when a user application encounters a TLB miss to a valid page that is present in memory:

0. the hardware checks the TLB to see if the VPN-to-PFN (or VPN-to-MFN if

0. the hardware checks the TLB to see if the VPN-to-PFN (or VPN-to-MFN if on a VMM) translation is present 1. the hardware issues a load to a physical address (or machine address if on a VMM) 2. the OS code at the start of the TLB miss handler runs 3. the OS code at the end of the TLB miss handler runs, which returns from trap 4. the OS code that accesses the page table to lookup a translation runs 5. the OS code that updates the TLB with a new mapping runs 6. the OS code that updates the page table with a new VPN-to-PPN mapping runs 7. a disk request is initiated 8. a disk request completes 9. the VMM code at the start of the VMM TLB miss handler runs 10. the VMM code at the end of the VMM TLB miss handler runs, which returns from trap) 11. the VMM code that updates the TLB with a new mapping runs

Next • Multiprocessor Scheduling • Linux Scalability

Next • Multiprocessor Scheduling • Linux Scalability