12.5. ハードウェアクロックソースの読み込みコストの比較
システムのクロックの速度を比較できます。TSC からの読み取りは、プロセッサーからレジスターを読み取ることを意味します。HPET クロックからの読み取りには、メモリーエリアを読み取る必要があります。TSC からの読み取りがより高速です。毎秒大量のメッセージのタイムスタンプ処理を行う場合、パフォーマンスが大幅に向上します。
前提条件
- システムの root 権限がある。
-
clock_timing
プログラムがシステム上にある。詳細は、clock_timing プログラム を参照してください。
手順
clock_timing
プログラムが保存されるディレクトリーに移動します。# cd clock_test
システムで利用可能なクロックソースを表示します。
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc hpet acpi_pm
この例では、システムで利用可能なクロックソースは
TSC
、HPET
、およびACPI_PM
になります。現在使用中のクロックソースを表示します。
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource tsc
この例では、システムの現在のクロックソースは
TSC
です。./
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 ポートの読み取りおよび書き込み、メモリーの割り当て、スレッドの作成、およびネットワーク関連のアクティビティーが含まれます。
-
/sys/devices/system/clocksource/clocksource0/current_clocksource
ファイルに、テストする次のクロックソースの名前を書き込みます。# echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource
この例では、現在のクロックソースが
HPET
に変更されています。- 利用可能なすべてのクロックソースに対して、ステップ 4 と 5 を繰り返します。
- 利用可能なすべてのクロックソースについて、ステップ 4 の結果を比較します。
関連情報
-
time(1)
の man ページ