我在多线程程序中有一个巨大的 VM 地址空间。通常它在约 5TB 的虚拟空间中运行,其中最多仅涉及 16GB 的驻留集。我映射 HugePages,并允许它们从它们的部分中被丢弃。当 RedHat 6.3 + Kernel 3.0.29 系统强制进行故障转储时,大部分驻留集被转储,但核心文件停止在 2TB。
-rw------- 1 root root 2.0T Aug 21 21:15 core-primes-6-1377119514.21645
在这种情况下,top 报告约 4TB。
21726 root -91 0 4191g 7.1g 13m R 99.7 5.6 2:39.06 50 primes
gdb 报告核心被截断
BFD:警告:/export0/crash/core-primes-6-1377119514.21645 被截断:预期核心文件大小 >= 4488958177280,发现:2133738614784。
是否有一些神奇的 foo 允许内核转储超过 2TB 的这个进程?文件系统是 ext3,有足够的空间。未使用内存的虚拟机永远不会被触及。