Por que o swappiness padrão é 60? Qual seria o efeito se eu diminuir o valor de troca do meu PC de mesa?

16

Eu estava lendo sobre swappiness em vários fóruns e vi alguns vídeos. Muitos afirmaram que é bom que os usuários de desktop diminuam o valor de swappiness abaixo de 60 (que é o padrão). Alguns afirmaram que 60 é bom para servidores. Exatamente por que seria melhor diminuí-lo e por que 60 é bom para servidores? Tentei procurar uma resposta (olhei aqui por exemplo), mas não consegui entender. ... Por favor, use termos fáceis: D

Mina Michael
fonte
editou a pergunta. Está bom agora?
Mina Michael

Respostas:

22

Sua premissa está errada. Não existe um valor de permuta 'bom para servidores'.

Swapiness é a quantidade de trocas que é feita, especialmente a agressividade com que você troca. Para meus servidores, a troca é quase nula, pois asseguro que eles tenham memória suficiente para tudo. Não existe o valor "melhor para servidores". há 60, que é o padrão e, em seguida, "seu valor", que depende do uso e da memória disponível.

Se você possui servidores que às vezes usam LOADS de memória, você pode tê-los acima do padrão, mas eu diria que alguns servidores (servidores de banco de dados?) Podem querer mantê-los muito mais baixos do que um computador doméstico.

Nanne
fonte
bem, ok: o DI estava seguindo este unix.stackexchange.com/questions/88693/… . a segunda resposta (atualmente com 2 upvotes) disse que 60 podem ser mais adequados para servidores. ... E deixe-me ver se entendi. Eu devo definir uma alta permuta se executar processos que exijam memória grande e baixa se executar vários processos pequenos?
Mina Michael
(e dependendo de especificações do meu computador é claro) Eu tenho um core 2 duo cerca de 2,9 GHz com gráficos integrados da Intel pelo caminho
Mina Michael
11
Impossível dizer. Depende de muitas coisas, como também afirmado nessa resposta -> alguns bancos de dados podem fazer seu próprio cache, mas outros não. Depende dos programas e do seu hardware. Existe um padrão e a melhor coisa que você pode fazer é testar o desempenho do seu sistema em que situação. Como foi dito, adicionei mem suficiente aos meus sistemas e sei o que eles exigem, para que eu possa ter swappiness próximo a 0. Mas em sistemas saudáveis, algumas trocas podem ser uma coisa boa. aqui não há conselhos fáceis de configuração 'deus para todos', leia a resposta mais votada. Além disso: ele diz que "pode ser", não "é" em que 2º resposta
Nanne
(e de acordo com suas especificações: a coisa mais importante se você estiver falando sobre a memória que possui e você, mas não há necessidade específica de adicioná-la aqui: poderíamos conversar por dias sobre todo tipo de especificação, a melhor coisa a fazer é ler o resposta mais alta no link unix que você forneceu e continue testando como ele funciona no seu ambiente.) '
Nanne
Bem, foi quando eu disse que não conseguia entender o que li. Eu sou bastante fraco em conhecimento (e até em linguagem para ser honesto XD) ... então eu só preciso continuar tentando! ok obrigado: D
Mina Michael
8

O valor da troca é escalado de uma maneira que confunde as pessoas. Eles veem que tem um intervalo de 0 a 100, então pensam em porcentagem, quando o mínimo efetivo é em torno de 50.

60 significa aproximadamente não trocar até atingirmos cerca de 80% de uso de memória, deixando 20% para cache e outros. 50 significa esperar até ficar sem memória. Valores mais baixos significam o mesmo, mas com agressividade crescente na tentativa de liberar memória por outros meios.

O descrevem muito bem em http://lwn.net/Articles/83588/

David
fonte
O que significam valores mais altos, por exemplo, 80 ou 100?
Jocull 01/08/19
5

A configuração de troca é um ajuste na maneira como o Linux calcula os benefícios / desvantagens da troca em um cenário específico. Uma troca alta não fará com que o sistema troque quando não é necessário, e uma troca baixa, desde que você não desative a troca completamente, não impedirá que o sistema troque quando for absolutamente necessário.

A troca padrão de 60 ou mais é um compromisso muito bom, garantindo um bom desempenho do sistema, garantindo que não seja muito difícil alocar a memória cache enquanto houver memória de programa alocada não utilizada.

Lembre-se de que, se você tiver bastante RAM para todos os seus processos, além de cache, o que normalmente deve acontecer se você tiver bastante RAM física, a troca não deve ser um problema para você. A maneira preferida de corrigir problemas de muita troca é diminuir o uso de RAM pelos processos e / ou aumentar a RAM física. Reduzir a troca terá um efeito negativo se você realmente precisar de mais RAM.

Por favor, veja a resposta que escrevi para uma pergunta muito semelhante:

/ubuntu//a/184221/54256

