Linux リアルタイム・プリエンプションとULDDへの影響 - 進捗報告 -

Slides:



Advertisements
Similar presentations
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
Advertisements

【講座3】 MP T-Kernel入門 (株)日立超LSIシステムズ 豊山 祐一
ARTLinuxの特徴 ARTLinux: ハードリアルタイム処理機能を拡張したLinuxカーネル 固定優先度に基づくスケジューリング機能
計算機システム概論・3回目 本日のトピック:割込みと入出力制御について 割込み制御について 問題点の明確化 割込みとは
ファイルキャッシュを考慮したディスク監視のオフロード
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
ブロック線図に基づく システム制御学習環境における リアルタイム制御実験
組み込み環境における ユーザレベル・デバイスドライバの検討 (進捗報告)
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
全体ミーティング (4/25) 村田雅之.
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
Androidの 画面描画機構を チューニングする!
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
●マルチプロセッサ管理 □ スケジューリング ☆ 対称型マルチプロセッサシステム ☆ プロセススケジューラ ☆ スケジューリングポリシー
組込みシステムとは コンピュータ制御システム?
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
Linuxカーネルについて 2014/01.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
オペレーティングシステム i386アーキテクチャ(2)
TinyOS 浅川 和久 2017/4/7 TinyOS.
全体ミーティング 2009/6/24 D3 西川 賀樹.
ネストした仮想化を用いた VMの安全な帯域外リモート管理
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
VMマイグレーションを可能にするIDSオフロード機構
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
アスペクト指向プログラミングを用いたIDSオフロード
タイムスタンプ付ストリームI/Oによる音の実時間処理
Occam言語による マルチプリエンプティブシステムの 実装と検証
型付きアセンブリ言語を用いた安全なカーネル拡張
SpectreとMeltdown ITソリューション塾・第28期 2018年5月30日 株式会社アプライド・マーケティング 大越 章司
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
RT-Linuxを用いた 多入力パルス波高分析システムの開発
仮想マシン間にまたがる プロセススケジューリング
他のプロセスに あたえる影響が少ない 実行時ミラーリングシステム
IaaS型クラウドにおける インスタンス構成の動的最適化手法
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
オペレーティングシステム イントロダクション
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
Linux Device Driver 輪講 7. 時の流れ
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
オペレーティングシステム 第2回 割り込みとOSの構成
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
Intel SGXを用いた仮想マシンの 安全な監視機構
複数ホストにまたがって動作する仮想マシンの障害対策
オペレーティングシステムJ/K 2004年11月15日2時限目
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
組込みシステムとは コンピュータ制御システム?
オペレーティングシステム (プロセススケジューリング)
実装について 前田俊行.
ルネサスソリューションズ 宗像尚郎 ( ) CONFIG_EMBEDDED ルネサスソリューションズ 宗像尚郎 ( )
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称.
ネットワーク・プログラミング デバイスドライバと環境変数.
SpectreとMeltdown ITソリューション塾・第27期 2018年3月20日 株式会社アプライド・マーケティング 大越 章司
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
オペレーティングシステム (プロセススケジューリング)
強制パススルー機構を用いた VMの安全な帯域外リモート管理
SMP/マルチコアに対応した 型付きアセンブリ言語
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
L4-Linux のメモリ管理における問題点とその解決策
Presentation transcript:

Linux リアルタイム・プリエンプションとULDDへの影響 - 進捗報告 - 松原 克弥   高橋ひとみ 株式会社イーゲル funded by 株式会社ルネサス・ソリューションズ 2006/10/27 CELF Tech. Jamboree #11

User Level Device Driver デバイスドライバをユーザタスクで実現できないかと画策 カーネルプログラミングは敷居が高い。 カーネルを不安定にしているのはデバドラと言われている。 2.6からスケジューラが改善されて、プラットフォームも準備OK? O(1)スケジューラ NPTL カーネルプリエンプション すでに、USB等いくつかのドライバはユーザレベルで実現されている。 2006/10/27 CELF Tech. Jamboree #11

