Eu tentaria responder a você uma pergunta mais genérica:
Existe uma maneira de "contar" um processo para usar o espaço de troca de qualquer maneira?
O kernel do Linux fornece através da interface / proc / sys uma propriedade que define quão agressivamente as páginas de memória (anônimas apenas!) são trocadas para o disco.
A propriedade vm.swappiness é aplicada globalmente por sistema, mas não por processo. Defina este valor baixo se quiser evitar a troca o máximo possível. Se o processo do seu sistema for suspenso por muito tempo, você poderá se beneficiar com um comportamento agressivo de troca, aumentando esse valor. Esta propriedade global está disponível como /proc/sys/vm/swappiness
e pode ser ajustada com a ferramenta sysctl
.
Com a introdução de cgroups
no kernel 2.6.24, é possível torná-lo mais granular com o subsistema memória . Vamos supor que você tenha disponível uma hierarquia de cgroups com memória subsistema anexado ( /cgroups/mem
) e um cgroup ( /cgroups/mem/your_cgroup
) com tarefas / processos definidos ( /cgroups/mem/your_cgroup/tasks
). Em seguida, você pode alterar o comportamento de swappiness para este grupo de tarefas da seguinte forma:
cd /cgroups/mem/your_cgroup
echo 90 > memory.swappiness
Como atribuir um processo a este cgroup automaticamente? Eu criaria uma regra simples no arquivo /etc/cgrules.conf
your_user:pcmanfm memory /your_cgroup
Este arquivo é então usado pelo daemon do mecanismo de regras cgroup ( cgred
service) para a classificação automática de processos.
Para mais detalhes, consulte a documentação do cgroups do kernel Linux .