了解Linux oom-killer的日志
我的应用被oom-killer杀死了。它是在没有交换的实时USB上运行的Ubuntu 11.10,并且PC具有1 Gig的RAM。唯一运行的应用程序(不是所有内置的Ubuntu东西)是我的程序flasherav。请注意,/ tmp是内存映射的文件,崩溃时大约有200MB的文件(因此占用了约200MB的RAM)。 我正在尝试了解如何分析om-killer日志,以便我可以了解确切地在哪里使用了所有内存,即,哪些不同的块加起来会导致〜1 gig,从而导致oom-killer踢了在?了解这一点后,我便可以减少违规者的使用,以便该应用程序可以在内存为1 GB的计算机上运行。我的具体问题是。 为了尝试分析这种情况,我总结了“ total_vm”列,我只得到609342KB(在/ tmp中添加到200MB时仍然只有809MB)。也许我对“ total_vm”列的理解是错误的-它是否包括已分配但未使用的内存以及共享内存。如果是,那么它应该不会高估实际使用的内存(因此我不应该没有内存不足),对吗?是否还有其他正在使用的内存块未在下面的列表中说明? [11686.040460] flasherav invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0 [11686.040467] flasherav cpuset=/ mems_allowed=0 [11686.040472] Pid: 2859, comm: flasherav Not tainted 3.0.0-12-generic #20-Ubuntu [11686.040476] Call Trace: [11686.040488] [<c10e1c15>] dump_header.isra.7+0x85/0xc0 [11686.040493] [<c10e1e6c>] oom_kill_process+0x5c/0x80 [11686.040498] [<c10e225f>] out_of_memory+0xbf/0x1d0 [11686.040503] [<c10e6123>] __alloc_pages_nodemask+0x6c3/0x6e0 [11686.040509] [<c10e78d3>] ? …