現在進めていること Ingo MolnerのLinux realtime preemptionパッチ(PREEMPT_RT)が ULDDに与える影響(効果)を測定・評価 PREEMPT_RTの内容を理解 PREEMPT_RTをSuperHアーキテクチャに対応させる ULDDへの影響を実験・測定 2006/10/27 CELF Tech. Jamboree #11

Linuxのリアルタイム対応 完全リアルタイム 全タスクのデッドラインを保証 ⇒ (非リアルタイム)既存OSへの接木では困難 Nested OS, Dual OS/Dual Core, ART-Linux 部分リアルタイム 一部のタスクのデッドラインを努力保証 たいていのリアルタイムタスクは限られた資源のみを使用する。 ⇒遅延を最小に =プリエンプション ⇒ 遅延度合いをより小さく = リアルタイムプリエンプション CONFIG_PREEMPT, CONFIG_PREEMPT_RT 2006/10/27 CELF Tech. Jamboree #11

割り込み処理における遅延 割り込みハンドラ起動遅延 割り込みが発生してからハンドラが起動されるまで ⇒ 割り込み禁止区間が影響 タスク起床遅延 割り込みハンドラがタスクの起床を指示してから、実際に起床するまで ⇒ プリエンプション禁止区間(割り込み禁止区間を含む)が影響 ⇒スケジューリングポリシーが影響 2006/10/27 CELF Tech. Jamboree #11

Linuxのプリエンプション プリエンプションのタイミング 割り込み処理からの復帰時 システムコールからの復帰時 タスクが自主的に休眠した時 ⇒リターン時に別タスクのスタックポインタをセットし、pop 2.4 / CONFIG_PREEMPTなしの2.6では、カーネルモードではプリエンプション(タスク切り替え)が起きない(割り込み処理は起きる) カーネルモード時の割り込みからの復帰は元の場所に戻る(プリエンプション非対応コードのため) 2006/10/27 CELF Tech. Jamboree #11

2.4 / 2.6 without CONFIG_PREEMPT Task A Task B user kernel 割り込み処理 データ待ち(sleep) H/W 割り込み 割り込み 禁止区間 Task Bをwakeup 2006/10/27 CELF Tech. Jamboree #11

CONFIG_PREEMPT Task A Task B user kernel 割り込み処理 データ待ち(sleep) H/W 割り込み 禁止区間 Task Bをwakeup 2006/10/27 CELF Tech. Jamboree #11

PREEMPT_RT Task A Task B user kernel 割り込み処理 データ待ち(sleep) H/W 割り込み 割り込み禁止区間 Task Bをwakeup 2006/10/27 CELF Tech. Jamboree #11

PREEMPT_RTにより 追加・変更される特徴 クリティカル領域内でのプリエンプション 割り込み処理内でのプリエンプション 割り込み禁止コード領域内でのプリエンプション スピンロックとセマフォの優先度継承 スピンロックが必要なプリエンプション禁止コードの処理 その他の最適化 2006/10/27 CELF Tech. Jamboree #11

i. クリティカル領域内での プリエンプション spinlock_t, rwlock_t, rcu_read_lock() and rcu_read_unlock()、セマフォで囲まれた領域内のプリエンプション可能に spin_lock_irqsave()等*_irq()は、実際にはハードウェア割り込みを禁止しない 従来のスピンロックはraw_spinlock_tを使うことで継続可 2006/10/27 CELF Tech. Jamboree #11

ii. 割り込み処理内での プリエンプション 割り込み処理はプロセスコンテキストで実行 redirect_hardirq()によりirqdに処理をリダイレクト プリエンプション可能 SA_NODELAY宣言された割り込み処理のみ、割り込みコンテキストで実行 例)CPUタイマ割り込み、fpu割り込み等 ただし、起床遅延に影響の可能性あり コーディングに最新の注意が必要=できるだけ使わない 2006/10/27 CELF Tech. Jamboree #11

