Por que o tamanho da troca deve ser igual ou maior que a RAM?

7

Muitos dizem que, se você tem 2 GB de RAM, deve configurar uma troca de 2 GB ou mais. FWIK a hibernação pode precisar do mesmo tamanho de swap para persistir a memória quando desligado, mas geralmente, se você tem uma grande memória RAM, você nem precisa de swap, não é?

Para usuários do Linux, quando você instala o Linux sem swap, o instalador irá avisá-lo que você não tem a montagem de swap. Não, eu não preciso disso porque minha RAM é grande o suficiente, certo?

    
por Xiè Jìléi 02.08.2010 / 08:37

6 respostas

10

O arquivo de troca não é simplesmente um buffer para ser executado quando você fica sem RAM física. Essa é uma visão simplista de como o arquivo de troca opera. Dito isso, você pode operar sem um arquivo de troca, desde que esteja 100% confiante de que nunca excederá a capacidade da sua RAM, a qualquer momento. Porque se o fizer, o seu sistema trava.

IMO, é melhor manter o arquivo da página e também acompanhar quantas vezes ele está sendo usado pelo sistema. Se você nunca estiver se debatendo, isso não é um problema, e se você estiver se debatendo, você tem um problema que provavelmente seria ainda mais sério se você não estivesse executando um arquivo de paginação.

É verdade que temos mais RAM agora e é barato. Mas isso também é verdade no espaço em disco. A menos que você tenha uma restrição convincente de espaço em disco, recomendo manter um arquivo de troca de tamanho decente.

Se você acha que as coisas estão sendo paginadas para o disco com muita frequência, você pode tentar refinar seu swappiness para ser menos agressivo.

    
por 02.08.2010 / 10:23
8

Todas as chamadas "regras" sobre tamanho de swap nunca foram planejadas como regras. Eles eram simplificações, pequenas diretrizes que poderiam ajudá-lo a adivinhar um número decente se você não conhecesse os padrões de uso da RAM ou simplesmente não quisesse otimizar.

À medida que o tempo passou, as simplificações se tornaram folclore e "regras" a serem obedecidas, e o custo relativo & As diferenças de latência entre RAM e disco foram alteradas gradualmente. Hoje, a maioria dessas regras não tem sentido.

No entanto, observe que a pergunta não é "Eu posso manter todos os meus aplicativos na RAM, não preciso de swap". A questão é "Eu tenho x RAM. Como faço para utilizá-lo melhor, para as necessidades de execução de aplicativos, aplicativos para dormir e buffer de E / S de disco?".

A pergunta OPs está marcada como "Linux", e eu não sei muito sobre o Gerenciamento de Memória Virtual do Linux (eu sei mais sobre o Windows e o FreeBSD), então não vou oferecer novas diretrizes sugeridas aqui. Um bom lugar para começar a ler seria este tópico de discussão entre os desenvolvedores de kernel do Linux 2.6 sobre o parâmetro de ajuste de VM "swappiness".

when you install Linux without swap, the installer will warn you that you didn't have swap mount.

Esse é apenas o comportamento codificado no instalador, porque ter uma troca é quase sempre uma boa ideia. Muitas distribuições Linux podem precisar da troca para Hibernação, mas você pode mudar isso se você quiser .

No I just don't need it [swap] because my RAM is just big enough, right?

Errado. Ou correto para pequenas quantidades de "necessidade", você estritamente falando não precisa trocar neste caso, mas seu PC será mais rápido com ele. Sem swap, todos os seus programas residem na RAM, incluindo os que estão inativos e não serão executados tão cedo. Com o swap, os programas inativos podem ser trocados, e a RAM física pode ser usada para coisas mais produtivas - principalmente o buffer de disco para mascarar o quão lenta é a E / S do disco (incl SSD).

Se você quiser controlar os kernels que equilibram entre a alocação de buffers de disco e a troca do código do aplicativo, então você quer o parâmetro de ajuste "swappiness", uma discussão da qual eu me vinculei acima. / p>     

