numactl --hardware 显示不正确的信息
Posted
技术标签:
【中文标题】numactl --hardware 显示不正确的信息【英文标题】:numactl --hardware showing incorrect information 【发布时间】:2014-06-30 08:46:31 【问题描述】:我正在使用 NUMA 计算机。它有两个节点,每个节点上有 16GB 内存。当我运行一个大型程序时,我同时使用了htop
和numactl --hardware
来观察内存消耗。但是我得到了两个不同的结果。
htop
显示我的程序总共消耗了大约 20GB 的内存。但是,numactl --hardware
显示几乎使用了 32GB。那么,哪一个是正确的?还是numactl --hardware
显示的不是实际常驻内存而是其他类型的内存?
【问题讨论】:
【参考方案1】:numactl --hardware
内存输出来自 libnuma 中的numa_node_size64()
函数,该函数又从/sys/devices/system/node/node%d/meminfo
中的MemTotal
和MemFree
值获取信息。
假设您在 Linux 上,您可以尝试cat /sys/devices/system/node/node0/meminfo
(与 node1 相同)以查看更详细的内存信息。您应该能够将其中一些值与您的 htop 输出相关联。如果这没有帮助,则必须查看内核源代码MemFree
的值是如何派生的。
这是我的单节点系统的示例输出。你看有很多信息:
Node 0 MemTotal: 7069704 kB
Node 0 MemFree: 4099480 kB
Node 0 MemUsed: 2970224 kB
Node 0 Active: 1677108 kB
Node 0 Inactive: 934216 kB
Node 0 Active(anon): 1056284 kB
Node 0 Inactive(anon): 46232 kB
Node 0 Active(file): 620824 kB
Node 0 Inactive(file): 887984 kB
Node 0 Unevictable: 16 kB
Node 0 Mlocked: 16 kB
Node 0 Dirty: 220 kB
Node 0 Writeback: 0 kB
Node 0 FilePages: 1556076 kB
Node 0 Mapped: 249100 kB
Node 0 AnonPages: 1055236 kB
Node 0 Shmem: 47276 kB
Node 0 KernelStack: 3712 kB
Node 0 PageTables: 33648 kB
Node 0 NFS_Unstable: 0 kB
Node 0 Bounce: 0 kB
Node 0 WritebackTmp: 0 kB
Node 0 Slab: 218156 kB
Node 0 SReclaimable: 168548 kB
Node 0 SUnreclaim: 49608 kB
Node 0 AnonHugePages: 0 kB
Node 0 HugePages_Total: 0
Node 0 HugePages_Free: 0
Node 0 HugePages_Surp: 0
【讨论】:
【参考方案2】:原来numactl --hardware
将缓存内存视为“已用内存”而不是“空闲内存”。这就是为什么它显示出比htop
显示更多的内存消耗。
很好的阅读: http://www.linuxatemyram.com/
【讨论】:
以上是关于numactl --hardware 显示不正确的信息的主要内容,如果未能解决你的问题,请参考以下文章