sábado, 7 de agosto de 2010

Como funciona o gerenciamento de memória no ESX? – Parte 1

                 

Como sabemos, o ESX é um “hypervisor” desenvolvido para gerenciar de forma eficiente os recursos de hardware (CPU, Memória, Storage, Rede) de uma máquina física entre diversas máquinas virtuais. Para entendermos como funciona o gerenciamento da memória, precisamos primeiro esclarecer algumas definições:

Host Physical Memory: é a memória física instalada no host ESX e gerenciada pelo kernel do ESX.

Guest Physical Memory: é a memória alocada para a VM. O sistema operacional da VM enxerga essa memória como sendo sua memória física (afinal de contas, ele não sabe que está rodando numa máquina virtual). Essa memória é gerenciada pelo sistema operacional da VM.

Guest Virtual Memory: é a memória vista pelas aplicações que rodam no S.O da VM.

O que é a memória virtual?

A memória virtual é uma técnica presente na maioria dos sistemas operacionais e suportada por quase todos os processadores existentes hoje em dia. O que ela faz é criar um espaço contínuo de endereços virtuais, fazendo que uma aplicação acredite que todo aquele espaço pertence a ela. A tradução de endereços entre o espaço de endereçamento virtual e o espaço de endereçamento físico é feita pelo sistema operacional e pelo hardware. Esta técnica não só simplifica o trabalho do programador, mas também se adapta ao ambiente de execução para suportar grandes espaços de endereço, protege os endereços utilizados por um determinado processo e permite o uso de arquivos de mapeamento e swap.

Mas como é feito o gerenciamento da memória virtual?

Bem, antes de qualquer coisa, para que seja possível trabalhar com memória virtual, é necessário que o hardware utilizado ofereça o que chamamos de ‘Unidade de Gerenciamento de Memória (MMU - Memory Management Unit). Normalmente a MMU está integrada ao processador e sua principal função é manter uma tabela que relaciona os endereços da memória virtual aos endereços da memória física. Essa tabela é conhecida como Translation Lookaside Buffer (TLB). Às vezes acontece de uma página de memória virtual não poder ser acessada porque não havia uma entrada correspondente na TLB, este tipo de situação causa o que chamamos de Page Fault.

Portanto, no caso de uma máquina virtual, além de virtualizar a memória, o VMM (Virtual Machine Monitor) também deve virtualizar a MMU, de forma que o S.O da VM também possa trabalhar com memória virtual.

Agora vamos entender como a memória é alocada para a VM.

Em ambientes que não são virtuais o sistema operacional é que assume toda a memória física da máquina. Dessa forma, sempre que uma aplicação necessita de memória para armazenar algum dado ela faz uma chamada ao sistema operacional. Este por sua vez conhece todas as páginas de memória que estão sendo usadas e todas as páginas que estão livres. É como se existissem duas listas, a lista de páginas livres e a lista de páginas usadas. Então quando uma aplicação faz uma chamada, o sistema operacional verifica a lista das páginas livres e disponibiliza uma página para a aplicação e em seguida move a página alocada para a lista de páginas usadas.

Como uma máquina virtual possui um sistema operacional e diversas aplicações, é necessário combinar as características de gerenciamento de memória do sistema operacional e também do gerenciamento da memória virtual utilizada pelas aplicações.

No ESX, a alocação de memória acontece sob demanda, ou seja, quando uma VM acessa à sua memória física (Guest Physical Memory) pela primeira vez, o hypervisor disponibiliza uma página de memória do host (Host Physical Memory) para aquela VM. Para cada máquina virtual o hypervisor mantém registrado em uma tabela qual página de memória está em uso e qual a sua localidade na memória física do host. Conforme mostrado na imagem abaixo:



Esta tabela é mantida pelo hypervisor internamente numa estrutura de dados chamada de PMAP (Physical Machine Mapping). Mas além desta tabela, o ESX também mantém um mapeamento das páginas de memória virtual (Guest Virtual Memory) para as páginas de memória física do host (Host Physical Memory). Este mapeamento é feito através de interceptações realizadas pelo hypervisor aos acessos que são feitos ao TLB da VM e pode ser realizado de duas formas, via Software ou via Hardware, isso vai depender do processador que está sendo utilizado no host e também do modo de execução escolhido pelo VMM, mas isso são assuntos para outros posts!

Agora já sabemos como ocorre a alocação de memória, mas e quando uma aplicação não precisa mais daquela página de memória, o que acontece? Bem, neste caso a aplicação fará uma nova chamada ao sistema operacional que em seguida moverá a página de memória em questão da sua lista de páginas usadas de volta para a lista de páginas livres, porém, como o S.O não tem o conhecimento de que ele está em uma máquina virtual, não ocorre nenhuma interação com o hypervisor, que por sua vez continua com aquela página de memória alocada para aquela VM.

