Você está na página 1de 12

Memria: O ponto mais crtico para virtualizao

by Fabio_hara@H otmai l.Com on 10 DE JULH O DE 2012 - 13 CO MM ENTS

De todos os 4 principais aspectos de hardware para virtualizao (processador, disco, rede e memria) de comum acordo entre todos os virtualizadores de que gerenciar memria a parte mais crtica. O custo da memria e sua limitao de expanso em muitos servidores so fatores que tornam muito difcil agregar muitas maquinas virtuais em um nico hardware. Os fabricantes de virtualizadores implementam varias tcnicas para conseguir agregar mais maquinas virtuais por servidor, e neste aspecto sempre h um ponto a se pagar pelo aumento de capacidade. Neste artigo vamos analisar algumas das principais tcnicas, e focar as vantagens, benefcios e desvantagens.

NINGUEM QUER DIMENSIONAR A MEMRIA


Em projetos de virtualizao temos de ter o maior cuidado ao dimensionar corretamente a quantidade de memria necessria, baseado na demanda das maquinas virtuais. Muitos servidores possuem maquinas virtuais com demandas excessivas de memria em determinados perodos, como por exemplo, fechamentos fiscais, indexao de bases, etc. Isto significa que apenas em um determinado perodo ser necessrio redimensionar a memria da maquina virtual de forma a atender a demanda, do contrrio ocorrer desde paginao dentro da maquina virtual ou at mesmo falha de execuo ou outros erros. Na grande parte dos casos ao dimensionar a memria de uma maquina virtual a escolha baseada na utilizao mdia de memria da mesma, porm muitos costumam configurar a VM com X GB de memria e, se a mesma demandar mais, vo adicionando 1GB de RAM at chegar ao ponto de estabilidade. Se a aplicao da maquina virtual no possui nenhuma documentao tcnica com dimensionamento de hardware ento muito difcil dimensionar da forma correta. Outro erro comum o dimensionamento errado de acordo com o tipo de funo a ser executada pela maquina virtual. de comum acordo que servidores de correio eletrnico ou banco de dados consumam muita memria, porm o mesmo no vlido para outras funes / servios. Muitos profissionais de infraestrutura acreditam que servidores de impresso (por exemplo) no precisam de muita memria, apenas disco(s) rpido(s). Servios de impresso de fato demandam discos rpidos devido ao servio de Spool (alta taxa de escrita e leitura para criar os Jobs de impresso), porm para melhor manipular os Jobs necessrio memria, e neste ponto colocar pouca memria ser impactante. Outro papel importante so servidores de arquivo. Muitos tambm acreditam que para um servidor de arquivos apenas uma boa controladora de disco e discos rpidos so mais do que suficiente. O processo de cpia tem algumas particularidades interessantes, e isto ajuda a compreender melhor as necessidades de outros itens de hardware. Uma das tecnologias inseridas no Windows Server 2008 R2 o RSS (Receive Side Scaling) que permite acelerar o processo de cpia. At as verses anteriores de sistema operacional de servidor todo o processamento de cpia era feito no primeiro ncleo de processador (Proc 0), de forma que o gargalo era alto, por mais que o servidor tivesse vrios ncleos. Com o RSS o processo de cpia distribudo entre os ncleos, aumentando o desempenho para gerenciar a cpia. Isto

faz sentido, pois nas verses anteriores no eram comuns cenrios com terabytes de dados trafegados pela rede. Outro ponto importante que, para acelerar o processo de cpia entre mquinas pela rede muito mais rpido copiar os dados primeiro para memria, para depois gravar para o disco. Neste caso ao copiar uma grande quantidade de dados pela rede o Windows far primeiramente um processo de cpia para a memria (no d para comparar o tempo de acesso para a memria nano segundos em relao ao tempo e acesso a disco milissegundos). Em outras palavras, quanto maior a quantidade de memria RAM, mais rpido o processo de cpia, portanto servidores de arquivo com pouca memria sofrem danos em desempenho.

AS TECNICAS
Muitos fabricantes implementam mais de uma tcnica para gerenciar memria para as maquinas virtuais. Todas possuem caractersticas de utilizao especficas e no competem entre si, pois cada uma tem caractersticas distintas.

Transparent Page Sharing (TPS)


Nesta tcnica o hypervisor (ou virtualizador) faz uma varredura na memria alocada para as maquinas virtuais atrs de trechos idnticos. Estes trechos so de 4K e, caso seja encontrado em duas ou mais mquinas virtuais, ento mantido uma tabela de Hash para controle dos endereos e apenas um dos trechos de 4K mantido. Os demais trechos possuem apenas um apontamento que gerenciado pela tabela de Hash. Para gerenciar a escrita nestes trechos de pginas compartilhadas utilizada uma tcnica de Copy-on-Write, de forma que uma cpia mantida para cada maquina virtual que realiza uma escrita.

