c - numactl -- 硬件显示不正确的信息

标签 c memory memory-management parallel-processing numa

我正在使用 NUMA 计算机。它有两个节点,每个节点上有 16GB 内存。当我运行一个大型程序时,我同时使用了 htopnumactl --hardware 来观察内存消耗。但是我得到了两个不同的结果。

htop 显示我的程序总共消耗了大约 20GB 的内存。但是,numactl --hardware 显示几乎使用了 32GB。那么,哪一个是正确的?还是 numactl --hardware 显示的不是实际驻留内存而是其他类型的内存?

Results

最佳答案

numactl --hardware 内存输出来自 libnuma 中的 numa_node_size64() 函数,后者又从 MemTotal/sys/devices/system/node/node%d/meminfo 中的 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

关于c - numactl -- 硬件显示不正确的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24486160/

相关文章:

c - 时间延迟 (Linux)/(Windows)

memory - Rust取消提交并将内存返回给操作系统的策略是什么?

c - 使用 malloc 在 C 中进行序列化

c++ - 为应用预留硬盘空间

c++ - const 引用可以分配一个 int 吗?

cocoa - NSXMLParser 数据所有权

c++ - 为 C++ 可执行文件提供变量作为 MATLAB 系统命令的输入参数

c - 为什么 inode 编号从 1 而不是 0 开始?

c - 即使使用 malloc 和 strcpy 时,多个节点值也都指向相同的值

Java动态加载和卸载.java文件,垃圾收集?