Nesse ponto você pode estar se perguntando, mas como o ESX sabe a hora que ele precisa alocar uma página, mas não sabe a hora de liberar? Quando uma máquina virtual acessa pela primeira vez a memória física do host (Host Physical Memory) isso causa um “Page Fault”, que pode ser facilmente capturado pelo hypervisor. Já no caso da liberação da memória, fica difícil paro o hypervisor monitorar quando uma página foi liberada porque geralmente a lista de páginas livres no sistema operacional não é publicamente acessível.

Baseado nisso, foram criadas técnicas de recuperação de memória (Memory Reclamation) no ESX para melhor utilização da memória física instalada no host. Na parte 2 desse post pretendo explicar cada uma dessas técnicas detalhadamente.


Fontes:
http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf
http://www.vmware.com/files/pdf/software_hardware_tech_x86_virt.pdf
http://www.vmware.com/pdf/Perf_ESX_Intel-EPT-eval.pdf
http://www.van-lieshout.com/2009/04/esx-memory-management-part-1/
http://en.wikipedia.org/wiki/Memory_management_unit

terça-feira, 27 de julho de 2010

Novidades no lançamento do VSphere 4.1

                 

Recentemente (há cerca de duas semanas), a VMware oficializou o lançamento do VSphere 4.1, um ano após o lançamento do Vsphere 4.0. O VSphere 4.1 apresenta uma imensa quantidade de novidades e melhorias, o que justifica o fato de ter sido lançado como uma nova versão ao invés de um ‘Update’.

Entre as novidades que foram anunciadas, uma que deve “pegar” alguns desavisados de surpresa, foi a confirmação de que este será o último ‘release’ do ESX, a partir do próximo lançamento do VSphere teremos apenas o ESXi, portanto se você ainda não migrou o seu ambiente, essa é uma boa hora!

Segue uma lista de algumas das novidades/alterações que podem ser conferidas no VSphere 4.1:

- O número de migrações concorrentes via vMotion subiu para 4 num link de 1 Gbps e para 8 num link de 10Gbps.

- A velocidade do processo de migração via vMotion aumentou consideravelmente, tornando o processo de evacuação de um host muito mais rápido.

- Integração do ESX/ESXi com o Active Directory.

- Novas regras no DRS que permitem definir afinidade entre uma VM e um ou mais hosts.

- Adicionada uma nova técnica no gerenciamento de memória, Memory Compression, proporcionando um uso mais eficiente da memória do host. Essa é uma técnica que está entre o ‘Ballooning’ e o ‘Host Swapping’, ou seja, quando o host não consegue recuperar memória através do ‘ballooning’ ele irá usar a técnica de Memory Compression, para só então, no caso de ainda estar apresentando falta de memória, partir para o swap em disco. (Estou preparando um post para explicar como funciona o gerenciamento de memória no ESX)

- Storage I/O Control – fornece a opção de ‘limits’ e ‘shares’ para acesso a disco, ou seja, permite que você garanta para uma VM um determinado nível de acesso ao storage,mesmo quando o mesmo encontra-se sobrecarregado.

- Network I/O Control – permite gerenciar e particionar a banda de rede numa placa física entre diferentes tipos de trafego (VMs, vMotion, FT, ...).

- Load-Based Team – balanceamento automático de carga num grupo de placas de rede físicas configuradas em um vNetwork Distributed Switch.


Futuramente pretendo publicar alguns posts mais detalhados sobre algumas dessas novidades.

Segue alguns links oficiais da VMware:

Link: http://www.vmware.com/support/vsphere4/doc/vsp_41_new_feat.html

Link: http://www.vmware.com/files/pdf/VMware-Whats-New-in-vSphere-41-ds-en.pdf

segunda-feira, 24 de maio de 2010

Novo Programa de Certificações da VMware

                 

A VMware anunciou hoje algumas novidades em seu programa de certificações. Existe agora um nível intermediário, trata-se do VMware Certified Advanced Professional (VCAP4). O novo programa foi dividido em duas especialidades: Datacenter Administration (DCA) e Datacenter Design (DCD), e é destinado para profissionais que já possuem alguma certificação em VMware(VCP4 ou VCDX3). Nas imagens abaixo (retiradas do site oficial da VMware) você pode ver qual o caminho para conseguir cada uma das certificações.

VCP4



VCAP4-DCA



VCAP4-DCD



VCDX4



fonte: http://mylearn.vmware.com/mgrreg/index.cfm?redirect=off

sexta-feira, 2 de abril de 2010

Administering VMware Site Recovery Manager 4.0

                 

Uma dica bacana pra quem tiver interesse em aprender mais sobre o Vmware Site Rcovery Manager, acabou de ser lançado o Livro Administering VMware Site Recovery Manager 4.0. O legal é que o autor, Mike Laverick, liberou o livro completo para download, portanto, quem tiver interesse é só clicar aqui para ser direcionado pro site do download.