Saltar para o conteúdo
EuroVPSEuroVPS

Porque é que a sua VM não tem swap

O swap deixa uma máquina fingir que tem mais memória do que tem. Em flash enterprise, esse fingimento custa desgaste do storage e um precipício de latência, por isso dimensionamos a RAM em vez disso.

Por EuroVPS EngineeringA casa das máquinas

5 min de leitura
Neste artigo 5 secções
Em resumo
  • A RAM responde em cerca de 100 nanossegundos. O flash rápido responde em cerca de 100 microssegundos. Uma carga de trabalho que cai em swap corre sobre memória aproximadamente mil vezes mais lenta.
  • O swapping converte uma falta de RAM em desgaste do storage e num precipício de latência. A carga de trabalho falha mais devagar e de forma mais confusa, em vez de falhar com clareza.
  • Nós dimensionamos a RAM em vez disso. O Sizing Desk pede a saída real do seu free -m antes de propor o que quer que seja.

As máquinas virtuais que construímos são entregues sem swap. Quando uma fica sem memória, a falha é imediata e visível, e a solução é uma conversa sobre RAM. Numa folha de especificações isso lê-se como uma omissão, por isso aqui fica o raciocínio completo. Nada disto depende do nosso hardware. Pode aplicar o argumento a qualquer VM que corra em qualquer lado.

O swap existe para deixar uma máquina correr para lá da sua memória física

O swap é a válvula de escape do kernel. Quando a memória física escasseia, move para o disco as páginas que julga mais frias e entrega a RAM libertada a quem a pedir. A máquina passa a reportar mais memória do que o silício contém, todas as alocações passam a ter sucesso, e a verdade chega mais tarde, sob a forma de latência, sempre que um processo toca numa página que afinal vivia no disco.

Essa troca fazia sentido quando foi inventada. A RAM era escassa e cara, as máquinas eram partilhadas por muitos trabalhos, e um trabalho batch que se arrastava durante a noite era melhor do que um trabalho batch que morria. Cada parte desse contexto entretanto inverteu-se: a RAM é a mais barata de sempre por gigabyte, a máquina é só sua, e as cargas de trabalho são serviços interativos em que um desvio de latência de dez vezes é indistinguível de uma indisponibilidade. A válvula de escape ficou nas predefinições na mesma, porque as predefinições sobrevivem às suas razões.

Cair fora da RAM custa-lhe três ordens de grandeza

O argumento contra o swap é aritmética antes de ser filosofia. A memória e o storage ficam em andares diferentes do edifício da latência, e a escada entre eles é longa.

A ESCADA DA LATÊNCIA · VALORES GERAIS, QUALQUER HARDWARE MODERNO
CACHE DA CPU
cerca de um nanossegundo
RAM
cerca de 100 nanossegundos
FLASH RÁPIDO
cerca de 100 microssegundos, mil vezes mais lento do que a RAM
UM PAGE FAULT PARA SWAP
a viagem completa ao storage, mais a fila, no caminho mais quente que a sua carga de trabalho tem

Os valores exatos variam com o hardware. Os intervalos entre os andares não. Sob pressão real de memória, a máquina sobe e desce essa escada continuamente: o kernel despeja páginas, a carga de trabalho volta a chamá-las de imediato, e a CPU gasta os seus ciclos à espera do storage. O load average sobe enquanto o throughput útil colapsa.

O CUSTO DE UM ACESSO A UMA PÁGINA FORA DA RAM

~0,1 a 1 ms

UMA VIAGEM AO STORAGE
÷

100 ns

RAM
=

~10.000×

MAIS LENTO POR ACESSO
Mesmo servido à velocidade de um dígito de milissegundos, um acesso a uma página fora da RAM custa à carga de trabalho da ordem de dez mil acessos à RAM.

O swap queima flash enterprise para esconder um erro de dimensionamento

Nos discos rotativos, o swap era apenas lento. No flash é também corrosivo. O tráfego de swap é o pior padrão que se pode dar a flash: um fluxo contínuo de pequenas escritas aleatórias que existem sem outra razão que não a falta de RAM da máquina. Cada uma dessas escritas envelhece uma célula para preservar uma ilusão.

E a carga de trabalho não recebe nada em troca do desgaste. Coxeia ao ritmo do storage até a pressão terminar ou alguém intervir. O array por baixo da sua VM aqui é HPE 3PAR all-flash, e o seu trabalho é servir os seus dados com velocidade. Gastar a sua resistência de escrita como memória a fingir é um mau negócio a qualquer preço, e é por isso que preferimos ter a conversa do dimensionamento à partida em vez de a disfarçar com paging.

