aumenta a capacidade de resposta do desktop no Linux ao trocar

15

Todas as distribuições GNU / Linux que eu testei até agora tem o problema que sempre que o carneiro é preenchido eo sistema começa a troca, toda a área de trabalho e interface gráfica do usuário deixa de responder como o inferno de uma forma que às vezes eu tenho que esperar cerca de 5 10 segundos depois de ter movido o mouse físico até que o ponteiro do mouse esteja em movimento.

Este é um tipo de comportamento irritante, especialmente em sistemas com pouca memória RAM.

Existe alguma maneira de dar algumas aplicações / postos de trabalho, como o ambiente de trabalho etc., uma prioridade mais alta para ficar na memória RAM do que outras aplicações, para que o aplicativo realmente monopolizando toda a memória é trocado antes do ambiente de desktop etc.?

EDITAR: Estou falando do caso em que toda a RAM é usada, por isso sempre será iniciada a troca se não estiver desabilitada (não quero que processos sejam mortos aleatoriamente). Eu tive esse problema não apenas em ambientes de memória RAM baixa, mas também com 8GiB de RAM na minha máquina de desktop, em parte devido a muitas VMs, em parte por causa do vazamento de memória. O ZRAM não é uma solução, pois está apenas atrasando o problema. A única solução que posso imaginar para esse problema é algum utilitário de espaço de usuário ou API do kernel que permite impedir que determinados trabalhos sejam trocados ou, pelo menos, torná-lo muito improvável. Alguém conhece outra solução ou sabe alguma coisa sobre essa ferramenta ou API existente ou sendo planejada?

2 EDIT: ulatencyd não parece funcionar com versões mais recentes do systemd, de acordo com link e ligação . Isso pode ser porque o systemd assumiu o controle total dos cgroups a partir de uma perspectiva do espaço do usuário se eu entendi corretamente.

    
por FSMaxB 30.09.2013 / 15:49

1 resposta

1

Até onde eu sei, isso não é um problema específico do Linux, é o modo como o SWAP (ou memória virtual) funciona. Se o sistema operacional precisar pesquisar dados no disco rígido, em vez da RAM, isso diminuirá a velocidade. Nada que você possa fazer sobre isso, acessar o disco é muito mais lento do que acessar a RAM.

Você não poderá definir a prioridade com a qual os processos são trocados, isto é determinado pelo kernel que tentará maximizar a eficiência, você não será capaz de fazer melhor. O que você pode fazer é definir a prioridade da CPU de um processo e isso pode ajudar. Seu sistema está sendo reduzido por causa do tempo que leva para ler de / para SWAP, isso significa que a CPU terá que esperar que os dados relevantes sejam recuperados pelo processo solicitando-o antes que ele possa continuar. Se você definir o seu DE para ter uma prioridade mais alta para o acesso da CPU, isso deve empurrar suas operações para o topo e acelerar um pouco as coisas.

Portanto, a prioridade da CPU é definida com os comandos nice e renice :

 Renice alters the scheduling priority of one or more running processes.
 The following who parameters are interpreted as process ID's, process
 group ID's, or user names.  Renice'ing a process group causes all pro‐
 cesses in the process group to have their scheduling priority altered.
 Renice'ing a user causes all processes owned by the user to have their
 scheduling priority altered.  By default, the processes to be affected
 are specified by their process ID's.

As prioridades vão de -20 (prioridade mais alta) a 20 (prioridade mais baixa). Para alterar a prioridade de um processo em execução, você poderia fazer:

renice -15 $PID

onde $PID é o PID do processo cuja prioridade você deseja aumentar. Você pode usar pgrep para descobrir qual é. Por exemplo:

renice -15 $(pgrep gnome-session)

A outra opção seria definir o 'swappiness' do sistema que determina quando ele iniciará a troca . Um valor de permuta de 1 significa que ele só irá trocar para evitar erros de falta de memória. Valores mais altos significa que ele começará a trocar mesmo quando ainda houver memória física disponível. Você pode definir isso como um valor relativamente baixo para fazer com que o sistema troque o mínimo possível. Adicione esta linha a /etc/sysctl.conf :

vm.swappiness=1
CUIDADO: Isso não é uma boa idéia se você não tem muita memória RAM, o swap é uma coisa boa em geral, você precisará brincar um pouco com os valores para encontrar o equilíbrio certo para o seu sistema. / p>     
por 30.09.2013 / 16:51