No Centos 6.3, por que vários métodos de medição de troca retornam resultados diferentes?

1

Eu tenho um sistema de produção rodando centos 6.3 com 96 Gb de RAM e swap de 2 Gb. A intenção é que haja RAM suficiente na caixa para que nenhum processo seja trocado.

Durante a última semana, a quantidade de espaço de troca usada aumentou para 100%, conforme relatado por / proc / meminfo SwapTotal e SwapFree.

No entanto, a quantidade de troca usada pelos processos, conforme relatada por top e pelo script fornecido aqui é apenas cerca de 26 Mb.

O sistema não parece estar trocando, então não tenho certeza de como seria seria levar o valor SwapFree do / proc / meminfo.

Por que existe essa discrepância entre o que / proc / meminfo relatórios e o processo por Swap?

Como posso descobrir quais processos são responsáveis por / proc / meminfo pensar que toda a troca é usada (exceto por matar cada processo por vez e ver quando o SwapFree aumenta, o que não é realmente uma boa idéia em um sistema de produção)?

Atualização: aqui está a saída atual de livre:

             total       used       free     shared    buffers     cached
Mem:      99052152   98330684     721468          0     577400   82224692
-/+ buffers/cache:   15528592   83523560
Swap:      2097144     959580    1137564

e cat / proc / meminfo:

MemTotal:       99052152 kB
MemFree:          731560 kB
Buffers:          577400 kB
Cached:         82222116 kB
SwapCached:       174456 kB
Active:         69762456 kB
Inactive:       25778300 kB
Active(anon):   53783608 kB
Inactive(anon):  8973048 kB
Active(file):   15978848 kB
Inactive(file): 16805252 kB
Unevictable:       31424 kB
Mlocked:           31424 kB
SwapTotal:       2097144 kB
SwapFree:        1137556 kB
Dirty:              2076 kB
Writeback:             0 kB
AnonPages:      12598632 kB
Mapped:         43958780 kB
Shmem:          50010060 kB
Slab:            1390148 kB
SReclaimable:    1308692 kB
SUnreclaim:        81456 kB
KernelStack:        6400 kB
PageTables:       171412 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    51623220 kB
Committed_AS:   68521168 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      478428 kB
VmallocChunk:   34307842136 kB
HardwareCorrupted:     0 kB
AnonHugePages:  11145216 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        5604 kB
DirectMap2M:     2078720 kB
DirectMap1G:    98566144 kB

O uso total de swap registrado em /proc/*/status VmSwap é 11832 Kb. (calculado por awk '/^VmSwap/ {t+=$2} END {print t" kB"}' /proc/*/status )

    
por Chris Card 04.06.2013 / 17:24

1 resposta

0

Uma fonte de troca usada que não aparece em cada processo é a das páginas do SwapCached.

A linha SwapCached: 174456 kB são páginas que estão em swap e ram.

Isso acontece quando as páginas são enviadas para troca, em seguida, são necessárias novamente, mas nunca são modificadas. A cópia no disco ainda é válida, portanto, é mantida. Na verdade, ele pode ser trocado para o disco novamente sem incorrer em uma gravação no disco.

    
por 30.11.2013 / 03:28