Sem swap, o esgotamento da memória produz uma linha de log em vez de um mistério

O argumento mais forte é o do diagnóstico, e quem já perseguiu uma semana lenta através de uma stack de monitorização já o conhece. Com swap, ficar sem memória parece tudo menos ficar sem memória. A latência sobe em todos os serviços ao mesmo tempo, nenhum erro aparece em nenhum log, e os dashboards apontam para todo o lado onde a espera se faz sentir, que normalmente é a base de dados e o storage. As equipas perdem dias nessa perseguição, e o swap fabrica-a numa única máquina, por rotina, por conceção.

A RAM ESGOTA-SE, COM SWAP
  • A latência sobe em todos os serviços ao mesmo tempo, sem erro em nenhum log
  • Os dashboards culpam a base de dados, depois o storage, depois a rede
  • O array absorve um fluxo de pequenas escritas aleatórias cujo único trabalho é esconder a falta
  • O diagnóstico chega dias depois, depois de alguém correlacionar os gráficos
A RAM ESGOTA-SE, SEM SWAP
  • O kernel mata o maior infrator e nomeia-o no log
  • A falha tem uma marca temporal, um nome de processo e um total de memória
  • O array gasta as suas escritas em dados reais
  • A solução é uma conversa de redimensionamento no mesmo dia
O QUE ACONTECE NO ZERO

Um gráfico de memória numa máquina sem swap diz a verdade até à beira.

Dimensionamos a RAM com honestidade e pedimos o seu free -m real

A solução honesta para uma falta de memória é a mesma desde que o paging foi inventado: mais RAM, ou um working set mais pequeno. É aí, portanto, que gastamos o esforço. O Sizing Desk pede a saída real do free -m da sua máquina atual antes de propor o que quer que seja, porque a coluna available desse comando encerra discussões que os adjetivos nunca encerram, e a mesma leitura que elimina a necessidade de swap normalmente também encolhe o orçamento.

AS TRÊS RESPOSTAS A UMA FALTA DE MEMÓRIA
Mais RAMUm working set mais pequenoPaging para o disco
Só uma das três gasta resistência do flash para evitar a conversa.

O método completo, com exemplos trabalhados de cada número que pedimos, está em como dimensionar um servidor. Em hardware que nos pertence, a margem já está dentro da máquina que pagou, por isso aprovisioná-la não custa nada extra no seu pico, o que elimina a última desculpa económica para tratar o storage como RAM de reserva.

Respostas diretas

O kernel não precisa de algum swap para funcionar bem?+

O kernel pode usar swap para despejar páginas genuinamente frias e entregar a RAM recuperada à cache do disco, e numa máquina cronicamente apertada isso ajuda na margem. A margem é o problema. Compra uns poucos por cento de memória efetiva enquanto esconde se a máquina é sequer suficientemente grande, e desfoca todos os gráficos de memória de que mais tarde vai depender. Numa máquina bem dimensionada o ganho das páginas frias arredonda para zero, e a clareza de diagnóstico de um limite rígido de memória vale muito mais às 3 da manhã.

Como descubro quanta RAM uso realmente?+

Corra free -m durante um pico real e leia a coluna available. O método completo, com exemplos trabalhados de cada número, está no nosso artigo de dimensionamento, como dimensionar um servidor. Se essa coluna disser que está genuinamente apertado, a resposta é mais RAM, e diremos isso mesmo.

Sem swap é uma decisão pequena a jusante de outras maiores: dimensione as máquinas com números reais em vez de faturas, e ponha hardware sério por baixo delas para que os números aguentem numa noite má. A conversa sobre RAM é mais barata do que o mistério que evita.

Dimensione a RAM com honestidade

O Sizing Desk parte dos números reais da sua máquina e propõe uma configuração a partir dos nossos blocos de construção reais. Quando os seus números dizem menos, dimensiona-o para baixo.

Abra o Sizing Desk

Chegou ao fim.

Ponha a leitura em prática

O que executa?

Fale-nos da carga de trabalho, do tráfego e dos requisitos de recuperação. Comece pelo configurador de servidores ou discuta os detalhes com um engenheiro.

Escrito pelos engenheiros que constroem e operam a infraestrutura que descreve.
Fale com um engenheiro
XIn

Faltam 5 min