Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Evaluation of response time with memory access ...
Search
Yoshitake Kobayashi
September 03, 2010
Technology
0
3
Evaluation of response time with memory access load
CELF Japan Technical Jamboree 34
Yoshitake Kobayashi
September 03, 2010
Tweet
Share
More Decks by Yoshitake Kobayashi
See All by Yoshitake Kobayashi
InnerSource Learning Path - インナーソースで始める組織内オープンソース開発入門&実践 -
ystk
1
170
Civil Infrastructure Platform : Industrial-Grade Linux
ystk
0
18
Boosting Software Development with Generative AI
ystk
0
24
Enhancing Cyber Resilience and Sustainability in Critical Infrastructure with CIP and IEC-62443-4
ystk
0
20
Introducing CIP in 10 minutes
ystk
0
32
Civil Infrastructure Platform-Empowering Sustainable Living with Industrial Grade Linux
ystk
0
29
Enhancing Cyber Resilience with CIP
ystk
0
7
共に創る未来:ソフトウェア開発における共創・協働のアプローチと戦略
ystk
0
100
Civil Infrastructure Platform : Industrial-Grade Linux
ystk
0
530
Other Decks in Technology
See All in Technology
4/17/25 - CIJUG - Java Meets AI: Build LLM-Powered Apps with LangChain4j (part 2)
edeandrea
PRO
0
140
Dataverseの検索列について
miyakemito
1
140
Рекомендации с нуля: как мы в Lamoda превратили главную страницу в ключевую точку входа для персонализированного шоппинга. Данил Комаров, Data Scientist, Lamoda Tech
lamodatech
0
820
より良い開発者体験を実現するために~開発初心者が感じた生成AIの可能性~
masakiokuda
0
220
新卒エンジニアがCICDをモダナイズしてみた話
akashi_sn
2
260
LiteXとオレオレCPUで作る自作SoC奮闘記
msyksphinz
0
830
AWSのマルチアカウント管理 ベストプラクティス最新版 2025 / Multi-Account management on AWS best practice 2025
ohmura
4
350
PostgreSQL Log File Mastery: Optimizing Database Performance Through Advanced Log Analysis
shiviyer007
PRO
1
140
Building App Extensions equivalents on Android (maybe?)
atsushieno
1
110
ビジネスとデザインとエンジニアリングを繋ぐために 一人のエンジニアは何ができるか / What can a single engineer do to connect business, design, and engineering?
kaminashi
2
710
営業向け誰でも話せるOCIセールストーク
oracle4engineer
PRO
2
110
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
250
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
Code Review Best Practice
trishagee
67
18k
Faster Mobile Websites
deanohume
306
31k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Docker and Python
trallard
44
3.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Transcript
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 Outline はじめに はじめに はじめに はじめに Jamboree 33のおさらい のおさらい のおさらい
のおさらい 評価環境 評価環境 評価環境 評価環境 ターゲット 周期実行遅延の測定プログラムフロー 測定環境 測定手法 測定手法 測定手法 測定手法と と と と測定結果 測定結果 測定結果 測定結果 リアルタイム性能比較 まとめ まとめ まとめ まとめ
3 はじめに 前回 前回 前回 前回の の の のJamboree 33で
で で で各種 各種 各種 各種リアルタイム リアルタイム リアルタイム リアルタイム拡張 拡張 拡張 拡張を を を を用 用 用 用いた いた いた いた周期 周期 周期 周期タ タ タ タ スク スク スク スクの の の のレイテンシ レイテンシ レイテンシ レイテンシ評価 評価 評価 評価の の の の話 話 話 話をしました をしました をしました をしました http://elinux.org/images/3/33/Verification_of_response_time- 20100604.pdf コメント コメント コメント コメント・・・ ・・・ ・・・ ・・・ 「メモリの負荷を掛けた場合にどうなるの?」 ということで ということで ということで ということで, , , ,やってみました やってみました やってみました やってみました. . . .
4 おさらい:Linuxでのリアルタイム実現方式 以下のような実現方式がある 標準 標準 標準 標準Linuxカーネル カーネル カーネル カーネル
カーネルに変更を加えたくない場合 そこそこのレスポンスが得られる RTパッチ パッチ パッチ パッチ適用 適用 適用 適用カーネル カーネル カーネル カーネル 安定したレスポンスを必要とする場合 Linuxの標準APIを利用可能 Xenomai より短く安定したレスポンスを必要とする場合 XenomaiのリアルタイムAPIを使用する必要あり 今回 今回 今回 今回は は は は時間 時間 時間 時間の の の の関係 関係 関係 関係で で で でXenomaiの の の の評価 評価 評価 評価は は は は行 行 行 行っておりません っておりません っておりません っておりません 本日の話題の範囲
5 おさらいの続き 周期実行における レスポンス(レイテンシ)を検証 • 割り込みのレスポンス • プロセス起動のレスポンス • 周期起動のレスポンス
• etc… 今回 今回 今回 今回も も も も・・・ ・・・ ・・・ ・・・ レスポンス レスポンス レスポンス レスポンスの の の の種類 種類 種類 種類 • 最良値 • 最悪値 • レスポンスのばらつき 知 知 知 知りたいこと りたいこと りたいこと りたいこと
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 測定環境 ハードウェア ハードウェア ハードウェア ハードウェア 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 基礎評価(CPU負荷のみ) CPU負荷 負荷 負荷 負荷プログラム プログラム プログラム プログラム 1.
演算を永遠に繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ サンプル数 100000 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
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 測定結果(周期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 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 測定結果(周期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 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 測定結果(周期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 メモリの負荷をどうかけるか? そもそも そもそも そもそも そもそもメモリ メモリ メモリ メモリの の
の の負荷 負荷 負荷 負荷とは とは とは とは? ? ? ? 今回 今回 今回 今回は は は はメモリ メモリ メモリ メモリの の の の負荷 負荷 負荷 負荷を を を を以下 以下 以下 以下のように のように のように のように定義 定義 定義 定義 1. メモリ割当てと開放処理が頻繁にある状態 ページフォルトが発生 メモリアクセス違反処理が発生 2. メモリアクセスが頻繁にある状態 注: スワップアウトはしない
16 メモリ確保・開放負荷について ページ ページ ページ ページ確保 確保 確保 確保・ ・
・ ・開放負荷 開放負荷 開放負荷 開放負荷プログラム プログラム プログラム プログラム 1. mmapを利用して領域を確保(読み書き可能) 2. 確保した領域の各ページに何か書く 3. CPU負荷がかかり過ぎないようにsleepで調整 4. unmapして開放 5. 1~4を永遠に繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 メモリ確保・開放+アクセス違反回避負荷について ページ ページ ページ ページ確保 確保 確保 確保・ ・
・ ・開放負荷 開放負荷 開放負荷 開放負荷+ + + +アクセス アクセス アクセス アクセス違反回避 違反回避 違反回避 違反回避プログラム プログラム プログラム プログラム 1. mmapを利用して領域を確保(PROT_NONE指定をする) 2. 確保した領域の各ページに何か書く SIGSEGVシグナルが返る SIGSEGVが発生したアドレスを読み書き可能にする 3. CPU負荷がかかり過ぎないようにsleepで調整 4. unmapして開放 5. 1~4を永遠に繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 メモリアクセス負荷による測定 メモリアクセス メモリアクセス メモリアクセス メモリアクセス負荷 負荷 負荷 負荷プログラム プログラム
プログラム プログラム 1. volatile指定した変数カウンタを更新 2. CPU負荷がかかり過ぎないようにsleepで調整 3. 1~2を繰り返す 測定 測定 測定 測定パラメータ パラメータ パラメータ パラメータ 周期 300us,500us, 1000us 負荷プログラムによるCPU負荷 (負荷なし) ,50%,100%
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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 測定結果(周期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 まとめ 全体 全体 全体 全体を を を を通 通
通 通して して して して、 、 、 、Vanillaカーネル カーネル カーネル カーネルより より より よりRTカーネル カーネル カーネル カーネルの の の の方 方 方 方が が が が安定 安定 安定 安定 CPU負荷 負荷 負荷 負荷のみと のみと のみと のみと比 比 比 比べると べると べると べると、 、 、 、メモリ メモリ メモリ メモリ負荷 負荷 負荷 負荷が が が が悪影響 悪影響 悪影響 悪影響となる となる となる となる場合 場合 場合 場合あり あり あり あり ページフォルトによる実メモリ確保のオーバーヘッドが影響している可能 性がある キャッシュの影響もあると予想していたが、今回の実験の範囲では大きな 差が見られなかった 詳細に調査する必要あり 1msの の の の周期 周期 周期 周期タスク タスク タスク タスクで で で で他 他 他 他に に に に何 何 何 何も も も も負荷 負荷 負荷 負荷をかけていない をかけていない をかけていない をかけていない場合 場合 場合 場合に に に に、 、 、 、 30msの の の の遅延 遅延 遅延 遅延が が が が生 生 生 生じる じる じる じるケース ケース ケース ケースがある がある がある がある 原因については現在未確認 根本的に違う場所で発生している可能性が高い
42 2008 / 7 / 24 TOSHIBA Confidential