• 検索結果がありません。

Androidのリアルタイム性評価及び改善方法の検討

N/A
N/A
Protected

Academic year: 2021

シェア "Androidのリアルタイム性評価及び改善方法の検討"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会第 74 回全国大会. 3A-3. Android のリアルタイム性評価及び改善方法の検討 東山知彦†. 増田大樹†. 情報技術総合研究所†. 三菱電機株式会社. 近年、Android を携帯情報端末以外の組込み機器に適 用する動きが高まっている。一般的に、組込み機器へ OS の適用を検討する際は、その OS が H/W リソース制約、消 費電力、リアルタイム性などを満足するか評価する必要 がある。その中でもリアルタイム性は特に重要な要素の 1 つである。例えば、制御システムに対し数秒もの応答 遅延が発生する可能性のある OS を搭載することはできな い。そこで本稿は Android のリアルタイム性を評価し、 評価結果を元にリアルタイム性改善方法について検討す る。. 2. Androidの構成 Android は Linux カーネルをベースとしており、その 上にライブラリ群が存在する。本稿では、ライブラリ群 と Linux カーネルの領域をまとめてシステム領域と定義 する。また、Android は Linux カーネル上で Dalvik とい う仮想マシンが動作しており、アプリケーションは基本 的にこの Dalvik 上で動作する。本稿では Dalvik、アプ リケーション、アプリケーションフレームワークをまと めてアプリケーション領域と定義する。. 評価のために、リアルタイム応答性測定アプリケーシ ョン(以下測定アプリ)を作成した。測定アプリはタイマ 機能を用いて 30msの周期起床を行い、想定する起床時間 と実際の起床時間のジッタを測定し、ジッタ分布を出力 する(Fig.1)。また、Javaのライブラリメソッドである Thread.setPriority()メソッドにより、測定アプリのス レッド優先度を最大にして実行した。 測定中は以下の2つを行いシステムに負荷をかけた。 (1)測定アプリの起動と同時に別プロセスでサービス を生成し、そのサービスが演算処理を繰り返す。 (2)外部の PC から ICMP フラッティング攻撃を行う。 (1)は cpu 負荷を(2)は割込み負荷を意図したものである。 初期値 想定する 起床時間. Fig.1. 評価環境. 今回の評価は、BeagleBoard.orgが製造・販売している 評 価 ボ ー ド BeagleBoard-xM 上 で 実 施 し た 。 Table 1 に BeagleBoard-xMのH/W構成を示す。 評価対象のAndroidはTI社が提供しているTI-AndroidGingerbread-2.3-Devkit-1.0[1]( 以 下 公 開 版 Android) を 使用した。Table 2にこのDevkitのS/W構成を示す。. 内容・性能. プロセッサ. TI DM3739 1.0GHz (ARM Cortex-A8). 主記憶. DDR 512MB. 外部記憶. micro SDHC(8GB). ネットワーク. 100Mbps Ethernet. Table 2 TI-Android-Gingerbread-2.3Devkit-1.0 の S/W 構成 コンポーネント. バージョン. Android. 2.3 (Gingerbread). Linux kernel. 2.6.32(Android 対応). Evaluation and improvement of Android as a realtime Operating system Tomohiko Higashiyama, Hiroki Masuda, Toshio Matsumoto † Information Technology R&D Center, Mitsubishi Electric Corporation. 1-29. 時刻. ジッタ. 時刻. タイマによるリアルタイム性評価方法. 4. 評価結果・考察 4.1. 公開版 Android のリアルタイム性能. 3.1 節で述べた公開版Androidを対象に、リアルタイム 性評価を行った結果をFig.2に示す。 評価の結果、公開版 Android は 30ms の測定周期に対し 最大 12.0ms もの遅延が発生することを確認した。. 4.2. Table 1 BeagleBoard-xM の H/W 構成. 初期値+ 初期値+ 初期値+ 初期値+ 周期×1 周期×2 周期×3 周期×4. 周期. 実際の 起床時間. 3. リアルタイム性評価方法. 機能. 評価方法. 3.2. 1. はじめに. 3.1. 松本利夫†. システム領域のリアルタイム性改善. 前節の結果を改善するため、システム領域における改 善を試みた。測定アプリはスレッド優先度を最大にして いるが大幅な遅延が発生した。Linux カーネルのスケジ ューリングを確認したところ、カーネルの Preemption Model が[No Forced Preemption]に設定されていること が分かった。そこでカーネルモード実行中でも優先度の 高いプロセスが実行可能になった時点で実行できるよう、 Preemption Model を[Preemptive Kernel]に変更した。 次に、スケジューリング以外の遅延原因を探るため、 /proc ディレクトリ以下を確認し、システム全体の状態 を分析した。その結果、ICMP 受信時にアライメントエラ ーが発生していることがわかった。この事から、トラッ プ処理が頻発し、この処理により遅延が発生している可 能性が考えられる。そこで、アライメントエラーが発生 しないようにカーネルに処理を施した。 上記 2 点を修正し、リアルタイム性評価を行った。そ の結果をFig.3に示す。公開版Androidの結果と比べて、 ジッタ分布のゆらぎ幅は小さくなった。しかし、最大遅 延は 10.2msであり、未だ改善の必要がある。. Copyright 2012 Information Processing Society of Japan. All Rights Reserved..

