Linux uptimeコマンド 497日問題

最近仕事で調べた事をメモ。

Linuxをサーバーとして使う時ってずっと電源入れっぱなしってことはザラにあるそうですが、
そんな時uptimeコマンドを使ってサーバーを起動してからの時間を調べようとするともしかすると正しく出力されない可能性があるとのこと。

なぜか?

キーワードは32bit

32bitの場合、最大で0xffffffffまでの数値を扱うことが出来るのですが、
内部のタイマーが10msec毎にしているらしくこれでは497日と少しで桁あふれを起こしてしまう。

これが497日問題。
 

これはもう仕組みの問題なのでどうにもこうにも代替案を考えるしかありません。

手っ取り早いのはLinuxのバージョンを上げること。

Linuxのカーネルのバージョンでいうと2.4系はダメで、2.6系からはOKらしい。

まあ2.4系ってかなり古いみたいですし、そんなん未だに使ってんならさっさとリプレースしてしまえ!
ってのが結論です。