208.5日起動したサーバーで再起動するとハングする問題について

alkoshikawa 2,909views 更新:2015年2月16日

まさかこんなものに当たるとは予想していませんでしたが・・・

http://linux.slashdot.jp/story/13/12/25/1018223/

Xeonの一部のCPUとKernelの特定のバージョンの組み合わせで再起動時にハングが発生します。

対象のバージョンは

kernel 2.6.32-220, 2.6.32-279, and 2.6.32-358 series

kernel-2.6.32-220.45.1.el6 (6.2)
kernel-2.6.32-279.37.2.el6 (6.3)
kernel-2.6.32-358.23.2.el6 (6.4)
kernel-2.6.32-431.el6 (6.5)
で修正されたようです。

http://hisayosh.github.io/posts/2013/12/208days-problem/

仮想環境だと

cat /proc/cpuinfo

でVirtualCPUが表示されてしまう環境があるので、
カーネルが直撃している場合は検証コードを実行するなどして
再起動後にTSCの値が累積しているかどうか確認するしかありません。

cd /tmp
mkdir tsc_checker
cd tsc_checker

wget --no-check-certificate https://raw.githubusercontent.com/hisayosh/tsc_checker/master/Makefile
wget --no-check-certificate https://raw.githubusercontent.com/hisayosh/tsc_checker/master/tsc_checker.c
wget --no-check-certificate https://raw.githubusercontent.com/hisayosh/tsc_checker/master/tsc_checker.h

make

./tsc_checker -f 2800000
***warning***
there is the possibility of numeric overflow at the next time of startup if you have not taken measure.

と出てきたらアウトです。

http://hisayosh.github.io/posts/2013/12/tsc_checker/ https://github.com/hisayosh/tsc_checker

対策はカーネルアップデートです。

yum update kernel
reboot

一時しのぎであれば Warm Reset (通常の再起動)時にTSC値が初期化されないという不具合が引き金ですので、 サーバーの停止→起動で発生しないと思われます。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません