Como o kernel decide quais páginas se comprometem a trocar?

2

Se o uso de RAM for maior que o nível escrito em "permuta", o kernel usará SWAP. Está bem. Mas como o kernel “ordena” programas? É «primeiro a chegar, primeiro a ser servido» para RAM? Ou maiores programas no SWAP? Programas mais usados na RAM?

Gostaria de saber como o kernel decide entre RAM ou SWAP no caso de a RAM estar cheia ou quase.

    
por chindit 13.06.2015 / 18:50

1 resposta

2

O gerenciamento de memória do kernel não usa o conceito de "programa" para organizar a memória, mas as páginas. O kernel decide com base em um 'menos usado recentemente' (isso pode ter mudado, mas as últimas referências que encontrei podem ser ditas ), em que quando o kernel está sob pressão de memória (por swappiness, ele troca as páginas que raramente são acessadas para dar espaço a páginas acessadas com mais freqüência ou novas páginas (ou porque não, cache de disco).

Portanto, nenhuma de suas suposições está correta. O kernel não ordena programas para a troca, ele estatisticamente seleciona quais partes da memória se comprometerão a trocar. O método é LRU. O tamanho da memória anônima ou privada comprometida pelo programa não afeta a maneira como o kernel selecionará quais páginas serão confirmadas.

Você pode ver quantos KiloBytes (ou páginas) têm o kernel comprometido a trocar usando smem -s swap -t -k -n .

    
por 13.06.2015 / 20:42