Esta analise por trechos de 4K no feita de forma dinmica, pois o overhead de processamento seria muito alto. Desta forma nos virtualizadores que implementam este tcnica possuem configuraes de tempo de varredura (em minutos). A forma como feito o Scan bem interessante do jeito que feita. Vamos supor o cenrio de 3 maquinas virtuais em um servidor fsico que implementa TPS. No caso de sistemas operacionais Windows anteriores ao Windows Vista e Windows Server 2008 cada arquivo do sistema operacional carregado sempre no mesmo endereamento de memria (normalmente estes endereos so representados como 00000 etc). Neste cenrio o TPS comea a analisar estes endereos alocados de todas as maquinas virtuais, em blocos de 4K, e comea a compar-los entre si. Caso seja verificado que o Hash seja o mesmo ento apenas 1 das alocaes mantida na memria, e as demais so liberadas e gerenciadas pela tabela de Hash.

Este tcnica possui bastante efetividade quando so utilizadas maquinas virtuais com mesmo sistema operacional, mesmos aplicativos e mesmos dados. O motivo que a probabilidade de encontrar estes trechos redundantes muito maior do que se for considerar o cenrio com maquinas virtuais com sistemas operacionais distintos, diferentes aplicativos e dados. Nos novos servidores baseados em processadores com Intel EPT (Extended Page Table) e AMD RVI (Rapid Virtualization Index) as alocaes de pginas fsicas do Host so feitas em blocos de 2MB na memria, ao invs de 4K. Isto um problema, pois a probabilidade de encontrar pginas idnticas em blocos de 2MB muito menor se comparado a pginas de 4KB. Isto significa que o TPS ter um overhead maior, pois ele precisar gerar hashes de 4K mesmo nas pginas de 2MB.

BALLOONING
O termo Ballooning uma tcnica comum, pois a grande maioria dos virtualizadores implementa este mecanismo. O Ballooning na grade parte dos casos implementado atravs de um driver de dispositivo. Este driver comunica-se com o virtualizador (ou hypervisor) e informa quando est sob presso

(demandando memria) para obter mais memria. Quando o driver de ballooning inflado cabe ao sistema operacional da maquina virtual decidir quais pginas sero desalocadas da memria ara satisfazer as requisies do Ballooning.

MEMORY COMPRESSION
Esta tcnica no nova, pois h muito tempo atrs para o sistema operacional DOS j existiam fabricantes que ofereciam softwares que duplicavam a memria RAM (ex: QEMM da Quarterdeck ou Double-RAM). Neste cenrio em particular as pginas que vo para swap (paginao) podem ser comprimidas e armazenadas em um cache de compresso, localizado na memria principal do Host ou servidor de virtualizao. Quando uma pgina que est em swap acessada novamente ento a pagina descompactada e acessada. Como est no Compression Cache do host (localizado na memria) ento seu acesso mais rpido do que se estivesse armazenada em disco. Se as pginas no podem ser comprimidas ento a compresso vai falhar, e as paginas executam um SWAP. Importante observar que o Compression Cache finito em tamanho e utiliza uma poltica de reposio baseada em idade/tempo.

HYPERVISOR SWAPPING
Esta tcnica a mais simples de todas, pois basicamente at agora o que vimos das principais tcnicas que todas possuem em comum um nico objetivo: obter mais espao na memria para alocar mais mquinas virtuais. Entretanto pode chegar um ponto no servidor de virtualizao em que todas as tcnicas anteriores tenham feito o mximo possvel e no h mais memria RAM disponvel, tanto para as maquinas virtuais quanto para o host de virtualizao. Neste cenrio a memria extra solicitada pela maquina virtual redirecionada para paginao em disco. O cenrio ideal de utilizao do Hypervisor Swapping ocorre quando so utilizados discos SSD (Solid State Drive) ou storages de alto desempenho. Entretanto dependendo da quantidade de maquinas virtuais necessrio manter um RAID ou vrias controladores de disco, todos com discos SSD ou equivalentes. A tcnica do Hypervisor Swapping utilizada como ultima alternativa. Isto significa que se todas as outras tcnicas de memria j esgotaram seus recursos ento ser utilizado como ultima alternativa o swapping: TPS baseado na taxa de Scan de pginas e oportunidades de compartilhamento de memria (mesmo Sistema Operacional, mesma verso, mesma lnguagem, etc) Balloning depende do tempo de resposta do Sistema Operacional da maquina virtual

