Gostaria de desativar a troca por apenas um processo. A troca deve funcionar normalmente nos outros processos.
Como posso implementar isso com cgroups?
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
/tmp
montados dentrotmpfs
? Agora, você pode