Excerto:

Por que a maioria das pessoas recomenda reduzir o swappiness para 10-20?

Porque a maioria acredita que trocar = ruim e que, se você não reduzir a troca, o sistema será trocado quando realmente não for necessário. Nenhuma delas é realmente verdadeira. As pessoas associam a troca a momentos em que seu sistema está atolado - no entanto, é principalmente a troca porque o sistema está atolado, e não o contrário. É verdade que há certos momentos em que a troca pode ter uma penalidade perceptível no desempenho, mas o sistema já considerou isso na sua decisão de trocar e decidiu que não fazer isso teria uma penalidade geral maior no desempenho ou na estabilidade do sistema, o que pode mais tarde se torna perceptível. No geral, as configurações padrão devem resultar no melhor desempenho e confiabilidade gerais. Eu recomendo deixá-lo no padrão.

...

Depois que você tiver usado memória suficiente para que não haja espaço suficiente em um cache de bom funcionamento, o Linux poderá realocar uma memória de aplicativo não utilizada da RAM para trocar.

Isso não é feito de acordo com um ponto de corte definido. Não é como se você alcançasse uma certa porcentagem de alocação, então o Linux começa a trocar. Ele tem um algoritmo bastante "confuso". Isso leva em consideração muitas coisas, que podem ser melhor descritas por "quanta pressão existe para a alocação de memória". Se houver muita "pressão" para alocar nova memória, aumentará as chances de que algumas sejam trocadas para criar mais espaço. Se houver menos "pressão", isso diminuirá essas chances.

Seu sistema possui uma configuração de "troca" que ajuda a ajustar como essa "pressão" é calculada. Normalmente, não é recomendável alterar isso, e eu certamente nunca recomendaria que você o alterasse. A troca é geralmente uma coisa muito boa - todas as penalidades ocasionais de desempenho devem ser compensadas por um ganho na capacidade de resposta e estabilidade gerais do sistema para uma ampla gama de tarefas. Se você reduzir o swappiness, deixe a quantidade de memória cache diminuir um pouco mais do que seria de outra forma, mesmo quando for realmente útil. Portanto, você corre o risco de desacelerar o computador em geral, porque há menos cache, enquanto a memória está sendo absorvida por aplicativos que nem sequer o estão usando. Depende de você se esse é um compromisso bom o suficiente para qualquer problema específico que você esteja enfrentando na troca.

O que está acontecendo quando o sistema está atolado e trocando fortemente?

Muitas vezes, as pessoas olham para o seu sistema que está debulhando muito o disco e usando muito espaço de troca e culpa por isso. Essa é a abordagem errada a seguir. Se a troca chegar a esse extremo, isso significa que seu sistema está com pouca memória e a troca é a única coisa que impede que ele interrompa ou interrompa processos aleatoriamente. Sem troca, nessa situação, os processos travam e morrem. A troca é um sintoma de um problema mais profundo. Em um sistema com memória suficiente para todas as suas tarefas, a troca apenas garante que a memória seja utilizada de maneira eficiente, distribuindo a memória para o cache por processos inativos onde ele acha que valerá a pena. Em um sistema em que a troca é incansavelmente debulhar o disco, a culpa não é da troca.

Ao escolher o que deve ser trocado para o disco, o sistema tenta coletar memória que não está sendo realmente usada - leitura ou gravação. Ele tem um algoritmo bastante simples para calcular isso, que escolhe bem a maior parte do tempo.

...

Mas como a troca pode acelerar meu sistema? Não trocar as coisas devagar?

O ato de transferir dados da RAM para a troca é uma operação lenta, mas só é usada quando o kernel tem certeza de que o benefício geral será superior a isso. Por exemplo, se a memória do aplicativo aumentou a ponto de você não ter quase nenhum cache restante e a sua E / S ser muito ineficiente por causa disso, é possível obter muito mais velocidade do sistema liberando alguma memória, mesmo após a despesa inicial de trocar dados para liberá-los.

Sinta-se livre para ler o post completo em /ubuntu//a/184221/54256

thomasrutter
fonte
0

Swappiness é completamente contraditório com todas essas respostas.

O trabalho real de swappiness é descrito no artigo: https://gokulvasanblog.wordpress.com/2016/11/14/empathising-mammoths-mentality-a-study-on-linux-memory-management/

A ambiguidade é corroborada pela declaração de Andrew Morton: https://lwn.net/Articles/83593/

Vou enfiar os dedos nos ouvidos e cantar "la la la" até que as pessoas me digam "coloquei o swappiness em zero e ele não fez o que queria".

Espero que seja útil

user3624410
fonte
11
Bem-vindo à AU. Você poderia resumir os pontos principais do artigo para o qual você aponta e explicar como ele responde à pergunta, que não é para explicar o que é ou não a troca?
Marc Vanhoomissen