GERENCIAMENTO DE MEMRIA
Para ajudar a entender todas as implicaes no gerenciamento de memria em ambientes virtualizados interessante ver como mquinas virtuais baseadas em Windows gerenciam a memria. Quando analisamos, por exemplo, o Windows 7 / Windows Server 2008 R2 podemos verificar que a memria dividida em 4 partes:

Em Uso

Pginas que esto em uso no momento Modificado

Pginas de memria que ainda no foram utilizadas durante algum tempo, mas precisam ser gravadas no disco antes que possam ser reutilizados. Standby

Pginas que no esto sendo usadas e foram escritas para o disco. Elas podem ser devolvidas a um processo se este precisar, mas tambm esto disponveis para uso por outro processo. Free

Pginas de memria que no esto em uso, mas ainda no foram zeradas

DYNAMIC MEMORY
Quando analisamos as tcnicas de memria fica claro que gerenciar memria para as maquinas virtuais vai requerer processamento extra do hypervisor, o que significa que seu uso tem cenrios ou situaes especficas. O Dynamic Memory surgiu no Service Pack 1 do Windows Server 2008 R2 e exige que o servidor de virtualizao esteja com o SP1 instalado e que as maquinas virtuais estejam com o Integration Components na verso 7601. O Dynamic Memory permite que a memria do Host possa ser vendida para uma maquina virtual, porm ser entregue apenas no limite fsico. A memria da VM gerenciada de forma dinmica, baseado na demanda: Monitorao de Committed Bytes dentro da VM Utiliza tcnica de hot add para adicionar memria Utiliza tcnica de memory ballooning para remover a memria

Alm disso, possui um Buffer configurvel para as necessidades de memria de cache para as mquinas virtuais, alm de que cada uma delas possa ter priorizao de memria. Os pr-requisitos para utilizar o Dynamic Memory so:

Para os Hosts: Windows Server 2008 R2 SP1 Microsoft Hyper-V Server 2008 R2 SP1 Windows Server 2003, 2008 & 2008 R2 Edies Enterprise e Datacenter somente 32-bit & 64-bit Edies Enterprise e Ultimate somente 32-bit & 64-bit

Para os Guests:

Windows Vista e Windows 7

O motivo de no haver suporte para as edies Standard do Windows Server refere-se ao fato de que o mesmo no suporta recursos de Hot-Add, essencial para o Dynamic Memory. J existem distribuies Linux suportando Dynamic Memory, portanto verifique se a Distro que voc pretende virtualizar j possui suporte.

COMO FUNCIONA

O processo de funcionamento do Dynamic Memory muito parecido com o processo de compra de passagens areas. Quando compramos uma passagem para um determinado voo a companhia pode vender, por exemplo, 200 passagens. Entretanto a companhia sabe que para este voo ser utilizada uma aeronave que possui apenas 180 lugares, mas vender assim mesmo uma quantidade maior do que realmente possui fisicamente (ns conhecemos este processo como Over Booking). Por mais que os 200 ingressos sejam vendidos apenas 180 pessoas podero voar. Em nenhum momento 200 pessoas vo voar acomodados em corredores, dividindo assentos, etc.

Este exemplo ilustra bem o funcionamento do mecanismo do Dynamic Memory. Um servidor possui uma quantidade X de memria, porm informar para as maquinas virtuais que utilizam Dynamic Memory de que elas podem ter mais memria se precisarem. Entretanto se o limite fsico de memria do Host for atingido no haver compresso de memria ou page sharing: um bloco de memria ocupado APENAS por uma maquina virtual.

Quando configuramos o Dynamic Memory (parmetro individual, por maquina virtual) definimos a memria inicial, mximo de memria e percentual de buffer. A memria inicial o startup de memria que a maquina virtual utiliza at que todo o Kernel da mesma esteja inicializado. Aps a inicializao completa de todo o Kernel da sim a maquina virtual pode incrementar de memria RAM baseado na demanda, da seguinte forma: Vamos imaginar uma maquina virtual com 1GB de RAM de memria inicial, e configuramos o mximo para 8GB de RAM e o Buffer configurado em 20%.

