Quando o Linux precisa encontrar RAM para armazenar algo, ele procura as páginas na RAM que não foram usadas há muito tempo. Se essas páginas pertencerem aos arquivos, elas serão liberadas. Se essas páginas forem memória de processo, elas serão movidas para swap.
O Linux não sabe quais páginas serão usadas em breve e não sabe quais páginas serão necessárias rapidamente (por exemplo, para que os programas interativos sejam reativos). Eu não acho que haja alguma maneira de dar prioridade a um processo específico para ficar na RAM. As páginas podem ser bloqueadas para a RAM (isso requer raiz ou a capacidade apropriada), mas não é recomendável bloquear o material para a RAM, pois isso reduz o espaço para o restante.
Você pode forçar um processo específico a ser carregado na RAM por lendo sua memória - veja meu unswap
script .
Você pode reduzir a propensão a trocar configurando a vm.swappiness
parâmetro sysctl. No entanto, tenha em atenção que a redução da permuta não é, de modo algum, garantida para tornar o seu sistema mais ágil. Não há milagre: se o seu sistema trocar menos, ele gastará mais tempo carregando dados de arquivos (como código de programa).
Se você tem uma quantidade relativamente grande de memória, uma configuração que eu não encontrei bem ajustada por padrão em 3.0-3.16 + kernels é outra vm parâmetro sysctl : vm.vfs_cache_pressure
. Este parâmetro é um pouco semelhante ao swappiness, mas diz respeito aos objetos do kernel, especialmente o cache inode e dentry. Aumentar o valor reduz efetivamente a quantidade de memória dedicada a esse cache. Você pode ver quanta memória é usada pelo cache inode e dentry com slabtop
ou com
</proc/slabinfo awk '{print $1, $3*$4}' |sort -k2n | tail
Se você achar que o seu sistema está lento na parte da manhã, isso pode ocorrer porque tarefas cron diárias, como updatedb
, encheram a memória com entradas de cache de inode. Tente algo como sysctl vm.swappiness=500
. Você pode fazer uma limpeza única do cache com echo 2 >|/proc/sys/vm/drop_caches
(não faça isso regularmente, pois isso pode matar o desempenho).