<4C696E A B835E A CC8A D20838A B835E B838982CC8EC08CB

Similar documents
05-scheduling.ppt

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

04-process_thread_2.ppt

スライド 1

PNopenseminar_2011_開発stack

生活設計レジメ

44 4 I (1) ( ) (10 15 ) ( 17 ) ( 3 1 ) (2)

I II III 28 29


OS

Microsoft PowerPoint - kougi7.ppt

SafeG 高信頼組込みシステム向けデュアル OS モニタ Daniel Sangorrín, 本田晋也, 高田広章 名古屋大学 2010 年 12 月 3 日 この研究の一部は文部科学省のサポート受けて実施しています Daniel Sangorrín ( 名古屋大学 ) ET 横浜 2

組込み Linux の起動高速化 株式会社富士通コンピュータテクノロジーズ 亀山英司 1218ka01 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

Presentation title (on one or two lines)

Microsoft PowerPoint - OS02.pptx

Microsoft PowerPoint - os ppt [互換モード]

自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植

動機 もう6学期だし真面目に勉強しようと思った 真面目に授業聞いてみたけどよくわからなかった Amazonみてたら OS自作 という文字列を発見 話し聞いてもよくわからないしもはや自分で作っちゃえばいいんじゃない 駒場祭付近暇だしそこで 一気に作っちゃおう

(Microsoft PowerPoint - \221g\202\335\215\236\202\335\203\\\203t\203g\203E\203F\203A\215H\212w No03\201i\224z\225z\227p\201j.pptx)

Microsoft PowerPoint - Windows Embeddedセミナー関西(アキタ電子:130719).pptx

i


Wide Scanner TWAIN Source ユーザーズガイド

マルチスレッドアーキテクチャにおける スレッドライブラリの実装と評価

第1部 一般的コメント

智美塾 ゆもつよメソッドのアーキテクチャ

インテル(R) Visual Fortran コンパイラ 10.0

Microsoft PowerPoint - OS02.ppt

Microsoft PowerPoint - FormsUpgrade_Tune.ppt

2015_collabo_04

Microsoft PowerPoint - Android+TPMによるセキュアブート_KDDI研_後日配布用

untitled

表1票4.qx4

福祉行財政と福祉計画[第3版]

BitVisor Updates in 2016

第1章 国民年金における無年金

Microsoft PowerPoint - No3.ppt

POSIXプログラミング Pthreads編

t20s3-fn09.pdf

橡ミュラー列伝Ⅰ.PDF

Linuxのベンチマーク評価 とボトルネック解析

ストリームを用いたコンカレントカーネルプログラミングと最適化 エヌビディアジャパン CUDAエンジニア森野慎也 GTC Japan 2014

CLUSTERPRO MC StorageSaver 2.2 for Linux リリースメモ 2017(Apr) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル 補足事項 注意事項

PR映画-1

II III I ~ 2 ~

中堅中小企業向け秘密保持マニュアル


- 2 -



1 (1) (2)

複数の Nios II を構成する際の注意事項

Microsoft PowerPoint - OS02.pptx

吉田坂本.pptx

1 概要

1 概要

MINI2440マニュアル

provider_020524_2.PDF

cmpsys15w07_os.ppt


「産業上利用することができる発明」の審査の運用指針(案)

3. 対応している基本的な Microsoft Exchange 機能 サーバとの同期 Microsoft Exchange Server 上にあるメール 連絡先 カレンダーなどの情報をスマートフォンと自動同期 ( ダイレクトプッシュ ) できます スマートフォン利用者が特に意識することなくリアルタ

PlatformEvalSheet(version2.0.4).xls

自己紹介 岩松信洋 (IWAMATSU Nobuhiro) Linux カーネル開発をしています (Renesas SH) U-Boot のSHアーキテクチャメンテナしています Debian の開発に参加しています Debian Maintainer / Debian JP Project Lead



2017 年 10 月 2 日 株式会社 HDE システムコンサルティングアンドセールスディビジョン HDE Mail Application Server #Delivery - au.com ドメイン追加のご案内 - 平素より 弊社メール配信システム HDE Mail Application S

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