Neste exemplo quando a maquina virtual for ligada e at o termino do carregamento do Kernel ela ir ocupar 1024MB de memria. Ao abrir o Task Manager da maquina virtual verificamos que ela ocupou (por exemplo) 512MB de RAM. Caso a maquina virtual sofra uma presso de um aplicativo X demandando mais memria ento o Hypervisor receber esta informao atravs do Dynamic Memory VSP (Virtual Service Parent), e ir fazer o incremento de memria para a mquina virtual em 20%, baseado na utilizao atual de memria (neste exemplo a memria atual 1024MB e recebendo um incremento de 20% passar a 1228MB). Se a aplicao ainda continuar a demandar mais memria ento novamente o host vai adicionar mais 20% de memria extra para a mquina virtual (como o clculo feito baseado na utilizao atual 1228MB ento agora ela passar a ter 1473MB). Estes incrementos de memria RAM na maquina virtual vo ocorrer at atingir o limite mximo definido para a maquina virtual (no caso seriam 8192MB). Mas o que acontece se o Task Manager estiver aberto justamente na hora que a maquina virtual sofrer incremento de memria pelo Dynamic Memory? Simplesmente nada, o Task Manager e nas propriedades do sistema refletem automaticamente a quantidade atual de memria alocada.

ADICIONANDO MEMRIA: O LADO BOM


Nas tcnicas convencionais para adicionar a memria para as maquinas virtuais verificamos que no h impactos para as mesmas: o sistema automaticamente reflete a adio de memria sem a necessidade

de reiniciar ou desligar a maquina virtual. Entretanto existem aplicaes que, ao serem executadas, verificam a memria RAM atual para prosseguir com a instalao. Neste caso importante que a aplicao v detectar apenas a memria atual da mquina, e mesmo o sistema operacional da maquina virtual tambm enxerga apenas a memria atual (e no a memria mxima que a maquina virtual pode atingir). Outro aspecto importante refere-se ao fato de que nem todos os cenrios deve-se utilizar o Dynamic Memory. Aplicaes que tenham muita oscilao de memria e/ou uso intensivo da mesma preferencialmente devem ter a memria fixa. O motivo que oscilaes de alocao dinmica de memria causam penalidades de processamento devido a este gerenciamento, podendo tornar em muitos casos lento a maquina virtual. Quando ocorre a demanda de memria aumenta ento o VSC (Virtualization Service Client, localizado dentro da maquina virtual) requisita memria adicional via VSP (Virtualization Service Parent, localizado no servidor de virtualizao). Desta forma o VSC apresenta memria adicionada para o gerenciador de memria da mquina virtual, habilitando automaticamente o novo incremento de memria. O Dynamic Memory no utiliza a tcnica tradicional de HotAdd, porm utiliza no lugar o HotAdd Enlightenments, existente apenas nas verses suportadas pelo Dynamic Memory.

REMOVENDO MEMRIA: O LADO ESCURO


Remover a memria da maquina virtual no um processo simples. No caso do Dynamic Mempory utilizado uma tcnica de Ballooning para inflar o driver do espao de endereamento virtual nopaginado. Desta forma o Sistema Operacional da maquina virtual ainda acredita que a memria esteja l, porm o espao de endereamento designado para o Kernel driver. A memria virtual ento liberada e/ou despaginada, e colocada em uma lista livre (free/zero). Por fim o VSC chama a funo do Gerenciador de Memria para alocar a memria fora da lista livre (free/zero). Para gerenciar tanto a adio de memria quanto a remoo importante entender como funciona a poltica de funcionamento das mesmas: Poltica de adio de memria ativa Memria adicionada imediatamente quando a VM necessitar Memria no removida quando no h necessidade imediata de memria Memria inutilizada coletada a cada 5 minutos Poltica de reclamao (remoo) de memria passiva

Isto significa que, para remover a memria da maquina virtual, o hypervisor no pode simplesmente tomar a memria da maquina virtual. O hypervisor no tem como saber se a maquina virtual de fato est usando ou no a memria, pois caso pudesse ler o que esta na memoria da maquina virtual seria uma falha de segurana (uma invaso no servidor de virtualizao permitira ler os dados na memoria

da maquina virtual e ento obter ou fazer qualquer ataque para a mesma). Desta forma no caso do Hyper-V a cada 5 minutos ele faz uma varredura em todas as maquinas virtuais verificando se as mesmas liberaram a memria. Existem outros fatores que tornam mais difcil a remoo da memoria adicionada nas maquinas virtuais. O Windows possui um mecanismo chamado de Super-Fetching, que possui como funo primria acelerar o tempo de acesso para as aplicaes mais acessadas. Quando o sistema operacional inicializado so carregados na memria os aplicativos mais acessados e estes ficam j alocados na memria. Desta forma se voc possui uma maquina virtual com vrios servios e aplicativos acessados ento o sistema operacional tentar mant-los carregados previamente na memria para acelerar o tempo de resposta. Isto torna mais difcil para qualquer virtualizador remover a memria previamente alocada.

