0

我在多线程程序中有一个巨大的 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,有足够的空间。未使用内存的虚拟机永远不会被触及。

4

2 回答 2

2

具有 4KB 块大小的底层 etx3 文件系统的最大文件大小为 2TB。切换到 XFS 文件系统会提供更大的最大文件大小,并且核心转储完成高达 ~16TB。但是转储需要 30 分钟。切换到 ext4,本机最大文件大小为 16TB。转储在 < 4 分钟内完成。您只需要记住更新 fstab。mkfs.ext4 -LEXPORT0 -Tlargefile /dev/sda10. 使用 largefile 提示文件系统需要比文件更多的空间。

于 2013-08-22T13:15:39.260 回答
0

ulimit -c是用于验证和更改创建的核心文件的允许最大大小的命令;它记录在bash手册页中。使用类似的东西

ulimit -c 16000000

作为root,您可以运行

ulimit -c unlimited
于 2013-08-21T23:59:34.577 回答