É proporcional e não se baseia no tamanho da memória. O código está em mm/vmscan.c
. Após verificar algumas condições patológicas, como estar completamente sem espaço de troca (então apenas as páginas lastreadas em arquivos serão verificadas como candidatas a serem despejadas da memória), ficando quase sem memória (a memória anônima e de arquivo será verificada igualmente ), ou o cache de páginas se tornou muito grande e cheio de páginas inativas (somente as páginas lastreadas em arquivos serão escaneadas), nós atingimos isto:
/*
* With swappiness at 100, anonymous and file have the same priority.
* This scanning priority is essentially the inverse of IO cost.
*/
anon_prio = swappiness;
file_prio = 200 - anon_prio;
Essas prioridades são ajustadas com base no sucesso que o scanner de memória teve recentemente na liberação de memória de cada tipo. Em seguida, a memória de cada tipo é digitalizada proporcionalmente e as páginas que não foram usadas recentemente serão despejadas.
Resumindo, tudo depende da carga de trabalho. O valor do swappiness informa ao sistema qual prioridade atribuir à tentativa de trocar a memória anônima, mas os padrões de acesso à memória determinarão o que realmente acontece.