iii. 割り込み禁止コード領域内での プリエンプション 「割り込み禁止」なのにプリエンプション?! SMPでは、複数のCPUにより割り込み処理の同時進行が可能に spin_lock_irqsave()はプリエンプションを禁止しない。 大丈夫? ⇒別の割り込み処理がスタートしても、同じロックを取りにいくところでブロック = クリティカル領域は設定可 local_irq_save()はプリエンプション禁止 対応するロックがない ロックを使うほうが遅延を減らせる。ただし、SMPの性能低下の可能性あり 2006/10/27 CELF Tech. Jamboree #11

iv. カーネル内スピンロックと セマフォの優先度継承 ロック保持タスクの優先度をロックを必要とする高優先度タスクに合わせてboostする。 優先度継承は繰り返し行われる(推移する)。 「プリエンプションポイント」を設定して、そのポイントでロックを手放すこともできる(例:JBDジャーナルレイヤ)。 Writerからreaderへの優先度継承は難しい。 PREEMPT_RTでは、readロックは一度に1タスクのみが保持できるような制限を加えている。 セマフォは(ロックではなく)イベント機構を用いているため、優先度継承が難しい。 Postするタスクを特定できない compat_semaphore() and compat_rw_semaphore()を提供 (未調査 m(__)m) 2006/10/27 CELF Tech. Jamboree #11

PREEMPT_RTの移植 現在サポートされているアーキテクチャ 新しいアーキテクチャの追加 Intel x86 PowerPC ARM MIPS 等 新しいアーキテクチャの追加 arch/アーキテクチャ、include/asm-アーキテクチャ内の 変更 割り込み禁止、プリエンプション禁止にすべきロック やセマフォに「raw_」「compat_」を付与 タイマハンドラ等の割り込みコンテキストで実行すべき 割り込みハンドラの登録にSA_NODELAYを指定 その他、アーキテクチャ別(if defined(アーキテクチャ)) の処理を追加 2006/10/27 CELF Tech. Jamboree #11

新しいアーキテクチャ対応の手間 簡単に対応させるだけなら、すべてのロックや local_irqsaveに「_raw」、セマフォに「_compat」をつけれ ば動く(はず)。 プリエンプションの機会が増えない=意味なし 各クリティカル領域、割り込み処理でプリエンプション禁止 の必要性を解析する必要がある。 2006/10/27 CELF Tech. Jamboree #11

ULDDへの影響 本日はここまでです。 m(__)m 予測 割り込み禁止領域の削減 プリエンプション禁止領域の削減 ⇒プリエンプションの機会が増えるので、スケジュール遅 延が少なくなりそう。 優先度継承つきロック ⇒優先度逆転が起きなくなるので、より遅延のブレが小さ くなるはず。 実際に測定してみると‥ 本日はここまでです。 m(__)m 2006/10/27 CELF Tech. Jamboree #11

状況 Linux 2.6.16 + linuxsh patch + RTS7751R2D用パッチ + patch-2.6.16-rt29 raw_, compat_を追加+αは動作(Thanks to Lineo) チューニング(不必要なraw_, compat_の削除)中 ULDD H/W割り込みをユーザタスクに通知するドライバは実装 済み SM501 UARTドライバ on RTS7751R2D は実装済み 外乱プロセスの選定中(lat_proc in Lmbenchは、 Linux プリエンプションの効果が見られないようだ) 2006/10/27 CELF Tech. Jamboree #11

TODO PREEMPT_RTの移植 SH4に対応 2.6.18への移行? Intel x86との比較 Intel x86上のH/Wデバイスを対象とULDDの実装 ULDD v2の設計 割り込みの判別や割り込み停止等の基本処理をカーネ ル側で行う拡張 カーネルドライバでのAPIとの差異を減らす wlan, libusb等のすでにULDDを実現している仕組みを 参考に 2006/10/27 CELF Tech. Jamboree #11