uptimeのカウントできる限界
ちょっと調べたのでメモ。
linuxのuptimeの変数(jiffies)の型がunsigned longのため、32bitまでしか計れなくて、約497日でリセットされる。
jiffiesは100で割ると秒になるんだって。へー。
32bitは、最高までカウントしたとして0xffffffff=4294967295なので、
4294967295/100/60/60/24≒497.1日
kernel 2.6は64bitらしいので、もっとでかい桁を計れる模様。
linuxのソース(CentOS 5.2のinclude/linux/jiffies.h)見たら、
extern u64 __jiffy_data jiffies_64; extern unsigned long volatile __jiffy_data jiffies;
64bitのCPUの場合、64bitなのか?
Cはよく分からなかったりするのでこれ以上深入りしない。
ただ、大学の先輩のlinux機が800日くらいまで動いていた。
64bit型の変数でカウントしていた場合、計算は省くが、58億年くらいでカウンタがリセットされる。