KernelSharkを使用した周期的計画間隔の測定
3998 ワード
イベント処理中に説明されていない遅延はRealTime Linuxの最大の問題の1つである.
RT Kernelコンテキストでの遅延(Latency).これは、あるイベントが発生したときにそのイベントが「処理」されたときの間隔を意味します.
これを計測するツールにはcyclictestというプログラムがあり,このプログラムによりRT OSの「RT」が正しく保障されているかを検証することができる.
cyclictestは、タイマを継続的に実行するtaskからなる.この場合、タイマを調整し、イベント遅延(すなわち、スケジューリング遅延)でタイマが直接動作する時間間隔を測定することができる.
次にkernelshakを用いてカーネルのスケジューリング遅延を直接測定し,tracecmdカーネルを用いて測定した遅延が正しいかどうかを調べた.
(https://kernelshark.org:KernelShark 1.0を選択)
グラフィックトラッキングチェック
タグAの選択>必要なイベントの選択
タグBの選択>必要なイベントの選択
タグAとタグBのDelta値が表示されます.(0.106 microsecond)
左上のFilter>Advance Filtering
sched wakeupのcomm=="cyclictest"(pid=17348)、フィルタオプションの追加>Apply
フィルタオプションを追加してsched switchのnext comm="cyclictest"(pid=17348)>のみで適用
cyclictest:17348プロセスは、起動からsched switchまでの時間を測定します.
次に、trace-cmdを使用して、測定した遅延が正しいかどうかを確認します.
sched switchおよびsched wakeupイベントはフィルタされていません.
-wオプションでレポートを行い、遅延を測定します.
Wikiマニュアルを整理し、以下のようにします.
-Fオプションを使用してフィルタを追加し、-wオプションを使用してLatencyの平均値と最大最小値を測定します.
datファイルは読み取り不能であるため、txtファイルにコピーして保存する.
−wを追加して、平均遅延、最大最小遅延を決定することができる.
RT Kernelコンテキストでの遅延(Latency).これは、あるイベントが発生したときにそのイベントが「処理」されたときの間隔を意味します.
これを計測するツールにはcyclictestというプログラムがあり,このプログラムによりRT OSの「RT」が正しく保障されているかを検証することができる.
cyclictestは、タイマを継続的に実行するtaskからなる.この場合、タイマを調整し、イベント遅延(すなわち、スケジューリング遅延)でタイマが直接動作する時間間隔を測定することができる.
次にkernelshakを用いてカーネルのスケジューリング遅延を直接測定し,tracecmdカーネルを用いて測定した遅延が正しいかどうかを調べた.
KernelShark 1.0インストール
(https://kernelshark.org:KernelShark 1.0を選択)
sudo apt-get install build-essential git cmake libjson-c-dev -y
sudo apt-get install freeglut3-dev libxmu-dev libxi-dev -y
sudo apt-get install qtbase5-dev -y
sudo apt-get install graphviz doxygen-gui -y
make install
make install_gui
KernelShark 1.0の画面Delta計算
グラフィックトラッキングチェック
タグAの選択>必要なイベントの選択
タグBの選択>必要なイベントの選択
タグAとタグBのDelta値が表示されます.(0.106 microsecond)
Event Filtering
左上のFilter>Advance Filtering
sched wakeupのcomm=="cyclictest"(pid=17348)、フィルタオプションの追加>Apply
フィルタオプションを追加してsched switchのnext comm="cyclictest"(pid=17348)>のみで適用
cyclictest:17348プロセスは、起動からsched switchまでの時間を測定します.
次に、trace-cmdを使用して、測定した遅延が正しいかどうかを確認します.
Trace report
sched switchおよびsched wakeupイベントはフィルタされていません.
-wオプションでレポートを行い、遅延を測定します.
Wikiマニュアルを整理し、以下のようにします.
-Fオプションを使用してフィルタを追加し、-wオプションを使用してLatencyの平均値と最大最小値を測定します.
datファイルは読み取り不能であるため、txtファイルにコピーして保存する.
trace-cmd -F [필터] -w [dat 파일 저장 경로] > [txt 파일 저장 경로]
KernelSharkで測定したLatencyはこれと比較してほとんど差がなかった.−wを追加して、平均遅延、最大最小遅延を決定することができる.
Reference
この問題について(KernelSharkを使用した周期的計画間隔の測定), 我々は、より多くの情報をここで見つけました https://velog.io/@aqaqsubin/KernelShark를-이용한-cyclictest-Scheduling-Latency-측정テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol