Kernel do Linux (/ proc / meminfo) Não está relatando toda a memória

3

Eu tenho duas máquinas que são idênticas em todos os aspectos (hardware, distribuição, carga de trabalho da aplicação, configurações / proc / sys / vm, etc), exceto pela versão do kernel. Um é o 2.6.33 e o outro é o 3.1.0. A máquina 2.6.33 tem um desempenho significativamente melhor para a carga de trabalho determinada (ambas são conectadas por E / S principalmente em leituras). Eu notei que o Cache / Ativo / Ativo (arquivo) é um pouco menor na máquina 3.1.0 (acima de 20GB) e não parece ser contabilizado em nenhuma outra métrica reportada. Isso também é confirmado pelo fato de que há muito mais leituras acontecendo na máquina 3.1.0 (devido à menor memória disponível para o cache de páginas). Eu olhei para todos os ajustes, / proc / buddyinfo para fragmentação, / proc / slabinfo para uso de slab (usa um pouco mais de GB, mas não ~ 20GB) e nada parece. Qualquer ideia seria muito apreciada.

Isto é da máquina rodando o kernel 2.6.33 e as coisas parecem normais.

> cat /proc/meminfo
MemTotal:       74372248 kB
MemFree:          200492 kB
Buffers:            2976 kB
Cached:         65324256 kB
SwapCached:            0 kB
Active:         32949324 kB
Inactive:       32689844 kB
Active(anon):     287904 kB
Inactive(anon):    27272 kB
Active(file):   32661420 kB
Inactive(file): 32662572 kB
Unevictable:       19832 kB
Mlocked:           19832 kB
SwapTotal:       8393952 kB
SwapFree:        8393952 kB
Dirty:              8324 kB
Writeback:             0 kB
AnonPages:        332036 kB
Mapped:            12576 kB
Shmem:               304 kB
Slab:            8217640 kB
SReclaimable:    7859644 kB
SUnreclaim:       357996 kB
KernelStack:        4592 kB
PageTables:        10652 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    45580076 kB
Committed_AS:     934328 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      314652 kB
VmallocChunk:   34359294955 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        6384 kB
DirectMap2M:     2080768 kB
DirectMap1G:    73400320 kB

Isto é da máquina rodando o kernel 3.1.0. Observe que os tamanhos em cache / ativo são menores que 20 G e não parecem ser compostos em nenhuma outra métrica.

> cat /proc/meminfo
MemTotal:       74370628 kB
MemFree:          415680 kB
Buffers:          384916 kB
Cached:         42088392 kB
SwapCached:            0 kB
Active:          5636160 kB
Inactive:       37170092 kB
Active(anon):     300656 kB
Inactive(anon):    36620 kB
Active(file):    5335504 kB
Inactive(file): 37133472 kB
Unevictable:       19880 kB
Mlocked:            7616 kB
SwapTotal:       8393956 kB
SwapFree:        8393956 kB
Dirty:              6524 kB
Writeback:             0 kB
AnonPages:        354084 kB
Mapped:            14588 kB
Shmem:               472 kB
Slab:           11419580 kB
SReclaimable:    9835632 kB
SUnreclaim:      1583948 kB
KernelStack:        2944 kB
PageTables:        12084 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    45579268 kB
Committed_AS:    1006028 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      290448 kB
VmallocChunk:   34321698548 kB
HardwareCorrupted:     0 kB
AnonHugePages:    135168 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      100592 kB
DirectMap2M:     6180864 kB
DirectMap1G:    69206016 kB
    
por Eric 10.03.2013 / 23:31

1 resposta

5

Acontece que a memória estava sendo consumida pelos buffers de metadados do XFS. Eles foram movidos do cache da página do kernel para buffers específicos do XFS no kernel 2.6.39. O patch que mudou o comportamento pode ser encontrado aqui:

link

A diferença de desempenho se deve a um equilíbrio diferente entre os dados do arquivo e o cache de metadados, como resultado da alteração do XFS.

    
por 15.03.2013 / 07:10

Tags