10月 7, 2012

uptimeカウンタ

仕事場の出来事メモ

サーバが突然リブートしだした。
タイトルのとおりuptimeカウンタのオーバーフロー、俗に言う497日問題によるもの。

linuxカーネル2.4まではuptimeカウンタにもちいるtime.cのjiffies変数が32bit長であるため
2の32乗=4,294,967,296まで表示が可能。
uptimeカウンタは10msで1upするため42,949,672.96秒の表示ができる。
これを3600秒で割れば11930.46時間。
続いて24時間で割れば497.10日

linuxカーネル2.6ではこのjiffies変数が64bit長であるため問題は解消される。
計算してみると2の64乗=18,446,744,073,709,551,616
18,446,744,073,709,551,616/100/3600/24/365=5,849,424,173.55
58億年。地球の年齢に匹敵する。

これはCPUのアーキテクチャが64bit版だろうが32bit版だろうが関係ない。

2.4系カーネルの場合は1年に1回メンテナンスリブートしなければいけない。
そんな古いのを使わずにさっさとリプレイスというのもあるけれども。

Leave a comment

JVN [Japan Vulnerability Notes]

Categoly

Posted dates

2020年2月
« 8月    
 1
2345678
9101112131415
16171819202122
23242526272829

NEC Direct(NECダイレクト)

NEC Direct(NECダイレクト)