40
MO801 - Tópicos em Arquitetura e Hardware - Máquinas Virtuais Anderson Soares Ferreira [email protected] 06/Nov/2012 Seminário Instituto de Computação - Unicamp

Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

MO801 - Tópicos em Arquitetura e Hardware - Máquinas Virtuais

Anderson Soares [email protected]

06/Nov/2012

Seminário

Instituto de Computação - Unicamp

Page 2: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Conteúdo

● Introdução● Características gerais● Arquitetura● Tipos de domínios● Virtualização de memória● Virtualização de I/O● Estudos de Casos

Page 3: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Introdução

● História● Xen hypervisor foi desenvolvido como parte do projeto

Xenoserver da Cambridge University no final da década de 90

● O projeto tinha como objetivo construir uma infraestrutura de computação distribuída ampla (wide-area)

● Era mantido pela XenSource e se tornou open source em 2002

● A primeira versão foi lançada em 2003

● Em 2009, a Citrix adquire a XenSource, com essa aquisição é também constituído o Xen Project Advisory Board composto por Citrix, IBM, Intel, HP, Novel, Red Hat, Sun e Oracle

Page 4: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Introdução

● Importância● Xen é um das mais bem sucedidas ferramentas de

virtualização utilizadas na atualidade

● É utilizada como infraestrutura para ambientes de computação em nuvem da Amazon, Google, Fujitsu, Rackspace

● Também está presente em soluções comerciais de virtualização:

● HUAWEI UVP (Unified Virtualization Platform) ● Citrix XenServer● Sun xVM/OracleVM

Page 5: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Introdução

● Versão atual 4.2 (set/2012)● Suporta até 4096 CPUs e 512 vCPU por guest● Até 5TB de memória

● Plataformas● x86, x86-64, IA64, ARM, MIPS (em andamento)

● Guest● Dom0 – Linux, OpenSolaris, NetBSD● DomU – Linux, *BSD, OpenSolaris, MS Windows (HVM)

Page 6: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Características Básicas

● Virtualização Tipo 1● VMM é executado diretamente no hardware

● Arquitetura paravirtualizada● O S.O. guest sabe da existência do hypervisor● O kernel do S.O. é modificado para ser executado no

Xen● Guest solicita operações ao VMM através de

Hypercalls

● Lightweight VMM● É responsável pelo gerenciamento de memória e CPU

Page 7: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Arquitetura

● Tipos de Virtualização

Page 8: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Arquitetura

● Solução Xen

Hypervisor - (Xen)● CPU● Gerenciamento de

memória● Gerenciamento de

segurançaControl Domain (Dom0)

● I/O drivers● Xen management

toolstack

Guest OS (DomU)

Page 9: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Arquitetura

● Dom0● Ciclo de vida de Vms

● Create, reboot, pause, destroy, etc.● Gerenciamento de imagens de disco● Controle de dispositivos de I/O

● Utiliza conjunto de front-end e back-end drivers● Fornece suporte a pilhas de gerenciamento

● XL, Xend e libvirt● Gerenciamento de módulos e políticas de segurança

(XSM)● Qualquer outra pilha de gerenciamento que se possa

imaginar!!

Page 10: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Arquitetura

Memória

Segmentação Não é possível instalar segmentos privilegiados nem sobrepor o topo da memória

Paginação Guest tem acesso de leitura a tabela de páginas, atualizações são validadas pelo hypervisor

CPU

Proteção Guest deve ser executado em um nível menos privilegiado que o hypervisor

Exceções Guest registra uma tabela de descritores no VMM

System calls Guest pode instalar uma tratador rápido de syscalls, evitando o desvio para o Xen em cada chamada

Interrupções Substituído por um sistema leve de notificação de eventos

Tempo Guest recebe duas interfaces de tempo, uma virtual e outra real

I/O

Rede, disco, etc Transferência de dados é feita através de anéis assíncronos de I/O

● Paravirtualização

Page 11: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Tipos de Domínios

● Paravirtualizado (PV)● Não é utilizado nenhum suporte de virtualização da

CPU● Hypercalls

● S.O. faz chamadas síncronas para o hypervisor (int 82h)● Event notification handlers

● Guest registra callbacks para recebimento de notificações

● São usados em substituição à interrupções e comunicação com dispositivos

Page 12: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Tipos de Domínios

● Paravirtualizado (PV)

Page 13: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Tipos de Domínios

● Full Virtualization (HVM)● Utiliza extensões de virtualização existentes na CPU● Emulação de um sistema (máquina) completa● Permite a execução de S.O. sem a necessidade de

alterações no kernel● Maior compatibilidade● Utiliza o QEMU para emulação do modelo de

dispositivos

Page 14: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Tipos de Domínios

● Full Virtualization (HVM)

Page 15: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Tipos de Domínios

● Soluções Híbridas

● PV on HVM● Utiliza drivers parvirtualizados em um domínio HVM

● PV HVM Containers● Combina a técnica de PV e virtualização assistida por

hardware

Page 16: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Tipos de Domínios

● Soluções Híbridas

Page 17: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Virtualização de Memória

● Não existem shadow page tables● As tabelas de páginas são registradas diretamente no

MMU● Hypervisor faz a validação das atualizações das

páginas antes da ativação

● A memória de um domínio é alocada durante sua criação● É possível especificar um valor mínimo e máximo de

memória utilizada por um domínios● O domínio pode solicitar mais memória através do

driver de memória balloon

Page 18: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Virtualização de I/O

● Apenas Dom0 tem acesso aos dispositivos físicos

● DomU utiliza interfaces abstrata de dispositivos ● Virtual Network Interface (vif)● Virtual Block Device (vbd)● Virtual console (keyboard/mouse)

