Fedora17でcyclictestを実行した際のメモ
Fedora17でリアルタイム性能テストプログラムcyclictestを動かしてみた。
計測対象
対象のカーネルは以下の通り。
Fedoraでのやり方でカーネルのrpmを作る方法は http://fedoraproject.org/wiki/Building_a_custom_kernel にあります。
計測環境
- Core2 Duo E6750 2.66GHz
- メモリ 4G
以下のスクリプトを実行してから計測した。
#!/bin/sh for pid in `ps -eo pid` do echo $pid taskset -p 0x01 $pid done
割り込みアフィニティは変更していない。
cyclictest実行結果
以下のコマンドを実行して計測を行った。
#taskset 1 ./cyclictest -t1 -p 80 -n -i 1000 -l 1000000
計測結果は以下の通り。
カーネル | 最小 | 平均 | 最大 |
---|---|---|---|
デフォルト | 2 | 3 | 781 |
PREEMPT有効 | 2 | 3 | 1387 |
ftraceでfunction_graphを実行中にcyclictestを実行した場合
最大遅延の発生原因を追求する場合に、ftraceとfunction_graphを使いたい。
ftraceの実行がどの程度影響するか確認するためにftrace実行時でも計測を行った。
ftraceの実行手順は以下の通り。
# echo 1000000 > /sys/kernel/debug/tracing/buffer_size_kb # echo function_graph > /sys/kernel/debug/tracing/current_tracer # echo 1 > /sys/kernel/debug/tracing/tracing_on # echo 1 > /sys/kernel/debug/tracing/tracing_enabled
実行結果は以下の通り。
カーネル | 最小 | 平均 | 最大 |
---|---|---|---|
デフォルト | 31 | 61 | 7599 |
PREEMPT有効 | 44 | 66 | 3553 |
結果について
PREEMPT有効にしたカーネルの方が遅延が大きく出るように見える。
計測時間が15分程度と短かったため、たまたまPREEMPT有効の方が最大遅延が大きく出てしまったものと思われる。
一晩くらい計測を実行すれば、PREEMPT有効の方が遅延の発生頻度と最大遅延が小さく出るはず。
ftraceで最大遅延が跳ね上がっているのが気になる。
追跡したい箇所がftraceのせいで埋もれてしまうかも。