Quando o swap é acionado ou como calcular o swap_tendency?

4

Estou tentando usar o Redis para serviços de produção e tentando evitar a troca, o que é ruim para o desempenho.

Eu aprendi que swap é acionado por swap_tendency, que depende de

swap_tendency = mapped_ratio/2 + swappiness + distress

Como posso obter mapped_ratio / distress de /proc/meminfo para meu script de monitor?

Ou qualquer parâmetro que possa me informar que o sistema irá trocar páginas?

    
por Zhuo.M 03.06.2014 / 08:00

1 resposta

3

mapped_ratio

mapped_ratio pode ser calculado da seguinte forma:

mapped ratio = (nr mapped * 100) / total memory;

Fonte: link

nr_mapped

O valor, nr_mapped pode ser lido em /proc/vmstat :

$ grep nr_mapped /proc/vmstat
nr_mapped 47640

aflição

De acordo com este artigo, intitulado: Memória do Linux - Notas de Implementação

“This is a measurement of how much difficulty the VM is having reclaiming pages. Each time the VM tries to reclaim memory, it scans 1/nth of the inactive lists in each zone in an effort to reclaim pages. Each time a pass over the list is made, if the number of inactive clean + free pages in that zone is not over the low water mark, n is decreased by one. Distress is measured as 100 >> n” 5

Ao pesquisar muitos dos documentos, parece que "aflição" é um contador do kernel, mas não é. Pelo contrário, é um valor que é usado quando cada zona de memória está sendo escaneada, que é progressivamente aumentada à medida que os quadros de páginas da memória são escaneados pelo kernel na tentativa de recuperá-los. Discussão disso está além do escopo deste Q & A, mas se você está curioso na seção do livro "Entendendo o Kernel do Linux", Capítulo 17: Recuperação de quadros de página . O valor de "aflição" vem do valor "prev_priority" quando as zonas são verificadas.

Referências

por 03.06.2014 / 08:50