Fiquei me perguntando desde que ouvi dizer que a troca é usada quando você está fora ou na RAM, e trocar muito é ruim, pois tenho muita RAM (8GB) ....
e se eu não criar uma partição swap?
Além disso, preciso disso para hibernação ou não é obrigatório?
linux
swap
swappiness
Mihai Bratulescu
fonte
fonte
Respostas:
Os sistemas operacionais modernos requerem um espaço de troca para fazer uso eficiente da RAM. Mesmo que seu sistema possua bastante RAM, o desperdício de RAM resulta em um cache de buffer menor, o que significa maior E / S de disco. Portanto, não importa quanta RAM você tenha, você ainda deseja que o sistema a use com eficiência. Usá-lo com eficiência significa tirar coisas da RAM que são extremamente improváveis de serem acessadas.
Quando você inicia um sistema típico, um grande número de serviços é iniciado. Os programas executam o código de inicialização e modificam os mapeamentos de memória privada no processo. Vários desses serviços nunca serão executados novamente. Muitos deles não funcionam por horas. Sem troca, o sistema operacional não tem escolha a não ser manter os mapeamentos de memória privada modificados associados a esses serviços na RAM para sempre. Essa é a RAM que nunca pode ser usada como cache de disco.
Então você quer trocar se você precisa ou não.
fonte
Eu tenho um sistema de desktop sem troca há alguns anos e está indo muito bem! Existem alguns comportamentos diferentes; alguns deles são vantajosos e outros podem prejudicá-lo. Tudo depende do que você está fazendo.
Uma grande diferença é como o sistema se comporta quando a memória acaba:
Se não houver partição de troca, o killer do OOM será executado imediatamente. Se você tem um programa com memória insuficiente, é provável que esse seja morto. Isso acontece e você recupera o sistema quase instantaneamente.
Se não é uma partição swap, o kernel empurra o conteúdo da memória em swap. Processo incorreto pode continuar alocando memória. Isso continua acontecendo até a troca acabar, o que pode levar de dez minutos a uma hora se você tiver uma grande partição de troca. Enquanto isso, seu sistema fica lento. Torna-se impossível abrir um terminal e interromper o processo. Normalmente, desconecto o cabo de alimentação quando isso acontece.
Portanto, como vou perder meus dados de qualquer maneira quando as OOMs do sistema, prefiro a opção anterior a pelo menos ter uma (alta) chance de recuperação.
fonte
A troca é necessária para a hibernação; caso contrário, você pode sobreviver sem ela.
fonte
É um equívoco comum pensar que ter uma área de troca afeta negativamente o desempenho. O que afeta severamente o desempenho é não ter RAM suficiente. A área de troca em si não tem efeito negativo no desempenho, a menos que você não se preocupe com a confiabilidade. Pode ter um impacto positivo no desempenho, mesmo quando você acha que possui RAM suficiente (e não há falta de RAM).
Existem essencialmente três casos a serem considerados:
1: Há RAM suficiente para as necessidades internas do kernel, para que todos os seus aplicativos tenham um conjunto de páginas de trabalho na RAM e ainda tenham RAM "livre" para que o cache do buffer armazene a maioria dos dados quentes do sistema de arquivos.
2: igual ao anterior, exceto que você não possui RAM livre suficiente para que o cache do buffer seja totalmente eficiente.
3: Não há RAM suficiente para armazenar as páginas usadas dos aplicativos.
No caso 1, que deve ser a norma para uma máquina de produção, ter ou não uma área de troca não muda nada (pelo menos em sistemas operacionais baseados em Linux e outros sistemas operacionais que comprometem demais a memória).
No caso 2, ter uma área de troca pode melhorar o desempenho geral, permitindo que o sistema pagine páginas usadas com pouca frequência e permita que o cache do buffer desempenhe melhor sua função.
No caso 3, ter uma área de troca permite que o aplicativo continue em execução às custas de uma degradação do desempenho devido à paginação. Por outro lado, a falta de uma área de troca (ou grande o suficiente) fará com que os aplicativos falhem aleatoriamente. Além disso, dependendo das configurações do sistema operacional, o assassino de OOM também pode decidir matar os aplicativos que mais consomem memória, se houver uma forte demanda de RAM, sem sequer dar a eles a chance de salvar seus (seus) dados críticos.
Este último caso é aquele com o qual você deve fazer uma escolha. Certamente, existem alguns casos de uso em que processos são eliminados é a opção preferida, como sistemas em que o tempo de resposta é crucial e onde a perda de uma transação / processo não é grande coisa.
No entanto, como acredito na maioria das situações, é melhor poder dar uma chance ao usuário / administrador perceber a falta de RAM e agir de acordo, sem correr o risco de perder dados.
fonte
Se você não quiser usar uma partição de troca, poderá usar um arquivo de troca: uma imagem do sistema de arquivos armazenada em um arquivo comum e usada como seu espaço de troca.
Os seguintes artigos explicam como fazer isso em detalhes:
fonte
É um pouco perigoso, mas você pode executar sem um espaço de troca. Mas se você finalmente exceder a quantidade de memória, seu sistema travará quase imediatamente sem aviso prévio.
O que a troca oferece basicamente é um prolongado, mas muito mais lento para sua memória. Se você exceder, começará a trocar, isso realmente tirará a vida do seu sistema ... NO ENTANTO, matando os processos errantes, você ainda poderá salvar o seu sistema.
Alguns programas insistem em alocar (mas não usar) espaço de troca, alguns deles são programas de banco de dados, se bem me lembro. Novamente, por não ter espaço de troca, você pode limitar os programas que podem ser executados.
Por fim, procure SWAP é BARATO no fato de que você não precisa fazer backup da área. (Espero que você seja um desses excelentes administradores de sistema pendentes que fazem backup de seus sistemas).
Então crie.
Minha regra geral costumava ser 2 * tamanho da memória ..... mas hoje em dia estou bem em muitos casos com 1 * tamanho da memória, mas geralmente uso 1,5 * (tamanho da memória). Você não precisa criar esse valor, mas eu o faria ... especialmente se houver algum tipo de trabalho de produção que você esteja realizando.
Ah, sim, e para a hibernação, é necessário swap para manter uma imagem total da memória. E, portanto, o tamanho, se você estiver considerando a h8ibernação, deve ser PELO MENOS (1 * tamanho da memória) + 100 MB ... os 100 MB são possíveis sobrecargas necessárias no processo.
fonte
A troca do Linux parece ter um requisito bastante difícil assim que houver pressão de memória. O sintoma é que, se quase toda a memória RAM é usada por processos ativos, o sistema fica paralisado e o disco rígido fica em execução.
Por quê?
As páginas sem um arquivo de backup (geralmente da alocação de memória dinâmica) não podem ser removidas da RAM quando não há troca. O kernel recorre a páginas com um arquivo de backup, mesmo que sejam realmente necessárias em breve novamente, i. e lixeira mesmo sem troca!
Para mais detalhes sobre esse problema sutil, consulte esta postagem do blog.
Conclusão : Sempre tenha uma troca.
E para o tamanho de uma diretriz grosseira, use algo entre 4 e 8 GB, mesmo para sistemas com muita RAM, desde que você não hiberne. Para mais detalhes, consulte a documentação da Red Hat sobre espaço de troca .
fonte