/proc/loadavgの謎
CentOS 5.5なCOSUMIのサーバでcat /proc/loadavgとすると、ごくまれに最後の改行が1つではなく2つになっていることがあります。どうでもいいような細かい話ではありますが(笑)、しかしたぶんこれは意図されていない出力形式だと思います。
$ cat /proc/loadavg
5.02 4.74 4.32 4/245 6023
$ cat /proc/loadavg
5.02 4.74 4.32 9/257 6072
$ cat /proc/loadavg
5.02 4.74 4.32 12/267 6146
そもそもなぜこれに気づいたかというと、この出力内容をログに取り続けているからなんですが、最近、そのログを見ていた時に、偶然、改行が2つの時だけに見られる奇妙な規則性に気がつきました。その規則性とは、「4カラム目のスラッシュの左側(実行中のプロセス数)が9」ということです(ほんとよく気がついたと思う(笑))。
5.02 4.74 4.32 9/257 6072
簡単なスクリプトを書いてさらにもう少し詳しく調べたところ、分かったのは、
- 8か9の時しか改行が2つにならない
- 8の時に改行が2つになる確率は、だいたい1%ぐらい。ごくまれ
- 9の時に改行が2つになる確率は、だいたい50%ぐらい。こっちは多い
ということです。さらにさらに、以前使ってたサーバのログなども調べてみると、同じような条件で同じく改行2つになっている時があるのはあるのですが、発生頻度が今より少なかったです。初代、二代目、三代目(現在)となるにつれて、改行2つになる確率が増えていきます。ついでにいうと、簡単にしか調べてませんが、手元のPCでは改行2つが再現しませんでした。
一体なぜこういうことになるんでしょうか? 皆さんの環境でも同じことが起こりますか? とにかく不思議で不思議でしかたありません…