Linuxカーネルのjiffieの解像度は何ですか?
LinuxはTSCを使用し、現在のタイマーソースに応じてナノ秒の解像度を持っています(cat /sys/devices/system/clocksource/clocksource0/current_clocksource
)。
~によるとhttp://lxr.free-electrons.com/source/include/linux/jiffies.hjiffieは1us未満ではありませんが、大きくすることもできます。
現在の解像度を確認する方法はありますか?
答え1
マンページを見るとman 7 time
HZ値はカーネルバージョンとハードウェアプラットフォームによって異なります。 i386では、状況は次のとおりです。 2.4.x 以前のカーネルでは、HZ は 100 で、2.6.0 から HZ は 0.001 秒の 1000 に増加します。カーネル2.6.13以降、HZ値は100、250(デフォルト)、または1000のいずれかのカーネル構成パラメータであるため、それぞれ0.01、0.004、または0.001秒のjiffies値が生成されます。カーネル2.6.20以降、より多くの周波数を使用できます。 300は、通常のビデオフレームレート(PAL、25HZ、NTSC、30HZ)を均等に分割する数値です。
times(2) システムコールは特別な場合です。カーネル定数 USER_HZ で定義された単位で時間を報告します。ユーザー空間アプリケーションは、
sysconf(_SC_CLK_TCK)を使用してこの定数の値を決定できます。
CLK_TCK
定数を照会できます。
$ getconf CLK_TCK
100
これはHZ値、すなわち100を知らせる。この値は、1 秒間の jiffies の数です。
引用する
答え2
これらの情報源によると、決議案はジフィスはい1/HZ
(HZ
発生する値に関係なく):
これはカーネル関連のヘッダファイルの一つに定義されています。たとえば、次のようになります。
/usr/include/asm-generic/param.h
を含む
/usr/include/linux/param.h
<sys/param.h>
最終的にはアーキテクチャ固有のディレクトリにある可能性があります。
/usr/include/x86_64-linux-gnu/sys/param.h
ソースは、これがコンパイル時定数であり、特定のシステムによって異なることを示します。