2.6. システムタイムスタンプでのハードウェアクロックの使用


NUMA や SMP などのマルチプロセッサーシステムには、複数のハードウェアクロックインスタンスがあります。起動時に、カーネルは利用可能なクロックソースを検出し、使用するクロックソースを選択します。システムで使用可能なクロックソースのリストについては、/sys/devices/system/clocksource/clocksource0/available_clocksource ファイルを参照してください。
~]# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
Copy to Clipboard Toggle word wrap
上記の例では、TSC、HPET、および ACPI_PM クロックソースが利用できます。
現在使用中のクロックソースは、/sys/devices/system/clocksource/clocksource0/current_clocksource ファイルを読み取ることで検査できます。
~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
Copy to Clipboard Toggle word wrap

クロックソースの変更

システムメインアプリケーションの最適なクロックは、クロックの既知の問題により使用されないことがあります。すべての問題のあるクロックを実行した後、システムはリアルタイムシステムの最低要件を満たすことができないハードウェアクロックで残すことができます。

重要なアプリケーションの要件は、システムごとに異なります。そのため、各アプリケーション、したがって各システムに適したクロックも異なります。一部のアプリケーションはクロックの分解能に依存し、信頼できるナノ秒の読み取りを提供するクロックの方が適しています。クロックを読み取るアプリケーションは、読み取りコストが少なくてクロックのメリットを得ることができます (読み取り要求と結果の間隔)。
これらのすべてのケースでは、このオーバーライドの副次的な影響を理解し、特定のハードウェアクロックの既知の不足をトリガーしない環境を作成すれば、カーネルが選択したクロックをオーバーライドできます。これを行うには、/sys/devices/system/clocksource/clocksource0/available_clocksource ファイルに表示されるリストからクロックソースを選択し、クロックの名前を /sys/devices/system/clocksource/clocksource0/current_clocksource ファイルに書き込みます。たとえば、以下のコマンドは、使用中のクロックソースとして HPET を設定します。
~]# echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource
Copy to Clipboard Toggle word wrap
注記
広く使用されているハードウェアクロックの簡単な説明や、さまざまなハードウェアクロック間のパフォーマンスを比較するには、Red Hat Enterprise Linux for Real Time Reference guide for Red Hat Enterprise Linux for Real Time を参照してください。

TSC クロックの追加ブートパラメーターの設定

すべてのシステムに理想的なシングルクロックはありませんが、一般的に TSC が優先されるクロックソースです。TSC クロックの信頼性を最適化するには、カーネルのブート時に追加のパラメーターを設定します。以下に例を示します。

  • idle=poll: クロックがアイドル状態にならないように強制します。
  • processor.max_cstate=1: クロックがより深い C ステート (省エネモード) に入るのを防ぎ、同期がずれないようにします。
ただし、いずれの場合も、システムが常に上位の速度で実行されるため、どちらの場合も電力消費量が増えることに注意してください。

電源管理移行の制御

最新のプロセッサーは、低からの省電力状態 (C-state) にアクティブに移行します。ただし、高い省電力状態から稼働状態に戻ると、リアルタイムアプリケーションの理想よりも多くの時間を消費してしまいます。アプリケーションは Power Management Quality of Service (PM QoS) インターフェイスを使用して、これらの移行を防ぐことができます。

PM QoS インターフェイスを使用すると、システムは idle=pollprocessor.max_cstate=1 パラメーターの動作をエミュレートできます (TSC クロックの追加ブートパラメーターの設定) と同等ですが、省電力状態をより細かく制御できます。
アプリケーション が/dev/cpu_dma_latency ファイルを開いたままにすると、PM QoS インターフェイスはプロセッサーがディープスリープ状態に入るのを防ぎ、ディープスリープ状態から抜け出すときに予期しない遅延が発生します。ファイルが閉じられると、システムは省電力状態に戻ります。
  1. /dev/cpu_dma_latency ファイルを開きます。ファイル記述子を低レイテンシー操作の期間中開いたままにします。
  2. 32 ビットの数字を書き込みます。この数は、最大応答時間 (マイクロ秒単位) を表します。可能な限り最速の応答時間を得るには、0 を使用します。
    /dev/cpu_dma_latency ファイルの例は次のとおりです。
    static int pm_qos_fd = -1;
    
    void start_low_latency(void)
    {
    	s32_t target = 0;
    
    	if (pm_qos_fd >= 0)
    		return;
    	pm_qos_fd = open("/dev/cpu_dma_latency", O_RDWR);
    	if (pm_qos_fd < 0) {
    	   fprintf(stderr, "Failed to open PM QOS file: %s",
    	           strerror(errno));
    	   exit(errno);
    	}
    	write(pm_qos_fd, &target, sizeof(target));
    }
    
    void stop_low_latency(void)
    {
    	if (pm_qos_fd >= 0)
    	   close(pm_qos_fd);
    }
    Copy to Clipboard Toggle word wrap
    アプリケーションは最初に start_low_latency() を呼び出し、必要なレイテンシーに敏感な処理を実行してから、stop_low_latency() を呼び出します。
  • Linux System Programming』 by Robert Love
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat