Desativando a troca por apenas um processo com cgroups?

15

Gostaria de desativar a troca por apenas um processo. A troca deve funcionar normalmente nos outros processos.

Como posso implementar isso com cgroups?

iNode
fonte

Respostas:

9

Na documentação do kernel referente ao memory.swappiness:

5.3 swappiness

Semelhante a / proc / sys / vm / swappiness, mas afetando apenas uma hierarquia de grupos.

A seguir, a troca de cgroups não pode ser alterada.
- root cgroup (usa / proc / sys / vm / swappiness).
- um cgroup que usa hierarquia e possui outros cgroup (s) abaixo dele.
- um cgroup que usa hierarquia e não a raiz da hierarquia.

No Portal do Cliente Red Hat:

memory.swappiness

define a tendência do kernel de trocar a memória do processo usada pelas tarefas neste cgroup em vez de recuperar as páginas do cache da página. Essa é a mesma tendência, calculada da mesma maneira, conforme definido em / proc / sys / vm / swappiness para o sistema como um todo. O valor padrão é 60. Valores menores que 60 diminuem a tendência do kernel de trocar a memória do processo, valores maiores que 60 aumentam a tendência do kernel de trocar a memória do processo e valores maiores que 100 permitem que o kernel troque as páginas que fazem parte de o espaço de endereço dos processos neste cgroup.

Observe que um valor 0 não impede que a memória do processo seja trocada; a troca ainda pode ocorrer quando houver falta de memória do sistema porque a lógica global de gerenciamento de memória virtual não lê o valor cgroup. Para bloquear páginas completamente, use mlock () em vez de cgroups.

:: Você não pode alterar a alternância dos seguintes grupos:
* o root cgroup, que usa a alternância definida em / proc / sys / vm / swappiness.
* um cgroup que possui grupos filhos abaixo dele.

EDIT: Se você estiver interessado em saber exatamente como configurá-lo, defina-o exatamente como a maioria dos outros atributos do cgroup:

 # cd /mnt/cgroup/<cgroupName>
 # cat memory.swappiness
 60
 # echo "59 " > memory.swappiness
 # cat memory.swappiness
 59
Bratchley
fonte
Que tal apenas para arquivos /tmpmontados dentro tmpfs? Agora, você pode
usar o seguinte
É bom que você tenha citado a parte relevante da documentação do kernel aqui - o link está quebrado.
mgarey
O link para a documentação do kernel do linux está quebrado. Use este em vez disso kernel.org/doc/Documentation/cgroup-v1/memory.txt
Andrew Eisenberg
@AndrewEisenberg Sinta-se livre para editar a resposta se você quiser
Bratchley
Hummm ... não vai me deixar. Diz que a edição deve ter mais de 6 caracteres. Provavelmente não é suficiente reputação.
Andrew Eisenberg