web-dev-qa-db-ja.com

ターミナルでHZを確認するにはどうすればよいですか?

私はこれを見ました http://kaasxxx.wordpress.com/2008/01/22/linux-hz-checker/ しかし、スクリプトは機能していないようです。とにかくLinuxのターミナルで「HZ」をチェックする簡単な方法を知っていますか?

16
Hao Shen

カーネルが「ティックレス」でコンパイルされ、通常のタイマー割り込みをまったく使用しない場合があるため、この質問に対する統一された答えはありません。ただし、従来のカーネルと従来のディストリビューションを使用している場合は、現在のカーネルの_.config_ファイルを/ bootの下に、grep 'CONFIG_HZ=' /boot/config-$(uname -r)のようなもので見つけることができます。

28
Andy Ross

HZの値は、次のように決定できます。

$ getconf CLK_TCK
100

実行中のカーネルのコンパイル時オプションはすべて、getconfを使用して確認できます。 HZは構成可能であることに注意してください。

$男7回

HZの値は、カーネルのバージョンやハードウェアプラットフォームによって異なります。 i386では、状況は次のようになります。2.4.xまでのカーネルでは、HZは100であり、Jiffy値は0.01秒でした。 2.6.0から、HZは1000に上げられ、0.001秒のJiffyが得られました。カーネル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)を使用してこの定数のcvalueを決定できます。

通常の場合と同様に、getconfを使用して問い合わせる場合は、マニュアルページに表示されている変数名から_SC_ビットを削除する必要があります。

12
slm

設定が何であるかについてのヒントを得るための多くの異なるアプローチがあります。一部のシングルコアシステムでは、このトリックは便利です。

/ # cat /proc/interrupts | grep -i time; sleep 10; cat /proc/interrupts | grep time
 16:   10404858      INTC  68 Level     gp_timer
 16:   10514798      INTC  68 Level     gp_timer

それはあなたに10秒間にあったティックの量を示しています。睡眠。ここで約100,000。 10で割ると、約10'000HZになります。

これはコアごとのリストになるため、マルチコアシステムでは混乱する可能性があります。

もう1つのオプションは、元のカーネル構成を入手できるかどうかを確認することです。に保存されます

/proc/config.gz

それを開梱し、ファイルを開きます。次のような部品を検索します

CONFIG_HZ_FIXED=0
# CONFIG_HZ_100 is not set
# CONFIG_HZ_200 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
# CONFIG_HZ_500 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ_10000=y
CONFIG_HZ=10000
CONFIG_SCHED_HRTICK=y

警告するだけです。 10'000は通常の設定から大きく外れています。実験のセットアップ。

5
user3387542

更新:scaiのコメントに従って回答を編集しました。

Bashでは、「HZ」の計算は次のようになります。

$ awk '{print$22/'$(tail -n 1 /proc/uptime|cut -d. -f1)"}" /proc/self/stat
100

手段:稼働時間の22番目の値を取得し、それを「自己」プロセスの開始時間で割ります。

これにより、カーネルのCONFIG_HZ変数ではなく、常に100であるUSER_HZ変数のみが配信されます。

注:古代には、1つのHZ変数しかありませんでした。 「#defineUSER_HZ100」はスプリットで導入されたと思います。また、ターミナル/シェルの使用では、CONFIG_HZではなくUSER_HZが必要ですだと思います。

5
reichhart

探しているのは、実行中のカーネルの構成内です/proc/config.gz(有効になっている場合、ほとんどのシステムで有効になっています)。

したがって、以下を使用して、結果のティックレートを確認できます。

zcat /proc/config.gz | grep CONFIG_HZ
0
thodnev