Gerenciamento de Memoria no ESXI – Pt.2

Faaala galera, 100%?!

No nosso último artigo sobre gerenciamento de memória falamos sobre alguns conceitos e recursos que facilitam a gestão e utilização de memória em um ambiente VMware ESXI. Se você ainda não  leu, só continue nesse artigo antes de concluir a leitura da parte 1, disponível aqui.

Como já falamos a gestão dos recursos físicos em um ambiente virtual é um desafio para qualquer administrador de redes/servidores e por isso é mais que importante entender como tudo funciona e o que a ferramenta pode te entregar para lhe apoiar nessa missão. O artigo de hoje concluirá nosso estudo sobre gerenciamento de memória no ESXI e dará base para que você comece aplicar alguns dos recursos/técnicas que comentarei aqui em sue ambiente de testes e depois, obviamente, em produção!

Let’s rock!!

TPS (Transparent Page Sharing)

Essa é uma das técnicas “padrão” do ESXI e é super bacana. Aqui, como o nome propões, temos um compartilhamento de paginas de memória meio que ao pé da letra! ISSO MESMO, compartilhamento de memory pages. O TPS funciona com dois processos em background do VMKernel onde um deles identifica paginas idênticas e um segundo que realiza o compartilhamento (Collapse) dessas paginas entre VMs (oh yeah).

Resumidamente o TPS realiza um scan em ciclos de 60 min (valor padrão), tendo capacidade de de 4MB/s por cada GHz de CPU (ESXI 6.5). Esse scan busca paginas identificas e as seleciona para um segundo processo de validação baseado em Hash. Caso ocorra um match a nível de conteúdo existe uma sumarização do conteúdo da memory page e tudo isso vai para uma tabela. Nos demais ciclos, caso ocorra um novo match essa pagina passa a ser compartilhada e pode ser utilizada por mais de um guest O.S (VM) rodando nesse host ESXI.

Como nem tudo são flores, uma brecha foi encontrada no TPS que permitia Cross-VM attack. Em resumo era possível “capturar” informações utilizando as paginas compartilhadas disponibilizadas pelo TPS. Para ter uma visão geral de como isso foi possível, basta ler o artigo completo que descreve o procedimento de ataque, aqui.

Obviamente a VMware não deixou barato e inclui um update com um recurso chamado de “Salting TPS”. Esse carinha adicionou alguns detalhes onde conseguimos controlar e determinar os limites da técnica de TPS. Foi introduzido um conceito de agrupamento de VMs onde basicamente só existirá compartilhamento de páginas entre VMs que estejam dentro de um mesmo Salty Group.

Veja que saímos de um cenário onde toda e qualquer VM tinha acesso a paginas compartilhadas (Inter-VM), para um cenário onde é determinado quem pode acessar e compartilhar tal memory page (Intra-VM).

Para que isso passe a ser utilizar dois ajustes devem ser realizados: Um no host (VMKernel) e um a nível de VM. Alterando o parametro Mem.ShareForceSalting para 2 o hypervisor passa a trabalhar em modo de compartilhamento Intra-VM.

Como saber quando utilizar cada técnica?

Relax, o hypervisor (ESXI) toma conta disso por você. Ele é quem define quando cada técnica deve ser utilizada. Para conseguir definir o momento de uso de cada recurso.

“WHAT! Como isso é possível!?” – Well well padawan…se liga.

O ESXI utiliza uma métrica baseada em um cara chamado minFree. O valor do minFree determinará qual a técnica de gerenciamento de memória o host utilizará. Para isso existe um calculo simples e com base nele é possível entender o por que determinado host está utilizando TPS, Compressão e demais técnica. Vamos a matemática.

Para os primeiros 28GB utiliza-se como base o valor de 899MB. O próximo passo é calcular 1% da memória remanescente do host e somar aos 899MB que já temos. Veja

  • Host com 144GB de memória: 144 – 28 = 116;

  • 116*1% = 0,16GB ou 1.187MB (arredondando)

  • 899+1.187 = 2089MB ou 2.08GB (arredondando)

O valor encontrado de 2.08GB é o limite/métrica para que o host saiba qual técnica utilizar. Com esse valor em mente podemos utilizar a tabela abaixo como referencia, baseando-nos no Memory State, onde:

  • High: 100 % of minFree – TPS
  • Soft: 64 % of minFree – Ballooning
  • Hard: 32 % of minFree – Memory compression
  • Low: 16% of minFree – Swapping

Quando temos host com Memory State High podemos assumir que a utilização de memória por parte das VMs é menor do que a existente no host, portante não é necessário nenhum tipo de técnica para exigir memória ou realocar. Nesse estado o ciclos de TPS acontecem normalmente. Quando começa a ocorrer queda na quantidade de memória livre o hypervisor pode utilizar o Ballooning (Soft), e caso o balloon não seja suficiente o hypervisor passa a utilizar compressão (Hard) e por último Swap (Low). Esses dois últimos são ativados quase que simultaneamente.

Mesmo com as técnicas de gerenciamento de memória o consumo não seja balanceado o host pode bloquear a execução de todas as maquinas virtuais que estejam com exigência maior do que o valor configurado para memória.

A table abaixo é um guia para identificar quando cada técnica é utilizada:

É isso ai meu povo!! Aqui acaba nosso estudo fundamental sobre Gerenciamento de Memória no ESXI. Espero que tenham curtido!!

Grande abraço \,,/

Faça o primeiro comentário a "Gerenciamento de Memoria no ESXI – Pt.2"

Comentar

O seu endereço de email não será publicado.


*


Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.