Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Evaluation of response time with memory access ...

Evaluation of response time with memory access load

CELF Japan Technical Jamboree 34

Yoshitake Kobayashi

September 03, 2010
Tweet

More Decks by Yoshitake Kobayashi

Other Decks in Technology

Transcript

  1. Copyright 2010, Toshiba Corporation. 2010/9/3 Evaluation of response time with

    memory access load Yoshitake Kobayashi and Kouta Okamoto Advanced Software Technology Group Corporate Software Engineering Center TOSHIBA CORPORATION
  2. 2 Outline はじめに はじめに はじめに はじめに Jamboree 33のおさらい のおさらい のおさらい

    のおさらい 評価環境 評価環境 評価環境 評価環境 ターゲット 周期実行遅延の測定プログラムフロー 測定環境 測定手法 測定手法 測定手法 測定手法と と と と測定結果 測定結果 測定結果 測定結果 リアルタイム性能比較 まとめ まとめ まとめ まとめ
  3. 3 はじめに 前回 前回 前回 前回の の の のJamboree 33で

    で で で各種 各種 各種 各種リアルタイム リアルタイム リアルタイム リアルタイム拡張 拡張 拡張 拡張を を を を用 用 用 用いた いた いた いた周期 周期 周期 周期タ タ タ タ スク スク スク スクの の の のレイテンシ レイテンシ レイテンシ レイテンシ評価 評価 評価 評価の の の の話 話 話 話をしました をしました をしました をしました http://elinux.org/images/3/33/Verification_of_response_time- 20100604.pdf コメント コメント コメント コメント・・・ ・・・ ・・・ ・・・ 「メモリの負荷を掛けた場合にどうなるの?」 ということで ということで ということで ということで, , , ,やってみました やってみました やってみました やってみました. . . .
  4. 4 おさらい:Linuxでのリアルタイム実現方式 以下のような実現方式がある 標準 標準 標準 標準Linuxカーネル カーネル カーネル カーネル

    カーネルに変更を加えたくない場合 そこそこのレスポンスが得られる RTパッチ パッチ パッチ パッチ適用 適用 適用 適用カーネル カーネル カーネル カーネル 安定したレスポンスを必要とする場合 Linuxの標準APIを利用可能 Xenomai より短く安定したレスポンスを必要とする場合 XenomaiのリアルタイムAPIを使用する必要あり 今回 今回 今回 今回は は は は時間 時間 時間 時間の の の の関係 関係 関係 関係で で で でXenomaiの の の の評価 評価 評価 評価は は は は行 行 行 行っておりません っておりません っておりません っておりません 本日の話題の範囲
  5. 5 おさらいの続き 周期実行における レスポンス(レイテンシ)を検証 • 割り込みのレスポンス • プロセス起動のレスポンス • 周期起動のレスポンス

    • etc… 今回 今回 今回 今回も も も も・・・ ・・・ ・・・ ・・・ レスポンス レスポンス レスポンス レスポンスの の の の種類 種類 種類 種類 • 最良値 • 最悪値 • レスポンスのばらつき 知 知 知 知りたいこと りたいこと りたいこと りたいこと
  6. 6 測定 測定 測定 測定プログラム プログラム プログラム プログラム情報 情報 情報

    情報 周期N usで周期タイマ設定 (1000 us後からタイマ起動) expected_time expected_time expected_time expected_time = 現在時刻 + 1000 us; i=0; タイマ起動までsleep latency latency latency latency [i] = 現在時刻 - expected_time expected_time expected_time expected_time ; i++; 終了判定 未終了 expected_time expected_time expected_time expected_time += N us タイマ !! !! !! !! 周期起動 周期起動 周期起動 周期起動LATENCY 測定 測定 測定 測定フロー フロー フロー フロー
  7. 7 測定環境 ハードウェア ハードウェア ハードウェア ハードウェア CPU: Pentium4 2.66 GHz

    ( L1キャッシュ:512KB) メモリ: 512MB ソフトウェア ソフトウェア ソフトウェア ソフトウェア カーネル 1. Vanillaカーネル (kernel-2.6.31.12) カーネル内プリエンプションを設定 2. RTカーネル (kernel-2.6.31.12-rt21) RTパッチ適用+リアルタイム処理向けのチューニング ※ ※ ※ ※: : : : レイテンシ レイテンシ レイテンシ レイテンシの の の の測定結果 測定結果 測定結果 測定結果は は は はマイクロ マイクロ マイクロ マイクロ秒 秒 秒 秒で で で で整理 整理 整理 整理
  8. 8 基礎評価(CPU負荷のみ) CPU負荷 負荷 負荷 負荷プログラム プログラム プログラム プログラム 1.

    演算を永遠に繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ サンプル数 100000 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
  9. 9 0 10000 20000 30000 40000 50000 60000 70000 80000

    90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 測定結果(周期300us/CPU負荷) CPU負荷 0 % 50 % 100 % 2.6.31.12 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  10. 10 測定結果(周期300us/CPU負荷) 1 12.87 28282.187 44.624 100% 0 0.979 32.353

    23.340 50% 2 3.131 361.986 13.043 100% 9 4.054 430.681 10.768 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル
  11. 11 0 10000 20000 30000 40000 50000 60000 70000 80000

    90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 latency(2.6.26preemptive) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 latency(2.6.26lenny) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 測定結果(周期500us/CPU負荷) CPU負荷 0 % 50 % 100 % 2.6.31.12 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT
  12. 12 測定結果(周期500us/CPU負荷) 0 7.02 69.411 40.802 100% 0 0.802 33.263

    23.763 50% 0 8.661 375.133 12.370 100% 0 4.107 428.748 10.420 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル
  13. 13 0 10000 20000 30000 40000 50000 60000 70000 80000

    90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 測定結果(周期1000us/CPU負荷) CPU負荷 0 % 50 % 100 % 2.6.31.12 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT
  14. 14 測定結果(周期1000us/CPU負荷) 0 5.369 70.020 39.129 100% 0 1.041 34.459

    24.162 50% 0 6.216 380.988 8.122 100% 0 3.534 433.542 9.881 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル
  15. 15 メモリの負荷をどうかけるか? そもそも そもそも そもそも そもそもメモリ メモリ メモリ メモリの の

    の の負荷 負荷 負荷 負荷とは とは とは とは? ? ? ? 今回 今回 今回 今回は は は はメモリ メモリ メモリ メモリの の の の負荷 負荷 負荷 負荷を を を を以下 以下 以下 以下のように のように のように のように定義 定義 定義 定義 1. メモリ割当てと開放処理が頻繁にある状態 ページフォルトが発生 メモリアクセス違反処理が発生 2. メモリアクセスが頻繁にある状態 注: スワップアウトはしない
  16. 16 メモリ確保・開放負荷について ページ ページ ページ ページ確保 確保 確保 確保・ ・

    ・ ・開放負荷 開放負荷 開放負荷 開放負荷プログラム プログラム プログラム プログラム 1. mmapを利用して領域を確保(読み書き可能) 2. 確保した領域の各ページに何か書く 3. CPU負荷がかかり過ぎないようにsleepで調整 4. unmapして開放 5. 1~4を永遠に繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
  17. 17 測定結果(周期300us/メモリ確保・開放負荷) CPU負荷 0 % 50 % 100 % 2.6.31.12

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  18. 18 測定結果(周期300us/メモリ確保・開放負荷) 0 1.551 47.250 22.213 100% 0 0.806 45.758

    21.464 50% 35 12.108 508.996 12.547 100% 16 10.725 443.732 10.513 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 1 12.87 28282.187 44.624 100% 0 0.979 32.353 23.340 50% 2 3.131 361.986 13.043 100% 9 4.054 430.681 10.768 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  19. 19 測定結果(周期300us/メモリ確保・開放負荷) 0 1.551 47.250 22.213 100% 0 0.806 45.758

    21.464 50% 35 12.108 508.996 12.547 100% 16 10.725 443.732 10.513 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル Vanillaカーネル カーネル カーネル カーネルでは では では ではCPU負荷 負荷 負荷 負荷のみと のみと のみと のみと比 比 比 比べ べ べ べ、 、 、 、周期超過回数 周期超過回数 周期超過回数 周期超過回数が が が が多 多 多 多 くなっている くなっている くなっている くなっている RTカーネル カーネル カーネル カーネルでは では では では安定 安定 安定 安定して して して して動作 動作 動作 動作しているように しているように しているように しているように思 思 思 思われる われる われる われる
  20. 20 測定結果(周期500us/メモリ確保・開放負荷) CPU負荷 0 % 50 % 100 % 2.6.31.12

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  21. 21 測定結果(周期500us/メモリ確保・開放負荷) 1 12.688 27969.027 22.701 100% 1 12.616 27943.415

    23.199 50% 1 35.182 27852.210 17.040 100% 19 28.714 27975.413 12.196 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 0 7.02 69.411 40.802 100% 0 0.802 33.263 23.763 50% 0 8.661 375.133 12.370 100% 0 4.107 428.748 10.420 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  22. 22 測定結果(周期500us/メモリ確保・開放負荷) 1 12.688 27969.027 22.701 100% 1 12.616 27943.415

    23.199 50% 1 35.182 27852.210 17.040 100% 19 28.714 27975.413 12.196 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル Vanillaカーネル カーネル カーネル カーネルでは では では ではCPU負荷 負荷 負荷 負荷のみと のみと のみと のみと比 比 比 比べ べ べ べ、 、 、 、周期超過回数 周期超過回数 周期超過回数 周期超過回数が が が が多 多 多 多 くなっている くなっている くなっている くなっている RTカーネル カーネル カーネル カーネルは は は は、 、 、 、300us周期 周期 周期 周期では では では では安定 安定 安定 安定していたように していたように していたように していたように見 見 見 見えたが えたが えたが えたが、 、 、 、 500us周期 周期 周期 周期では では では ではデッドラインミス デッドラインミス デッドラインミス デッドラインミスが が が が発生 発生 発生 発生している している している している
  23. 23 測定結果(周期1000us/メモリ確保・開放負荷) CPU負荷 0 % 50 % 100 % latency(2.6.26lenny)

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12 latency(2.6.26.8RT) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 latency(2.6.26.8RT) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  24. 24 測定結果(周期1000us/メモリ確保・開放負荷) 0 2.328 60.128 25.760 100% 0 2.839 86.734

    23.451 50% 0 15.572 472.499 17.143 100% 0 29.190 715.078 13.184 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 0 5.369 70.020 39.129 100% 0 1.041 34.459 24.162 50% 0 6.216 380.988 8.122 100% 0 3.534 433.542 9.881 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  25. 25 測定結果(周期1000us/メモリ確保・開放負荷) 0 2.328 60.128 25.760 100% 0 2.839 86.734

    23.451 50% 0 15.572 472.499 17.143 100% 0 29.190 715078 13.184 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル Vanilla、 、 、 、RTカーネル カーネル カーネル カーネル共 共 共 共に に に に同 同 同 同じ じ じ じ傾向 傾向 傾向 傾向のようにみえる のようにみえる のようにみえる のようにみえる 全周期 全周期 全周期 全周期を を を を通 通 通 通して して して して、 、 、 、ばらつきは ばらつきは ばらつきは ばらつきはRTカーネル カーネル カーネル カーネルの の の の方 方 方 方が が が が小 小 小 小さい さい さい さい
  26. 26 メモリ確保・開放+アクセス違反回避負荷について ページ ページ ページ ページ確保 確保 確保 確保・ ・

    ・ ・開放負荷 開放負荷 開放負荷 開放負荷+ + + +アクセス アクセス アクセス アクセス違反回避 違反回避 違反回避 違反回避プログラム プログラム プログラム プログラム 1. mmapを利用して領域を確保(PROT_NONE指定をする) 2. 確保した領域の各ページに何か書く SIGSEGVシグナルが返る SIGSEGVが発生したアドレスを読み書き可能にする 3. CPU負荷がかかり過ぎないようにsleepで調整 4. unmapして開放 5. 1~4を永遠に繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
  27. 27 測定結果(周期300us/確保・開放+保護違反処理) CPU負荷 0 % 50 % 100 % 2.6.31.12

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  28. 28 測定結果(周期300us/確保・開放+保護違反処理) 0 1.279 61.000 21.531 100% 0 1.123 42.461

    22.347 50% 21 9.367 510.858 10.529 100% 15 8.430 443.753 10.077 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 1 12.87 28282.187 44.624 100% 0 0.979 32.353 23.340 50% 2 3.131 361.986 13.043 100% 9 4.054 430.681 10.768 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  29. 29 測定結果(周期300us/確保・開放+保護違反処理) Vanillaカーネル カーネル カーネル カーネルでは では では ではCPU負荷 負荷

    負荷 負荷のみと のみと のみと のみと比 比 比 比べ べ べ べ、 、 、 、周期超過回数 周期超過回数 周期超過回数 周期超過回数が が が が多 多 多 多 くなっている くなっている くなっている くなっている RTカーネル カーネル カーネル カーネルでは では では では安定 安定 安定 安定して して して して動作 動作 動作 動作しているように しているように しているように しているように思 思 思 思われる われる われる われる 0 1.279 61.000 21.531 100% 0 1.123 42.461 22.347 50% 21 9.367 510.858 10.529 100% 15 8.430 443.753 10.077 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル
  30. 30 測定結果(周期500us/確保・開放+保護違反処理) CPU負荷 0 % 50 % 100 % 2.6.31.12

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  31. 31 測定結果(周期500us/確保・開放+保護違反処理) 0 1.313 38.625 21.859 100% 0 0.955 45.367

    22.149 50% 0 24.011 456.513 13.090 100% 0 20.858 454.867 11.461 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 0 7.02 69.411 40.802 100% 0 0.802 33.263 23.763 50% 0 8.661 375.133 12.370 100% 0 4.107 428.748 10.420 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  32. 32 測定結果(周期1000us/確保・開放+保護違反処理) CPU負荷 0 % 50 % 100 % latency(2.6.26lenny)

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12 latency(2.6.26.8RT) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 latency(2.6.26.8RT) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  33. 33 測定結果(周期1000us/確保・開放+保護違反処理) 0 1.486 46.094 23.107 100% 0 1.861 84.172

    23.471 50% 0 11.632 451.635 11.840 100% 0 19.733 596.112 12.401 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 0 5.369 70.020 39.129 100% 0 1.041 34.459 24.162 50% 0 6.216 380.988 8.122 100% 0 3.534 433.542 9.881 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  34. 34 メモリアクセス負荷による測定 メモリアクセス メモリアクセス メモリアクセス メモリアクセス負荷 負荷 負荷 負荷プログラム プログラム

    プログラム プログラム 1. volatile指定した変数カウンタを更新 2. CPU負荷がかかり過ぎないようにsleepで調整 3. 1~2を繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
  35. 35 測定結果(周期300us/メモリアクセス負荷) CPU負荷 0 % 50 % 100 % 2.6.31.12

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  36. 36 測定結果(周期300us/メモリアクセス負荷) 1 12.594 28160.933 20.176 100% 0 0.616 30.018

    21.985 50% 16 13.569 28143.442 7.086 100% 5 3.414 404.506 8.602 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 1 12.87 28282.187 44.624 100% 0 0.979 32.353 23.340 50% 2 3.131 361.986 13.043 100% 9 4.054 430.681 10.768 50% 0% 0% CPU負荷率 0 0.422 25.629 19.162 2.6.31.12-RT 4 3.167 402.131 7.036 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  37. 37 測定結果(周期500us/メモリアクセス負荷) CPU負荷 0 % 50 % 100 % 2.6.31.12

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  38. 38 測定結果(周期500us/メモリアクセス負荷) 0 0.494 25.194 19.865 100% 0 0.464 28.953

    22.261 50% 0 2.957 385.648 6.532 100% 0 4.334 383.569 10.084 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 0 7.02 69.411 40.802 100% 0 0.802 33.263 23.763 50% 0 8.661 375.133 12.37 100% 0 4.107 428.748 10.42 50% 0% 0% CPU負荷率 0 0.246 32.615 19.269 2.6.31.12-RT 0 3.259 391.005 7.068 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  39. 39 測定結果(周期1000us/メモリアクセス負荷) CPU負荷 0 % 50 % 100 % latency(2.6.26lenny)

    0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12 latency(2.6.26.8RT) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 latency(2.6.26.8RT) 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 2.6.31.12-RT 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 0 200 400 600 800 1000 latency(μ秒) 回数
  40. 40 測定結果(周期1000us/メモリアクセス負荷) 0 0.466 38.151 19.760 100% 0 0.784 56.233

    22.110 50% 0 5.722 378.242 6.671 100% 0 2.473 386.848 8.759 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル 0 5.369 70.020 39.129 100% 0 1.041 34.459 24.162 50% 0 6.216 380.988 8.122 100% 0 3.534 433.542 9.881 50% 0% 0% CPU負荷率 1 12.593 27207.563 19.361 2.6.31.12-RT 1 13.629 27395.703 7.455 2.6.31.12 周期超過回数 標準偏差 最大レイテンシ 平均レイテンシ カーネル CPU負荷のみ
  41. 41 まとめ 全体 全体 全体 全体を を を を通 通

    通 通して して して して、 、 、 、Vanillaカーネル カーネル カーネル カーネルより より より よりRTカーネル カーネル カーネル カーネルの の の の方 方 方 方が が が が安定 安定 安定 安定 CPU負荷 負荷 負荷 負荷のみと のみと のみと のみと比 比 比 比べると べると べると べると、 、 、 、メモリ メモリ メモリ メモリ負荷 負荷 負荷 負荷が が が が悪影響 悪影響 悪影響 悪影響となる となる となる となる場合 場合 場合 場合あり あり あり あり ページフォルトによる実メモリ確保のオーバーヘッドが影響している可能 性がある キャッシュの影響もあると予想していたが、今回の実験の範囲では大きな 差が見られなかった 詳細に調査する必要あり 1msの の の の周期 周期 周期 周期タスク タスク タスク タスクで で で で他 他 他 他に に に に何 何 何 何も も も も負荷 負荷 負荷 負荷をかけていない をかけていない をかけていない をかけていない場合 場合 場合 場合に に に に、 、 、 、 30msの の の の遅延 遅延 遅延 遅延が が が が生 生 生 生じる じる じる じるケース ケース ケース ケースがある がある がある がある 原因については現在未確認 根本的に違う場所で発生している可能性が高い