TFTP serverの実装

Warp demo station manual

24th Embarcadero Developer Camp

今週の進捗

CLUSTERPRO MC RootDiskMonitor 2.3 for Linux HW-RAID 監視機能 リリースメモ 2018(Jun) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル

計算機システム概論

Yocto Project 紹介 2018/12/11 サイバートラスト株式会社 OSS 技術本部岩松信洋 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 公開

CodeRecorderでカバレッジ

1 概要

Operating System 仮想記憶

リソース制約下における組込みソフトウェアの性能検証および最適化方法

178 5 I 1 ( ) ( ) ( ) ( ) (1) ( 2 )

INtime Evaluation Report

ヤマハDante機器と他社AES67機器の接続ガイド

スレッドとプロセス

1 Atollic TrueSTUDIO( GR-PEACH TOPPERS/ASP ASP GR-PEACH mbed ( git

Microsoft PowerPoint - sp ppt [互換モード]

1 概要


Microsoft PowerPoint - Session4古賀様.ppt

本文ALL.indd

1

発行 20XX年XX月XX日

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

untitled

GNU/Linux on SuperH g,,,,, GNU/Linux on SuperH [1] SuperH (SH-3 SH-4) GNU/Linux g linux-kernel 1998 Linux (SH-3) g GD

HULFT8 for Windows/UNIX/Linux/zLinux の機能で発生する不具合について

目次 概要 S/4HANAの導入方式 NECがご提供するサービス S/4HANA 導入ロードマップ策定支援サービス

活用ガイド (ソフトウェア編)

PowerPoint Presentation

1

Acronis® Backup & Recovery™ 10 Server for Linux

Transcription:

PREEMPT_RT の移植 - 進捗報告 - 松原克弥株式会社イーゲル Funded by 株式会社ルネサスソリューションズ 1

背景 ユーザレベルでデバイスドライバを実現したい 開発が容易 ドライババグによるシステムダウンを軽減 より密接なアプリとの連携 いくつかの問題 I/O メモリ 物理メモリへのアクセス 割り込み要求 (IRQ) の受信 応答速度 カーネル 2.6 の新機能 NPTL(Native POSIX Thread Library) スケジューラの改善 (O(1) スケジューラ等 ) カーネルプリエンプション 2

これまでの過程 1. スレッドの応答性調査 2. ULDD(User Level Device Driver) フレームワークの設計 3. ULDD のプロトタイプ実装 4. Linux リアルタイム対応の調査 今日は PREEMPT_RT を適用した 2.6.16 カーネルを Renesas SH4 ベースのボード RTS7751R2D への移植作業を報告します 3

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

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

(CONFIG_)PREEMPT_RT Ingo MolnarらのLinux realtime preemptionパッチ プリエンプションの機会を 割込み処理中やクリティカル領域内にも増やすことで遅延を軽減し タスク起床および割り込み処理において 20~30usのソフトリアルタイムを実現 優先度逆転を防ぐため 優先度継承ロックを提供 他コード部分のリファクタリング 最適化 http://people.redhat.com/mingo/realtime-preempt/ 8

PREEMPT_RT により追加 変更される特徴 i. クリティカル領域内でのプリエンプション ii. 割り込み処理内でのプリエンプション iii. 割り込み禁止コード領域内でのプリエンプション iv. スピンロックとセマフォの優先度継承 v. その他の最適化 10

PREEMPT_RT の移植 現在サポートされているアーキテクチャ Intel x86, PowerPC, ARM, MIPS 等 新しいアーキテクチャへの対応 arch/ アーキテクチャ include/asm- アーキテクチャ内の変更 割り込み禁止 プリエンプション禁止にすべきロックやセマフォに raw_ compat_ を付与 ( あまり使われていない ) デバイスドライバの変更 割り込みハンドラがプロセスコンテキストでも実行可能か ロックや割り込み禁止箇所の見直し タイマハンドラ等の割り込みコンテキストで実行すべき割り込みハンドラの登録に SA_NODELAY を指定 スケジューラ呼び出しに関連する処理部分を見直し その他 アーキテクチャ別 (if defined( アーキテクチャ )) の処理を追加 11

PREEMPT_RT の適用手順 1. kernel.org からカーネルソースを取得 展開 2. RT パッチを適用 3..config の変更 4. アーキテクチャ依存コード デバイスドライバ コードの見直し 5. コンパイルして動作 ( 安定するまで 4. に戻る ) 12

1. カーネルソースの展開 これは説明しなくてもよいですね (^^; Tips: 2.6.x.y には RT パッチがあたらないことが多いです 必要に応じて ターゲット用パッチ ( 例 :linuxsh) を適用 13

2. RT パッチの適用 Ingo の Web ページからパッチをダウンロード http://people.redhat.com/mingo/realtime-preempt/ 181 のディレクトリ ( 親子関係を含む ) 下にある 687 のファイルへのパッチ (2.6.16-rt23 の場合 ) 14

3..config の変更 PREEMPT_RT を有効にする 15

4. ターゲット依存コードの再確認 ここが一番やっかい 下記処理の振る舞いが変わるため アーキテクチャ依存コード (arch/, include/asm-*/) およびデバイスドライバ (drivers/) のコードを見直す必要がある スピンロック 割り込み禁止 割り込みハンドラ スケジューラに関わる処理部分等 16

スピンロックの再検討 スピンロックがスリープする 使用箇所でスリープしても問題ないかを確認する必要あり 見直しが必要な例 割り込みハンドラ内のスピンロック 割り込み禁止中 or プリエンプション禁止中のスピンロック スピンロックで作られたクリティカルリージョン内のアトミック処理 17

割り込み禁止処理の再検討 割り込み禁止が禁止にならない 本当に割り込みを禁止しなければならない箇所は変更する必要あり 見直しが必要な例 アトミック処理を実現するために用いられている割り込み禁止 割り込みハンドラが動かないことを保証するために使われている割り込み禁止 18

割り込みハンドラの再検討 割り込みハンドラがプロセスコンテキストで動く ハンドラ処理内で遅延とプリエンプションが許容できるかを判定する必要がある 見直しが必要な例 排他制御が期待されている処理 プリエンプション (& さらなる割り込み ) がないことを期待されている処理 ( 大きな ) 遅延が許されない処理 19

例 :include/asm-sh/atomic.h: PREEMPT_RT では割り込みが禁止されない 割り込みハンドラとの間で atomic 変数を共有している場合は まずい raw_local_irq_save/restore() に変更 20

5. コンパイルして動作確認 これも説明はいらないですね 安定して動かない場合は コード見直し & 動作確認を繰り返すことに 21

RTS7751R2D での作業 Linux 2.6.16 + linuxsh patch + RTS7751R2D 用パッチ + patch-2.6.16-rt29 アーキテクチャ依存コードの書き換え (Thanks リネオさん ) 不必要な raw_, compat_ の削除と追加 デバイスドライバ コードの見直し その他不都合回避 22

余談 :get_wchan(): でOops コードを見てみると procfs からのみコールされている &ps コマンドでしか使わなさそうなので 常に 0 を返して問題回避 ( テンポラリ ) 23

get_wchan() for alpha きれいなコードではないらしいが プリエンプションとの関係は不明 24

あっ 動作したっ! かも? 安定 の判定が難しい クリティカルリージョンや割り込みハンドラの振る舞いが変わるので 発見しにくいレースコンディションやデッドロックを見つけなければならない すべてのデバイスを高負荷状態で評価する? 安定な方向へ倒しすぎ も判定しにくい 効果 の判定が難しい 低負荷状態では恩恵が見えにくい さらには スループット低下もありうる 移植の方法 ( プリエンプションの機会を減らす ) によっては 効果がないことも考えられる レイテンシの改善はもちろんだが 通常時のスループット低下も評価したい 25

まとめと TODO PREEMPT_RT を SuperH ボード上に移植しました ( しています ) パッチを公開してたたいてもらう 他のボード ( デバイス ) に対応させる Ingo Molnar or LKML になげて RT パッチにマージしてもらう? ULDD への効果を評価する 26