● Transferência de dados entre dispositivos baseia-se em:● Anéis de descritores● Páginas de memória compartilhada

Page 19: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Virtualização de I/O

● Anéis de descritores

Page 20: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

● DomU guests também podem acessar dispositivos de I/O diretamente● Xen utiliza PCI passthrough para direcionar dispositivos

para domínios específicos● Xen restringe acesso aos dispositivos direcionados ao

domínio● Também controla o acesso a memória mapeada para o

dispositivo

Virtualização de I/O

Page 21: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Performance

Linux (L) - Xen (X) - VMWare (V) – User-Mode Linux (U)

Page 22: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Performance

Processes – time in µs

Context switching time in µs

Page 23: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Performance

File & VM system latencies in µs

Bandwidth in Mb/s

Page 24: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● Xen on ARM● Projeto coordenado pela Samsung● Objetivo era levar o Xen para plataformas mobile

● Principal desafios:● Proteção do espaço de memória VMM, S.O. e

processos● Troca de contexto● Cache de memória

Page 25: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● Xen on ARM● Isolamento entre o Xen e o S.O.

● S.O. solicita a alocação de páginas de memória via hypercalls

● Xen valida a atualização antes de sua ativação

● Isolamento entre S.O. e processos ● Utiliza do mecanismo de proteção de domínios● Xen utiliza os domínios D0, D1 e D2 ● Utiliza três níveis de acesso● As permissões são definidas através do Domain Access

Control Register (DACR)

Page 26: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● Xen on ARM● Isolamento entre S.O. e processos:

D0 D1 D2

Processo no access no access client

OS client client client

Xen manager manager manager

Page 27: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● Xen on ARM● Troca de contexto:

● Xen é executado em modo supervisor● S.O. e processos são executados em modo usuário● O modo usuário é logicamente dividido em dois modos

S0: VMM mode

S1: Kernel mode

S2: User mode

Supervisor

User

Page 28: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● Xen on ARM● Cache de memória

● VMM, S.O. e processos utilizam espaços de memória não sobrepostos

● Não há necessidade de flush da cache durante a troca de contexto em um mesmo domínio

● Xen utiliza entradas especiais (lockdown) da TLB para mapear seu espaço de memória

● Reduz o overhead durante a troca de contexto entre domínios

Page 29: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● Xen on ARM● Testes de performance

● Processador ARM 926EJ-S 266Mhz● 64 MB RAM / 32 Mb Flash

Page 30: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● Xen on ARM● Performance – Troca de Contexto

Page 31: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen● Projeto desenvolvido pela HP Labs● Utilização de Xen guests IA32 em plataformas IA64● Emprega tradução de binários utilizando o IA32-EL

● Principal desafios:● Emular o conjunto de APIs do Xen (hypercalls)● Utilizar um tradutor de código fechado● Utilizar uma versão inalterada do Xen IA64

Page 32: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen● Projeto desenvolvido pela HP Labs● Utilização de VMs Xen IA32 em plataformas IA64● Emprega tradução de binários utilizando o IA32-EL

● Principal desafios:● Emular o conjunto de APIs do Xen (hypercalls)● Utilizar um tradutor de código fechado● Utilizar uma versão inalterada do Xen IA64

Page 33: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen

MagiXen Architecture

Page 34: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen● Camada entre o VMM e o S.O.

● Controla as interrupções e exceções● Configura o ambiente IA32 inicial (registradores,

memória, etc)● Faz a passagem das chamadas a hypercalls entre o S.O.

e o Xen● Gerencia a comunição entre o domínio e dispositivos de

I/O ● Faz o controle do módulo de tradução

Page 35: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen● Camada entre o VMM e o S.O.

● Controla as interrupções e exceções● Emula a tabela de páginas da arquitetura IA32● Configura o ambiente IA32 inicial

● (registradores, memória, etc.)● Faz a passagem das chamadas a hypercalls entre o S.O.

e o Xen● Gerencia a comunição entre o domínio e dispositivos de

I/O ● Faz o controle do módulo de tradução

Page 36: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen - Performance

Approximate costs for common operations

Page 37: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen - Performance

Page 38: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Estudos de Caso

● MagiXen - Performance

Page 39: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

Referências

● Xen and the art of virtualization - Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, Andrew Warfield. Published at ACM SOSP 2003. Available at http://dl.acm.org/citation.cfm?doid=945445.945462

● Xen on ARM: System Virtualization using XenHypervisor for ARM-based Secure Mobile Phones - Joo-Young Hwang, Sang-Bum Suh, Sung-Kwan Heo, Chan-Ju Park, Jae-Min Ryu, Seong-Yeol Park, Chul-Ryun Kim. Published at IEEE CCNC 2008.Avaiable at http://dx.doi.org/10.1109/ccnc08.2007.6

● MagiXen: Combining Binary Translation and Virtualization - Matthew Chapman, Daniel J. Magenheimer, Parthasarathy Ranganathan. HP Labs Technical Report HPL-2007-77. Available at http://www.hpl.hp.com/techreports/2007/HPL-2007-77.pdf.

● Safe Hardware Access with the Xen Virtual Machine Monitor - Keir Fraser, Steven Hand, Rolf Neugebauer, Ian Pratt, Andrew Warfield, Mark Williamson. Published at OASIS ASPLOS 2004 Workshop. Available at http://www.cl.cam.ac.uk/netos/papers/2004-oasis-ngio.pdf)

● Xen Documentation URL: http://www.xen.org/support/documentation.html

● Xen Wiki Website URL: http://wiki.xen.org/

Page 40: Instituto de Computação - Unicamp MO801 - Tópicos em ...edson/disciplinas/mo801/... · Introdução Versão atual 4.2 (set/2012) Suporta até 4096 CPUs e 512 vCPU por guest Até

That's all folks!