如何使用kdump / crash调查OOM问题?
问题 多次“内存不足”消息后,服务器崩溃了,我试图查明罪魁祸首。如果在用户区中-哪个进程。如果在内核中-哪个内核模块。 细节 我正在尝试找出如何使用崩溃实用工具来调查是什么触发了服务器上的OOM。 作为安装新服务器对的一部分,我开始了14TB DRBD设备的初始化。大约那个时候,在使用DRBD同步器速率配置并上下移动某些绑定网络接口时,其中一台服务器崩溃了。在30秒内,它产生了39条Out of memory: Kill process ####消息。然后它崩溃了: Kernel panic - not syncing: Out of memory and no killable processes... 系统崩溃触发了一个kdump。现在,我有一个不错的vmcore.flat文件,应该可以直接使用它来调查问题,但是我很难找出所有内存的去向。 我知道的唯一资源是Dedoimedo的站点(该站点提供了很好的说明)以及Kernel Crash Book。这些也恰巧是答案中建议的唯一资源,因此我认为这crash是调查的唯一方法。 如果有另一种方法可以对事件进行事后分析,我愿意接受。正是这是crash我知道的唯一实用程序。我现在所拥有的只是vmcore.flat文件,我所需要知道的是哪个组件占用了所有内存。我怀疑内核模块有问题,更具体地说是绑定模块之一(当我关闭接口时触发了它),DRBD模块(在CentOS 6.3上从树构建的版本8.3.15)或其中一个10G以太网模块(mlnx_en从我关闭的接口树中构建,或在bnx2x保持活动状态的接口中树内构建)。我所需要知道的是,是否有办法证实我的怀疑。 到目前为止,我仅使用崩溃实用程序提取了以下信息: 检查使用了多少内存 $ crash /usr/lib/debug/lib/modules/2.6.32-279.5.2.el6.x86_64/vmlinux vmcore.flat .... crash> kmem -i PAGES TOTAL PERCENTAGE TOTAL MEM 16482587 62.9 GB ---- FREE 54610 …