12.5. ハードウェアクロックソースの読み込みコストの比較

システムのクロックの速度を比較できます。TSC からの読み取りは、プロセッサーからレジスターを読み取ることを意味します。HPET クロックからの読み取りには、メモリーエリアを読み取る必要があります。TSC からの読み取りがより高速です。毎秒大量のメッセージのタイムスタンプ処理を行う場合、パフォーマンスが大幅に向上します。

前提条件

  • システムの root 権限がある。
  • clock_timing プログラムがシステム上にある。詳細は、clock_timing プログラム を参照してください。

手順

  1. clock_timing プログラムが保存されるディレクトリーに移動します。

    # cd clock_test
  2. システムで利用可能なクロックソースを表示します。

    # cat /sys/devices/system/clocksource/clocksource0/available_clocksource
    tsc hpet acpi_pm

    この例では、システムで利用可能なクロックソースは TSCHPET、および ACPI_PM になります。

  3. 現在使用中のクロックソースを表示します。

    # cat /sys/devices/system/clocksource/clocksource0/current_clocksource
    tsc

    この例では、システムの現在のクロックソースは TSC です。

  4. ./clock_timing プログラムと共に time ユーティリティーを実行します。この出力は、クロックソースを 1,000 万回読み込むために必要な期間を表示します。

    # time ./clock_timing
    
    	real	0m0.601s
    	user	0m0.592s
    	sys	0m0.002s

    この例は、以下のパラメーターを示しています。

    • real: プログラムの呼び出しから始まり、プロセスが終了するまでに費やした合計時間。real には、ユーザーとカーネル時間が含まれており、通常は後者 2 つの合計値よりも大きくなります。このプロセスが、優先度の高いアプリケーションや、ハードウェア割り込み (IRQ) などのシステムイベントによって中断される場合、待機に費やされたこの時間も real として計算されます。
    • user: カーネルの介入を必要としないタスクを実行するプロセスがユーザー空間で費やした時間。
    • sys: ユーザープロセスで必要なタスクの実行中にカーネルが費やした時間。これらのタスクには、ファイルのオープン、ファイルまたは I/O ポートの読み取りおよび書き込み、メモリーの割り当て、スレッドの作成、およびネットワーク関連のアクティビティーが含まれます。
  5. /sys/devices/system/clocksource/clocksource0/current_clocksource ファイルに、テストする次のクロックソースの名前を書き込みます。

    # echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource

    この例では、現在のクロックソースが HPET に変更されています。

  6. 利用可能なすべてのクロックソースに対して、ステップ 4 と 5 を繰り返します。
  7. 利用可能なすべてのクロックソースについて、ステップ 4 の結果を比較します。

関連情報

  • time(1) の man ページ