Linux内核(/ proc / meminfo)不报告所有内存

除了内核版本之外,我有两台在各种方面都相同的机器(硬件,分配,应用程序工作负载,/ proc / sys / vm设置等)。 一个是2.6.33,另一个是3.1.0。 对于给定的工作负载,2.6.33机器的性能明显更好(两者都主要是读取I / O)。 我注意到3.1.0机器(超过20GB)上的caching/主动/主动(文件)比较小,似乎没有被报告的任何其他指标考虑在内。 这一点也证实了这一事实,即在3.1.0机器上有更多的读取事件(由于页面caching可用的内存很less)。 我已经看过每个可调参数,/ proc / buddyinfo用于碎片,/ proc / slabinfo用于slab的使用(多用了几GB,但不是〜20GB),没有什么可看的。 任何想法将不胜感激。

这是从运行2.6.33内核的机器看起来很正常。

> 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 

这是从运行3.1.0内核的机器。 请注意caching/有效大小超过了20G,似乎没有任何其他指标。

 > 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 

事实certificate,内存正在被XFS元数据缓冲区使用。 他们从内核页面caching移动到2.6.39内核中的XFS特定缓冲区。 修改行为​​的补丁可以在这里find:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0e6e847ffe37436e331c132639f9f872febce8​​2e

性能差异是由于XFS更改导致文件数据和元数据caching之间的不同平衡。