Linuxカーネルでのjiffieの解決策は何ですか?
現在のタイマーソース(cat /sys/devices/system/clocksource/clocksource0/current_clocksource
)、LinuxはTSCを使用し、ナノ秒の解像度を持っています
http://lxr.free-electrons.com/source/include/linux/jiffies.h によると、jiffieは1us以上ですが、大きくすることもできます。
現在の解像度を決定する方法はありますか?.
マニュアルページを見るとman 7 time
HZの値は、カーネルのバージョンとハードウェアプラットフォームによって異なります。 i386での状況は次のとおりです。2.4.xまでのカーネルでは、HZは100で、Jiffy値は0.01秒でした。 2.6.0から、HZは1000に引き上げられ、Jiffyは0.001秒になりました。カーネル2.6.13以降、HZ値はカーネル構成パラメーターであり、100、250(デフォルト)、または1000にすることができ、それぞれ0.01、0.004、または0.001秒のjiffies値を生成します。カーネル2.6.20以降、さらに周波数が利用可能になりました。300は、一般的なビデオフレームレート(PAL、25 HZ、NTSC、30 HZ)で均等に分割される数値です。
Times(2)システムコールは特殊なケースです。カーネル定数USER_HZによって定義された細分性で時間を報告します。ユーザースペースアプリケーションは、この定数の値を決定できます
sysconf(_SC_CLK_TCK)を使用します。
CLK_TCK
定数を問い合わせることができます:
$ getconf CLK_TCK
100
これにより、HZの値、つまり100がわかります。この値は、1秒間のジフィーの数です。
これらの情報源によると、jiffiesの解像度は1/HZ
(HZ
の値が何であれ)です。
これは、カーネルに依存するヘッダーファイルの1つで定義されています。
/usr/include/asm-generic/param.h
から含まれています
/usr/include/linux/param.h
そして最終的には<sys/param.h>
から。これは、アーキテクチャ固有のディレクトリにある可能性があります。
/usr/include/x86_64-linux-gnu/sys/param.h
ソースは、それがコンパイル時定数であり、特定のシステムに依存することを明らかにしています。