(2) 情報処理学会第 74 回全国大会. アプリケーション領域のリアルタイム 性改善. 4.3. 前節の課題である最大遅延の大きさを改善するため、 アプリケーション領域を調査した。測定アプリの /proc/[PID]ディレクトリ以下を確認した結果、プロセス 優先度は普通優先度設定になっていた。つまり、Java ス レッドの優先度は最大であっても、アプリケーションの プロセス自体の優先度がリアルタイム優先度でなかった ために、プリエンプトすることができず、前節の遅延が 発生したと考えられる。 普通優先度のプロセスをリアルタイム優先度に設定す るには、root 権限が必要である。しかし、Android アプ リケーションは一般ユーザー権限で動作するため、自身 をリアルタイム優先度に設定することはできない。そこ で、シリアルコンソールからのコマンド入力により、外 部から優先度を変更し測定を行った。 測 定 の 結 果 、 Fig.4 に 示 す と お り 、 最 大 遅 延 時 間 を 3.1msに抑えることができた。この結果から、アプリケー ションをリアルタイム優先度に設定することで、応答遅 延を大きく改善できることが分かった。 1600 1400. 発生回数. 1200 1000 800. 最大遅延. 600. 200 0. Fig.2. 2. 4. 6 遅延時間(ms). 8. 10. 12. 公開版 Android のリアルタイム性評価結果. 1600 1400. 発生回数. 1200 1000. 最大遅延. 800 600 400 200 0 0. 2. 4. 6. 8. 10. 12. 遅延時間(ms). Fig.3. システム領域に修正を施した Android のリアル タイム性評価結果. 1600 1400. 発生回数. 1200. 今回、市販の評価ボード BeagleBoard-xM 上で Android のリアルタイム性の評価を行った。その結果、公開版 Android で 12ms 程度遅延が発生することを確認した。こ れ に 対 し 、 1) プ リ エ ン プ テ ィ ブ モ デ ル を 変 更 す る 、 2)ping 応答時にアライメントエラー発生しないようにす る、3)アプリケーションをリアルタイム優先度設定にす るという変更を行うことで、最大応答遅延を 3ms 程度に 抑えることができた。 今回試作した方法では、事前に決めたアプリケーショ ン はリアルタイム優先度に設定できるが、ユーザーがリ アルタイム優先度に設定するアプリケーションを選択す ることはできない。今後はフレームワークを改造し、ユ ーザーが任意のアプリケーションをリアルタイム優先度 設定できる仕組みを構築する予定である。 また、他の Linux 評価[2]では 1ms 以下のリアルタイム 性も得られており、 Android も更なる改善の可能性があ る。今回は優先度、異常処理に焦点を絞って改善方法を 検討したが、今後は他のリアルタイム性阻害要因の分析 を行い、改善方法を検討する予定である。. 参考文献. 1000. [1]. 800. 最大遅延. 600 400. [2]. 200 0 0. Fig.4. 優先度設定自動化の改善試作. 前項では、アプリケーション起動後にコマンドライン 入力でリアルタイム優先度に設定したが、製品でコマン ドライン入力を行うことは不可能である。そのため、対 象のアプリケーション起動時に自動的にリアルタイム優 先度設定を行う手法が必要である。考えられる手法とし て以下のようなものが挙げられる。 1)Android では、全てのアプリケーションは Zygote とい うプロセスから fork されて作られる。その Zygote を root 化し、fork される子プロセスに root 権限を与え、 リアルタイム優先度設定を可能にする。 2) アプリケーションフレームワークを改造し、特定のア プリケーションをリアルタイム優先度に設定可能にす る。 3) バックグラウンドで動き続けるプロセスで特定のアプ リケーションの起動を監視し続け、起動を検知したら リアルタイム優先度に設定する。 Androidはアプリケーションのプロセス名がクラス名であ り、アプリケーションを簡単に特定できるので、今回は 3)の手法を試作した。この手法により、ユーザーがコマ ンドライン入力をせずに、特定のアプリケーションだけ をリアルタイム優先度で実行することが可能となった。 また、この方法でリアルタイム優先度に設定した測定ア プリでリアルタイム性評価を行った結果、Fig.4と同等の 結果が得られた。. 5. 結論と今後の課題. 400. 0. 4.4. 2. 4. 6 遅延時間(ms). 8. 10. 12. TI-Android-GingerBread-2.3-DevKit-1.0 ReleaseNotes,http://processors.wiki.ti.com/inde x.php/TI-Android-GingerBread-2.3-DevKit1.0_ReleaseNotes 徳丸潤一, 摂津敦, 落合真一, 松本利夫:マルチコ アシステムにおけるLinuxカーネル2.6のリアルタ イム性評価(情報処理学会第73回全国大会). アプリケーション領域に修正を施した Android のリアルタイム性評価結果. 1-30. Copyright 2012 Information Processing Society of Japan. All Rights Reserved..

(3)

参照

関連したドキュメント

 第一の方法は、不安の原因を特定した上で、それを制御しようとするもので

スライダは、Microchip アプリケーション ライブラリ で入手できる mTouch のフレームワークとライブラリ を使って実装できます。 また

修正 Taylor-Wiles 系を適用する際, Galois 表現を局所体の Galois 群に 制限すると絶対既約でないことも起こり, その時には普遍変形環は存在しないので普遍枠

に関して言 えば, は つのリー群の組 によって等質空間として表すこと はできないが, つのリー群の組 を用いればクリフォード・クラ イン形

本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1

携帯端末が iPhone および iPad などの場合は App Store から、 Android 端末の場合は Google Play TM から「 GENNECT Cross 」を検索します。 GENNECT

本資料は Linux サーバー OS 向けプログラム「 ESET Server Security for Linux V8.1 」の機能を紹介した資料です。.. ・ESET File Security

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot