Tenho 64 GB de RAM e 240 GBSSDno meu computador, que usarei para cálculos que exigem muita memória (aprendizado de máquina, mineração de dados, etc.). A maioria dos conselhos que encontrei na Internet são sobre computadores com 2 a 4 a 8 GB de RAM e recomendam 2x o tamanho da partição de troca de RAM (ou seja, 128 GB).
É razoável criar uma partição swap de 128 GB? que vantagens obtenho ao criar uma enorme partição swap?
Entendi corretamente que, caso eu fique sem RAM física:
- Se eu não tiver swap, recebo um erro de 'falta de memória'
- Se eu tiver swap, algumas páginas da RAM serão copiadas para a partição swap e o programa continuará a ser executado (embora mais lentamente).
Algumas pessoas dizem que é uma má ideia fazer swap no SSD, já que ele possui uma quantidade limitada de ciclos de leitura/gravação. Quão rápido o uso do swap esgotará os ciclos de leitura/gravação do SSD (até onde eu sei, são cerca de 50.000 IOPS de gravação)?
Estou usando Linux (Ubuntu 14.04(Confiável Tahr)).
Definir uma troca de 16 GB por enquanto, pois certamente deveria ser suficiente (por exemplo, RedHat sugere 4 GB), e 16 GB de espaço em disco não é realmente um grande problema.
Responder1
Você provavelmente só precisará de uma pequena quantidade de swap. Quando você tem RAM suficiente para o conjunto de trabalho típico do seu computador, o que tenho certeza que você tem, você só precisa trocar por duas coisas:
Você precisa de swap para obter informações que provavelmente nunca serão acessadas da RAM para liberar mais espaço para o cache do disco. Muitos aplicativos são executados na inicialização do sistema e nunca mais serão acessados. Você não quer que nenhuma página suja fique presa na RAM para sempre. Então você precisa de swap para mantê-los.
Você precisa de swap para cobrir alocações que nunca serão preenchidas. Este espaço simplesmente tem que estar disponível, mesmo que não seja utilizado. Sem ele, o sistema terá que se recusar a alocar memória mesmo quando tiver bastante RAM física livre, porque não possui armazenamento de apoio suficiente para permitir que todas as suas alocações sejam usadas de uma só vez.
Nenhum deles requer uma grande quantidade de swap. 16 GB, por exemplo, devem ser mais que suficientes. O objetivo não é permitir que você execute conjuntos de trabalho maiores em detrimento da velocidade. O objetivo é permitir que você use seus 64 GB de maneira eficaz e não precise obstruí-los com lixo ou reservá-los para casos extremos que nunca acontecerão.
(Concordo com Bert que 4 GB provavelmente serão suficientes.)
Responder2
Chapéu vermelhorecomenda 4 GB em uma máquina com 64 GB.
No entanto, a troca de dimensionamento é mais uma arte do que uma ciência. Depende da finalidade da máquina, de quanto espaço em disco e memória você possui e de outros fatores. Lembrar,você sempre pode adicionar mais trocas posteriormente.
O uso da regra de memória física 2X está desatualizado com a quantidade de memória que os sistemas possuem atualmente. Mas executar com zero swap não é recomendado, a menos que você saiba o que está fazendo. A recomendação de 4 GB é um bom ponto de partida.
Responder3
No Linux, você precisa de swap suficiente para que a memória virtual total disponível (RAM + SWAP) seja suficiente para todos os processos que você deseja executar de uma vez e seu espaço virtual máximo.
Se você tiver menos troca do que isso, ou nenhuma troca, então acontece a seguinte situação: o sistema fica sem memória tentando alocar uma página. Mas, esta ainda é uma falha leve, mesmo que não haja troca, porque o sistema tem muitas páginas de "vítimas" que podem ser removidas para liberar espaço: ou seja, as páginas de todos os mapeamentos de memória apoiados por arquivos, como executáveis e bibliotecas compartilhadas!
À medida que seu sistema exige cada vez mais espaço para dados (que não podem ser trocados), ele evacuará cada vez mais o código executável (bibliotecas compartilhadas e executáveis), levando a uma terrível destruição, à medida que o conjunto de trabalho é reduzido a um conjunto cada vez mais restrito de Páginas.
O espaço de troca suaviza esse problema, fornecendo um local para a troca de páginas anônimas (não mapeadas em arquivos): as páginas usadas para alocações de memória, para que o código executável possa permanecer na memória.
Mesmo assim, se você não executa tarefas que consomem muita memória com frequência, poderá conseguir executar sem troca na maior parte do tempo e configurar manualmente um arquivo de troca (em vez de uma partição dedicada) quando precisar. Para criar um arquivo de troca instantaneamente, torne-se root e:
dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768 # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile
Quando você não precisar mais:
swapoff /path/to/swapfile
rm /path/to/swapfile
Notas:
Você definitivamente não precisa configurar pelo menos tanta troca quanto RAM. Esta regra remonta aos sistemas operacionais onde era um requisito difícil devido à forma como a troca foi projetada.
Existem maneiras de fazer o Linux falhar quando não há memória disponível, nomeadamente através da manipulação dos valores destas entradas sysctl:
vm.overcommit_memory vm.overcommit_ratio
Responder4
A carga de trabalho que você deseja aplicar à máquina precisa de uma certa quantidade de memória para funcionar (lembre-se de adicionar quantidade suficiente à equação para lidar com picos de carga) e você precisa configurar seu computador para ter pelo menos isso.
Os sistemas operacionais modernos fornecem memória virtual como uma combinação de memória física e espaço de troca; portanto, se você precisar de mais memória do que a máquina tem disponível, vocêdeveadicione espaço de troca suficiente para preencher a lacuna. Ou seja, se você precisar de 80 GB no máximo e a máquina tiver 64 GB, você precisará de 16 GB de swap.
Normalmente, os instaladores de sistemas operacionais pedem que você crie uma área de troca inicial (pois esta é a mais simples e permite a instalação até mesmo de computadores minúsculos), e descobriu-se que uma boa regra para operações típicas do Unix é ter memória virtual dimensionada para ser três vezes a memória física, então isso normalmente é sugerido. Você, no entanto, sabe mais sobre o padrão de uso para poder alterá-lo conforme apropriado.
Não há nada de errado em trabalhar sem swapspace se a pressão da sua memória for sempre menor. O Linux usará de forma transparente qualquer memória não utilizada como cache de disco.