我有一个内存占用相当大的程序,大约30GB,核心转储。
当程序正在转储(顶部显示为D-Defunct)时,转储文件是可见且可读的。它位于预期的目录中,具有预期的文件名格式。一切都在本地磁盘上。我甚至可以在gdb中加载文件。显然,转储需要花费几分钟来处理这个大小的进程。
文件最多大约13GB,然后进程退出......核心文件消失了!噗。
平台:Redhat EL6(2.6.32-220.4.2.el6.x86_64)
文件系统空间充足,超过500GB免费。
$ df .
Filesystem 1K-blocks Used Available Use% Mounted on
blahblahblah 834006872 270024424 521617316 35% /data
ulimit没有显示任何适用的限制:
$ ulimit -a
core file size (blocks, -c) unlimited
file size (blocks, -f) unlimited
<snipped>
编辑:较小的核心转储不会消失。包括同一个程序。这似乎特定于巨大的核心转储。
tune2fs 1.41.12 (17-May-2010)
<snip>
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1020
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
<snip>