重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Core i3/i5/i7のCPUでLinux(CentOS5.4 kernel 2.6.18)を動かした時、
マイクロ秒の精度でスリープができずに困っています。

nanosleep()やclock_nanosleep(CLOCK_MONOTONIC,~)で100μ秒スリープさせ、
実際にスリープした時間をclock_gettime(CLOCK_MONOTONIC,~)で測定したところ、
Core i3/i5/i7いずれも約4msecスリープしてしまいます。(Jiffies?)

同じOSとテストプログラムでもCore2Duoなら誤差は数μ秒でした。

BIOSでマルチコアとHyper-Threadingをいずれも無効にすると、
Core i3/i5/i7でも数μ秒の誤差に収まったのですが、
マルチコアの恩恵が受けられないとCore iの意味がありません。

またカーネルだけ2.6.35に差し替えると100μ秒程度の誤差に改善されました。
しかし、できれば2.6.18のまま精度を上げられないかと考えています。

・カーネル2.6.XXで修正された。
・あるディストリビューションではパッチが出ている。
・カーネルコンフィグで改善できる。 などなど

もし情報お持ちでしたら教えて頂けないでしょうか。

A 回答 (1件)

そこまで、わかっているなら



1)kernel付属のリリースドックをチェックする
2)linux kenelの管理は、gitに移行しているので、2.6.18以降のsleep処理の変更履歴をみる

 をすれば、わかるでしょ。
 それで、その差分を、自分で、2.6.18へ、バックポートする。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Release docsやkernel.orgのGitwebから探してみます。

カーネルについては初心者なので、
このような調査のとっかかりは大変助かります。

お礼日時:2010/11/30 21:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!