POR QUE A MICROSOFT NO IMPLEMENTA MEMORY COMPRESSION


Compresso de memria requer processamento extra, assim como todas as tcnicas listadas anteriormente. Comprimir dados da memria implica em aumentar a carga de processamento, alm de no possuir eficincia para todas as situaes.

POR QUE A MICROSOFT NO IMPLEMENTA TRANSPARENT PAGE SHARING


O Transparent Page Sharing funciona bem com pginas de 4K, porm eficincia muito baixa com Large Memory Pages (2MB). O motivo que na tcnica de TPS muito mais fcil encontrar blocos de 4KB co hashes idnticos do que encontrar blocos de 2M com hashes idnticos. Pginas de 4K no conseguem usar com eficincia o Translation Lookaside Buffer (TLB) com Large Memory Pages. Alm disso, em servidores com SLAT, usar paginas de 4K ao invs de Large Memory Pages reduz a performance de servidores em ~20%, pois voc est na prtica forando o processador SLAT a trabalhar em um modo ao qual no foi otimizado. Por padro sistemas operacionais que trabalham com Large Memory Pages (como Windows Vista e Windows Server 2008 em diante) no tem eficincia com sistemas que utilizam TPS. Outro mecanismo que reduz a eficincia do TPS o SuperFetch. Por caracterstica o SuperFetch popula trechos de memria com aplicaes que sejam frequentemente carregadas, melhorando tempo de resposta. Entretanto este carregamento prvio Reduz quantidade de Zero Pages reduzindo eficincia do Page Sharing. Este mecanismo existe desde o Windows XP e tambm em sistemas open-source (conhecido como Preload no Linux). Por fim o ultimo mecanismo que invalida o TPS um recurso de segurana implantado a partir do Windows Vista, chamado de Address Space Layout Randomization (ASLR). Este mecanismo faz com que

DLL`s de sistema e executveis sejam carregados em reas diferentes da memria toda vez que o Sistema Operacional seja inicializado. O propsito do ASLR bem interessante, pois muitos malwares atacam determinados endereos especficos da memria, e com o ASLR ao menos arquivos crticos do sistema operacional nunca estaro sempre nos mesmos endereos de memria. Quando o TPS executado ele comea a inspecionar os blocos de 4K nos mesmos endereos de cada mquina virtual. Se por exemplo em um endereo 0000000fff de uma maquina virtual existe um arquivo X carregado na memria e em outra mquina virtual o mesmo endereo 0000000fff possui outro arquivo carregado (por causa do ASLR) ento no h como os hashes tornarem-se idnticos, o que invalida o TPS neste bloco especfico. Partindo deste princpio se o servidor de virtualizao tiver vrias maquinas virtuais com mesmo sistema operacional e mesma verso/lngua ento h possibilidades do TPS funcionar e ter eficincia. Entretanto em servidores com sistemas operacionais diversos no haver eficincia de uso.

POR QUE A MICROSOFT NO IMPLEMENTA SECOND LEVEL PAGING (HYPERVISOR SWAP)


Se o Hypervisor no conseguir identificar quais pginas da maquina virtual devem ir para swap pode ocorrer interaes desnecessrias com as polticas de gerenciamento da memria nativa na maquina virtual (Ex: O sistema operacional da VM nunca vai fazer paginao das paginas do Kernel. O Hypervisor no consegue identificar quais so as paginas do Kernel e vai fazer swap). Alm disso, existe a possibilidade da dupla-paginao. Imagine por exemplo uma maquina virtual com toda a memria disponvel j esgotada (em uso) e por coincidncia o servidor de virtualizao j no possui mais memria disponvel para as maquinas virtuais, fazendo outro swap. Para tornar eficiente o uso do Hypervisor Swap necessrio o uso de discos SSD (Solid-State Drives) para conseguir chegar a um tempo de resposta prximo ao da memria RAM. Entretanto pode ser necessrio mais de um disco ou at mesmo um array de SSD para conseguir ter uma taxa sustentvel. No h como comparar o tempo de acesso do disco com o tempo de acesso a memria.

O QUE RECOMENDADO

O melhor cenrio, e todos os fornecedores de virtualizao concordam com isso, preferencialmente manter a memria das maquinas virtuais como fixa, principalmente para servidores que tem uso intensivo de memria. Para demais maquinas virtuais que tem demanda de memria apenas em determinados perodos ento recursos de alocao dinmica de memria podem ser interessantes.

Você também pode gostar