前 | 2011年 11月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
さっさと SBM に見切りを付ければいいのに > Apple さん
Apple の負け(スペインにて)
テスト中の Plamo64-0.21 改(kernel 3.0.8 + tuxonice)で、何故だか ps や w などを実行した際に妙な値を返してしまう問題に悩む
時折 Unknown HZ value! ... といった表示が出たり出なかったり。ps ux すると、実行されている process の開始時刻がメチャクチャ。
挙動から推測するに /proc/stat の cpu 時間を /proc/uptime の値で割った値を HZ として使っているようなのだが、suspend/resume することで cpu 時間にズレが生じるために HZ の値が妙な時間になり、ps とかの結果が変になっているみたい。
とりあえず procps-3.2.8 の proc/sysinfo.c 中で HZ 値を返すところで強引に kernel の設定値 HZ=100 に固定したら正常な表示になった(酷い対処方法ですね)
これまでのシステム(Plamo-4.7x, kernel 3.0.4 + tuxonice)では suspend/resume で何の問題もなかったので、procps のコードをきちんと読んで原因を調べておいた方がいいかな。
Android 勉強会の宿題を早いとこやっておかないと
ちょろっと procps のコードを読んでみる
init_libproc 内で linux_version_code が 0 になってるから、old_Hertz_hack が呼び出されて変なことになったみたい
はぁ? init_Linux_version よりも init_libproc の方が先に呼び出されているのか? 何で?
init_Linux_version を先に呼び出すような修正コードをほぼ書いたところで、もしかしてと思ってググってみたら案の定ありました。これですね。
このページのリンク先にある debian squeeze用パッチ(proc_version_constructor.patch)で概ね解決しますね。
しかし、初期化の順番くらい意識して書けよなぁ...