まず、カーネルのダンプをとれるようにする
# yum install kexec-tools # chkconfig kdump on # reboot
解析用にcrashとkernel-debuginfoをインストール
# yum install crash # yum --enablerepo=base-debuginfo install kernel-debuginfo-`uname -r`
強制的にクラッシュさせてみる
# echo 1 > /proc/sys/kernel/sysrq # echo c > /proc/sysrq-trigger
再起動するので/var/crashを確認
# ls /var/crash/ 127.0.0.1-2015-10-04-12:23:48
クラッシュごとにディレクトリが作成され、中にダンプファイルvmcoreが作成されている。
こいつとyum install kernel-debuginfoでインストールされたdebuginfoこみのkernelイメージを使うとクラッシュ時の状況を解析することができる(ちなみに引数なしだと現在動作中のkernelを解析できる)
# crash /usr/lib/debug/lib/modules/2.6.32-504.el6.x86_64/vmlinux /var/crash/127.0.0.1-2015-10-04-12\:23\:48/vmcore
ダンプ作成時の起動中のプロセスを見たり
crash> ps PID PPID CPU TASK ST %MEM VSZ RSS COMM 0 0 0 ffffffff81a8d020 RU 0.0 0 0 [swapper] 1 0 0 ffff88001c049500 IN 0.3 19232 1516 init 2 0 0 ffff88001c048aa0 IN 0.0 0 0 [kthreadd] ...
クラッシュ時のスタックトレースを見たり
crash> bt PID: 5147 TASK: ffff880019503540 CPU: 0 COMMAND: "bash" #0 [ffff8800197339e0] machine_kexec at ffffffff8103b68b #1 [ffff880019733a40] crash_kexec at ffffffff810c9852 #2 [ffff880019733b10] oops_end at ffffffff8152e070 #3 [ffff880019733b40] no_context at ffffffff8104c80b #4 [ffff880019733b90] __bad_area_nosemaphore at ffffffff8104ca95 #5 [ffff880019733be0] bad_area at ffffffff8104cbbe #6 [ffff880019733c10] __do_page_fault at ffffffff8104d36f #7 [ffff880019733d30] do_page_fault at ffffffff8152ffbe #8 [ffff880019733d60] page_fault at ffffffff8152d375 [exception RIP: sysrq_handle_crash+22] RIP: ffffffff81349616 RSP: ffff880019733e18 RFLAGS: 00010096 RAX: 0000000000000010 RBX: 0000000000000063 RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000063 RBP: ffff880019733e18 R8: 0000000000000000 R9: ffffffff81648820 R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000 R13: ffffffff81b04060 R14: 0000000000000286 R15: 0000000000000004 ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
run queueを見たりできる
runq CPU 0 RUNQUEUE: ffff8800022168c0 CURRENT: PID: 5147 TASK: ffff880019503540 COMMAND: "bash" RT PRIO_ARRAY: ffff880002216a48 [no tasks queued] CFS RB_ROOT: ffff880002216958 [no tasks queued]