por 02.08.2010 / 11:50
4

As várias regras de tamanho de swap ("você terá tanta troca quanto você tem RAM", "você terá o dobro da troca como você tem RAM") fez mais sentido quando não tínhamos essas quantidades insanas de RAM hoje tem.

Na minha opinião durante o uso típico, ter muita troca é completamente desnecessário. Se o seu padrão de uso típico é igual ao uso típico de desktop - navegação na Web, ouvir música, assistir a filmes, etc., 2 GB de RAM deve ser mais do que suficiente. Por outro lado, se você ocasionalmente consome algo que consuma muita memória, como renderizar cenas 3D muito complexas, fazer uma troca é uma boa ideia. O kernel do Linux suporta por sorte o arquivo baseado em troca , para que você possa configurar muita troca sob demanda sem necessidade de reparticionamento, caso a necessidade de swap esteja lá por algum motivo. Eu ainda não tentei voltar do hibernate com um swap baseado em arquivo.

Mas é difícil imaginar um cenário em que ter 2 GB de RAM e 2 GB de swap próximos aos seus limites seria uma boa ideia - nesse caso, a maior parte do tempo será gasto aguardando o sistema operacional trocar páginas e fora de e para o disco e nenhum trabalho real será feito.

E no lado do servidor você não quer que seu servidor nunca, nunca, troque. Está tudo bem se ele transfere um processo não muito comumente usado para trocar, mas se ele precisa trocar para que os processos ativos sobrevivam, então você está com problemas muito profundos.

    
por 02.08.2010 / 09:04
3

Aqui estão alguns fatores que contribuem para o "tamanho máximo de RAM física suportado pela placa-mãe, regra geral de + 1MB".

Descrições completas do núcleo . Se não houver swap suficiente para lidar com um despejo principal, talvez você não consiga diagnosticar determinados pânicos do sistema.

Alguns sistemas operacionais usam seu espaço de troca para despejar seu núcleo quando o sistema entra em pane. Você (ou os desenvolvedores do sistema operacional) pode usar esse despejo principal para diagnosticar o motivo. A maioria dos sistemas operacionais modernos faz um "mini dump" que é significativamente menor que a quantidade total de RAM ... mas se o problema for complicado, um dump de memória central completo pode ser necessário.

Metadados do core-dump. Às vezes, há também uma pequena quantidade de metadados que acompanham o dump principal. Adicionando um extra de 1M para o tamanho do swap irá cobrir isso.

Preparando-se antecipadamente para atualizações de RAM . Sistemas sem o máximo de RAM instalado podem ser atualizados no futuro. Configure o swap para estar pronto para isso, em vez de tentar lembrar de adicionar mais meses de swap (ou anos) depois.

    
por 25.12.2011 / 18:05
2

É menos crítico para servidores do que para desktops, já que você nunca desejará hibernar um servidor.

No entanto, alocar 2GB de uma unidade de 500GB é mais barato (meia dúzia de centavos de dólar por gigabyte) do que comprar mais RAM. A diferença entre "grande o suficiente" e "demais" é quando a arquitetura não mais a suporta.

Note que desde o kernel 2.6 você também pode usar um arquivo , então você pode evitar o swap até ter alguma análise de uso para justificá-lo.

    
por 02.08.2010 / 09:04
0

Para soletrar a partir do FAQ, você precisa de mais swap do que memória para que a suspensão para o disco funcione corretamente.

As notas de lançamento do Ubuntu / Lucid também mencionam isso, já que o instalador não é inteligente o suficiente para descobrir por si mesmo.

Caso contrário, você realmente não precisa muito, mas o espaço em HDD é barato e, portanto, além de atingir o limite de 2 GB em caixas de 32 bits, não é uma preocupação muito grande.

    
por 02.08.2010 / 16:00

Tags