web-dev-qa-db-ja.com

Linuxカーネルでのjiffieの解決策は何ですか

Linuxカーネルでのjiffieの解決策は何ですか?

現在のタイマーソース(cat /sys/devices/system/clocksource/clocksource0/current_clocksource)、LinuxはTSCを使用し、ナノ秒の解像度を持っています

http://lxr.free-electrons.com/source/include/linux/jiffies.h によると、jiffieは1us以上ですが、大きくすることもできます。

現在の解像度を決定する方法はありますか?.

7
effenok

マニュアルページを見ると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秒間のジフィーの数です。

参考文献

4
slm

これらの情報源によると、jiffiesの解像度は1/HZHZの値が何であれ)です。

これは、カーネルに依存するヘッダーファイルの1つで定義されています。

/usr/include/asm-generic/param.h

から含まれています

/usr/include/linux/param.h

そして最終的には<sys/param.h>から。これは、アーキテクチャ固有のディレクトリにある可能性があります。

/usr/include/x86_64-linux-gnu/sys/param.h

ソースは、それがコンパイル時定数であり、特定のシステムに依存することを明らかにしています。

1
Thomas Dickey