Android
におけるLRUを用いた終了プロセス選定
野 村 駿
*1,中 村 優 太
*1,坂 本 寛 和
*1,山 口 実 靖
*2LRU based Process Termination in Android Low Memory Killer
Shun NOMURA
*1, Yuta NAKAMURA
*1, Hirokazu SAKAMOTO
*1and Saneyasu YAMAGUCHI
*2Abstract
Android OS has become one of the most important platforms in the current computer systems. Android OS has its original process memory management system, which is called ‘low memory killer’. When an amount of free memory is less than a threshold, it selects processes based on its own policy and terminates the processes for allocating free memory. This process termination sometime causes user’s inconvenience. That is, re−launching the process is required for re−using the application if the process is terminated. Thus, selecting policy for termination is considered important. In this paper, we have proposed several selecting methods for process termination. One is based on LRU, another is based on application launching time, and the other is based on memory size. We have implemented these proposed methods and evaluate them with practical application launching log. Our experimental results demonstrated that our proposed method has enabled been able to decrease of application launching time.
1.はじめに Androidはスマートフォン,タブレットPC,音楽プレ イヤーなど様々なデバイスのOSとして採用されており, 2013年第 2 四半期においてそのシェアは 81.3%1)となっ ており,今も増加中である.この様に Android OS は広 く普及しており,重要性が高まっていると考えられる. Android には,low memory killer と呼ばれるプロセス メモリ管理システムが搭載されており,独自のルールに 従ってメモリの管理を行なっている.low memory killer は空きメモリ量が少なくなると起動され,メモリの空き 容量を確保するためにプロセスを強制終了する.このプ ロセスの強制終了により,ユーザが再度同じアプリケー ションを使用する場合に,プロセスの再起動が必要とな りユーザの待ち時間を増加させることがある. 本研究では,強制終了するプロセスの選定の改善によ りプロセス再起動にともなうユーザの待ち時間を低減す ることを目的として,新しい選定手法を提案する.そし て提案手法をオープンソースである Android に実装し, 評価を行う. 2.Android OS 2.1 アーキテクチャ Android OSはアプリケーション,アプリケーションフ レームワーク,ライブラリ,Androidランタイム,Linux カーネルで構成されている2). アプリケーション,アプリケーションフレームワーク, ライブラリ,AndroidランタイムにはAndroidのために新 規に開発された実装が多く含まれている.カーネルには Linuxカーネルが使用されており,多くの部分は変更さ れることなくそのまま使用されている.ただし,次節で 述べる low memory killer など Android 固有の機能も追加 されている.
2.2 low memory killer
Android には,low memory killer という独自のプロセ スメモリ管理システムが搭載されている.これは,メモ リの空き容量が閾値以下まで下がった場合に起動され,
adjとminfreeの関係に基づいてプロセスを選定し強制終
了するプログラムである.low memory killerが起動され ると,強制終了するプロセスの選定のために起動してい る全てのプロセスのadjを比較し,adjの数値がより高い プロセスを強制終了する候補にあげる.最高 adj のプロ セスが複数存在する場合,メモリ使用量を比較し,メモ リ使用量のより多いプロセスを強制終了する候補にあげ *1電気・電子工学専攻 *2情報通信工学科准教授
Android
に お
け
る
LRU
を
用
いた
終了
プ
ロセ
ス選定
野 村
駿
*1,中 村 優 太
*1,坂 本 寛 和
*1, 山
口実 靖
*2LRU
based
Process
Termination
in
Android
Low
Memory
Killer
Shun
NOMURA
*1 ,Yuta
NAKAMURA
* i ,Hirokazu
SAKAMOTO
*iand
Saneyasu
Ym
AGUCHI
*2Abstract
Aridroid
OShas
beccme
one Ofthe
most important platfbrms inthe
curTent computer systems.
Aiidroid
OShas
itSoriginal process memory management systern
,
which is ca皿ed唖
10w
menloryldlle
ゼ.
When all amoullt of 丘ee memory isless
tha且athreshold,
it selects processesbased
on its ow 且policy a且d
terminates the processes for allocat 血g free memory.
This process termi且a 廿 sonledme causes usefs inco且ve且ience.
That is,
re−
1aunchi且g the p ss is requiredfbr re
−
usi且g the apPlication 廿the process is terrni且ated.
Thus,
selecd 且9 Policy for termina廿o且is co且sidered important 】h this paper,
we have prqp〔msed severa1 selecti且g methods fOr process termi且a 廿.
0且e is based LRU,
跏 ther isbased on applicatio 且 launching time
,
and the other is based on memory size.
We have implemented these prqposed methods a且d evaluate them with pfacdcal apPlication launchi且g lo9.
Our experime 且tal results demo且st温ted that ourpr〔脚 sed method has enabled been able to d 肥ase ofapplica 廿 1aunchi且g time
.
1
.
は じ め に Aridreidはスマー
トフォ ン,
タブレッ トPC,
音 楽 プレ イ ヤー
など様々 なデバ イス のOS として採 用 されてお り,
2013 年第2四半 期におい て その シェ ァは81.
3%1)となっ てお り,
今 も増 加 中である.
この様にAndroid OS は広 く普 及 してお り,
重 要 性が高 まっ てい ると考え られ る.
Androidに は
,
low memary killerと呼 ばれ るプロ セ スメモ リ管理 シ ス テ ム が搭 載さ れ て お り
,
独 自のルー
ル に 従っ て メ モ リの管 理 を行 なっ て い る.
low memory killerは 空 きメ モ リ量 が 少 な くな ると起 動 され
,
メ モリの空 き 容 量 を確保するため にプロ セスを 強 制 終 了する.
このプ ロ セス の強 制終 了に より,
ユー
ザが再 度 同じアプ リ ケー
シ ョンを使用 する場合に,
プロ セ スの再起動が必要と な りユー
ザの待 ち 時 間 を増 加させ ること がある.
本研究で は,
強制終了 する プロセスの選定の改善に よ り プロセ ス再 起動にと もなうユー
ザの待ち時 間 を低 減す る こ と を目的と して,
新しい 選 定 手 法を提 案 する.
そ し て提案手 法 をオー
プンソー
ス であるAndroid
に実 装 し,
評価を行 う.
唯1 電 気・
電 子工学専 攻 *U 情 報 通信工学 科准 教 授 2.
Android OS 2.
1 アー
キテクチャ Android OS はアプ リケー
シ ョ ン,
アプ リ ケー
シ ョ ン フ レー
ム ワー
ク,
ライ ブラ リ,Android
ラン タイム,
Linux カー
ネル で構 成さ れてい る2).
アプリ ケー
ション,
アプリ ケー
シ ョンフ レー
ムワー
ク,
ライ ブラ リ,
Androidラン タイム に はAndroidのた め に新 規に開発さ れ た実装が多く含ま れ てい る.
カー
ネ ル に は Linuxカー
ネルが 使 用 されてお り,
多 くの部 分 は変 更 さ れ るこ とな くその ま ま使 用 されてい る.
た だし,
次 節で述べ る
low
memorykiller
な どAndreid
固 有の機 能 も追 加さ れてい る
.
2.
2
10w
memorykiller
Androidに は
,
low memory killerとい う独 自の プロ セスメモ リ管理 シ ス テムが搭載さ れ てい る
.
これ は,
メモリの空 き容 量が閾値 以 下 まで下がっ た 場 合に起動さ れ
,
幼
’
とminfree の関 係に 基づ いて プロセス を選 定し強 制 終 了するプログ ラムである.
low
memorykiller
が起動さ れる と
,
強制終了 する プロ セス の選定のた め に起動して いる全ての プロ セスの αのを 比較し
,
adj’
の数値が より高いプロセス を 強 制 終 了 す る 候 補 に あ げ る
.
最 高edj
’
の プロ セス が複 数 存 在 する場 合,
メモ リ使用量を 比較し,
メモ26 工学院大学研究報告
る.
2.3 adjとminfree
adj と minfree の関係は,/init.rc で定義されており,前 述の様に,low memory killerにおいて強制終了するプロ セスを選定する際に参照される.adj はプロセスの状態 を表しており,プロセスの状態が変化するたびに数値が 増減する.プロセスの状態によるadjの値を表 1 に示す. adjの値が小さいプロセスほど強制終了されにくく, フォアグラウンドのプロセスが最も強制終了されにく い.minfree は,プロセス強制終了実行の閾値となる空 きページ数であり,adjによってランク分けされている. Android4.0.3におけるadjとminfreeの関係を表 2 に示す. 表 2 中の minfree の値の単位はページ[4KB]である.例 えば,メモリ空き容量が 38000[KB](9500[4KB])にな ると,adj の値が 9 以上の数値を持つプロセスが強制終 了される候補に上がる.そして,空きメモリ量が38428 [KB](9607[4KB])以上になるか,adj が 9 以上のプロ セスがなくなるまでプロセスを強制終了する. 3.アプリケーションの起動手順 Android のアプリケーションを新規に起動する場合, 図1の様な手順に従って起動される.①ユーザがアプリ ケーションのアイコンをタッチするとホームアプリケー ション(Launcher)がアプリケーション起動要求のイン テ ン ト を ActivityManager に 送 信 す る. ②ActivityMan-agerがZygoteにプロセス生成要求を送信する.③Zygote が自分自身をforkし,子プロセスを生成する.④新しい プロセスが初期化される.⑤アプリケーションのライフ サイクルに従って onCreate(),onStart(),onRe-sume()が呼び出される. また,起動済みであるがバックグラウンド状態にある プロセスの再開は,図 2 の様な手順に従って行われる. ①ユーザがアプリケーションのアイコンにタッチすると ホームアプリケーションが再開要求のインテントを Ac-tivityManagerに送信する.②ActivityManager は対象の バックグラウンドアプリケーションプロセスに再開要求 を出す.③バックグラウンドアプリケーションプロセス は再開要求を受けてアプリケーションプロセスとして起 動しフォアグラウンド状態となる3).本論文では前者を 「新規起動」,後者を「再開」と呼ぶ.
起動済みプロセスがlow memory killerによって強制終 了されることなく再利用された場合は,上記の「再開」 の手続きが行われるが,プロセスが強制終了された後に 再利用された場合は「新規起動」の手続きが行われる. 通常,「再開」よりも「新規起動」の方が要する時間が 長いため,後に再利用するプロセスの強制終了はユーザ の待ち時間を増加させてしまう. 4.提案手法
本章で,LRU に基づいて low memory killer の強制終
表1 プロセスの状態,種類によるadjの値 adj プロセスの状態,種類 0 FOREGROUND_APP 1 VISIBLE_APP 2 PERCEPTIBLE_APP 3 HEAVY_WEIGHT_APP 4 BACKUP_APP 5 SERVICE 6 HOME_APP 7 PREVIOUS_APP 8 SERVICE_B 9 HIDDEN_APP_MIN 15 HIDDEN_APP_MAX 表2 Android4.0.3 におけるadjとminfreeの関係
adj minfree[4kB] 0 3674 1 4969 2 6264 4 8312 9 9607 15 11444 図1 アプリケーションの起動手順 図2 アプリケーションの再開手順 26 工学 院大 学 研 究 報告 る
.
2.
3
adj とminfree 幼’
とminfree の関 係は,
/init
.
rcで定 義さ れ てお り,
前 述の様に,
low memory killerに おい て強制終了 する プロ セ ス を 選 定する際に参 照さ れ る.
幼’
はプロ セ ス の状 態 を表 してお り,
プロセス の状 態 が 変 化 す るた びに 数 値 が 増 減 する.
プロセスの状 態に よ るadij の値を表1
に 示す.
幼’
の値 が 小 さい プロ セ ス ほど強 制 終 了 さ れ に く く,
フォ ア グラ ウ ン ドの プロ セスが最 も強制 終了さ れ に く い.
minfree は,
プロ セ ス強 制 終 了 実 行の閾値 となる空 きペー
ジ数であ り,
幼’
に よっ て ランク分 けさ れ ている.
Aridreid4
.
0.
3にお けるadj’
とminfree の関 係 を表2 に示 す.
表2 中の癬晦 の値の単 位 はペー
ジ[4KB ]で あ る.
例 えば,
メモ リ空き容 量が38000[KB](9500[4KB ])に な ると,
adj’
の値 が9以 上の数 値 を 持つ プロ セスが 強 制 終 了さ れ る候補に 上 が る.
そ して,
空きメ モリ量が38428 [KB ](9607[4KB ])以 上になる か,
adijが9以 上の プロ セ ス が なくな る ま で プロ セ ス を強制終了 する.
表1 プロセス の状 態,
種 類に よ る adJ の値 衂 プロ セ ス の状 態,
種 類 0 FOREGROUND一
APP 1 VISIBLE一
APP 2 PERCEPTIBLE一
APP
3 HEAVY
−
WEIGHT一
APP4 BACKUP
一
APP
5 SERVICE
6 HOME
一
APP 7 PREVIOUS
一
APP8 SERVICE
一
B9 HmDEN
−
APP一
MIN15 HmDEN
−
APP一
MAX表2 Android4
.
0.
3に お け る attj’
とminttee の関係3 .
アプリケー
ション の起 動 手 順 Aridreidの アプ リ ケー
シ ョ ンを 新 規 に 起 動 す る 場 合,
図1
の様な手 順に従っ て起動さ れ る.
ユー
ザ がア プ リ ケー
ションの アイコ ンをタッチするとホー
ムアプリ ケー
図 1 アプリケー
ショ ン の 起 動 手 順 再 タッチ 図2 アプリケー
ション の再 開 手順 ショ ン (Launcher )がアプ リ ケー
ショ ン起動要求のイン テ ン ト をACtiVityMdanagerに 送 信 す る.
ACtivityMan−
ager がZygoteにプロセ ス生 成 要求を送 信する
.
Zygoteが自分 自身をforkし
,
子 プロ セ ス を生 成する.
新 しいプロセ ス が初期化さ れ る
.
アプ リ ケー
ション の ラ イフサイクル に従っ て onCreate O
,
onStart O,
onRe−
sume
O
が呼び出さ れ る.
ま た,
起動済み である がバ ッ ク グ ラ ウン ド状 態にある プロセス の再 開は,
図2の様な手 順に従っ て行わ れ る.
ユー
ザが アプリ ケー
ショ ンの アイコ ンに タッチすると ホー
ム アプリ ケー
シ ョ ンが再 開 要 求のインテン トをAc−
tiVityManager
に送 信する.
ActiVityManager
は対 象の バ ッ ク グラ ウン ドアプ リケー
シ ョ ンプロセスに再 開 要 求 を 出 す.
バ ッ クグラ ウン ドアプ リケー
シ ョ ンプロセス は再 開 要求を受 けて アプリ ケー
ションプロ セスと して起 動しフ ォァグラ ウ ン ド状 態と な る3).
本 論 文で は前 者を 「新 規起動」,
後者を 「再 開」と呼ぶ.
起 動 済みプロ セ スが10w memory killerによっ て強 制 終 了さ れ るこ と な く再 利 用さ れ た場合は,
上記の 「再 開」 の手 続 きが 行 わ れ る が,
プロセスが 強 制 終 了 さ れた後 に 再 利 用さ れ た場 合は 「新 規 起 動 」の手 続き が行わ れ る.
通 常,
「再 開 」より も 「新 規 起動」の方が要する時 間が 長いた め,
後に再 利 用 する プロ セス の強制終了はユー
ザ の待ち時間を増加さ せ て し まう.
4 .
提 案 手 法了プロセスを選定する LRU 手法と,アプリケーション の新規起動時間をもとに選定する起動時間手法と,これ らを組み合わせた手法を提案する.
前述のように,low memory killerは第一次判定として
adjによる判定を行い,第二次判定としてメモリ使用量 による判定を行う.以下における F−LRU および F−起動 時間手法は第一次(First)判定に LRU や起動時間を用 いる手法であり,S−標準手法および S−メモリ×LRU 手 法は,第二次(Second)判定にメモリ量やメモリ量× LRUを用いる手法である. 4.1 F-LRU 手法 本節で,強制終了するアプリケーションの一次判定を LRU方式を用いて行うF−LRU手法を提案する. 本手法では,ユーザが起動したアプリケーションを LRUにより管理し,LRU 順にて新しい(最後の起動か らの時間が短い)ものの adj を下げ強制終了の対象とな りにくくする. 後述の評価用実装では以下の様に実装されている.長 さ15の配列を用意し,ユーザが起動したアプリケーショ ン履歴を保持する.配列はLRUにて管理する.そして,
low memory killerにおける強制終了プロセス選定の際,
アプリケーションの履歴内の順位を調査し,履歴のn番 目にあるプロセスの adj を n/2 に変更する.順位は新し い方から数え,最小は 0 とし,小数点以下は切り捨てと する.ただし,変更前の adj が変更後の adj より低い場 合は,変更前の adj を優先する.この手法により,最近 使用されたアプリケーションのプロセスが強制終了され にくくなり,ユーザの待ち時間を低減することができる と期待される.履歴内に記録のないアプリケーションの adjは変更を加えない.履歴の長さや,adj の下げ幅は チューニングパラメータである. 4.2 F-起動時間手法 本節で,アプリケーションの新規起動時間を考慮して 強制終了するプロセスの一次判定を行う F−起動時間手 法を提案する.本手法では,アプリケーションの新規起 動時間を計測する.そして,新規起動時間が長く,強制 終了した場合に増加させるユーザの待ち時間が大きいア プリケーションを強制終了されにくくする. アプリケーションの新規起動時間は,アプリケーショ ンのライフサイクルにおける onCreate() の呼び出し から onResume() の呼び出しまでの時間とし,提案シ ステムでは5章での手法によりアプリケーションごとの 新規起動時間の履歴を取る.そして,履歴内のアプリ ケーションに対して新規起動時間の長い順に順位(rank) をつける.例えば,新規起動時間の一番長いアプリケー
ションのプロセスは,rank=0となる.low memory
kill-erによる強制終了プロセス選定の際,アプリケーション 履歴内に存在するアプリケーションのプロセスの rank を参照し,adj を rank/2 にすることで,新規起動時間の 長いアプリケーションを強制終了されにくくする.これ により,アプリケーションの起動に長い時間を要しユー ザの待ち時間を大きく増加させることを回避できると期 待される. 後述の評価用実装では,アプリケーションの新規起動 時間の履歴は最新の 10 個を保持し,それより古いもの 破棄する.よって,長時間前に起動し最近使用していな いアプリケーションが長期にわたり強制終了の対象とな らないことは生じない.履歴の長さとadj の下げ幅はパ ラメータである. 4.3 F-標準手法 比較のため,第一次判定をadjで行う標準low memory killerの手法を本稿ではF−標準手法と呼ぶ. 4.4 F-LRU×起動時間手法 本節で,F−LRU 手法と F−起動時間手法を組み合わせ て第一次判定を行うF−LRU×起動時間手法を提案する. 本手法では,F−LRU 手法と F−起動時間手法を並列し て動作させ,両値の小さい方をそのプロセスの adj とす る. 4.5 S-メモリ×LRU 手法 本節では,まず S−標準手法を定義し,続いて S−メモ リ×LRU手法の提案を行う. 4.5.1 S-標準手法 本手法では,強制終了プロセス選定の第二次判定をプ ロセスのメモリ使用量で行い,よりメモリ使用量の多い プロセスを強制終了する対象とする.
本手法は,標準low memory killerの動作である.比較 のため,これをS−標準手法と呼ぶ. 4.5.2 S-メモリ×LRU 手法 本項で,強制終了プロセス選定の第二次判定をプロセ スのメモリ使用量とLRU順の積で行う手法を提案する. アプリケーションがLRUの履歴内に存在しない場合は, LRU順として(履歴長+1)を用いる. 5.実 装 提案手法を実装するために,Android のカーネルおよ びフレームワークに変更を加えた.以下にその詳細につ いて述べる. 5.1 カーネル内部 カーネル内部ではまず,lowmemorykiller.c にお いてlow memory killerが強制終了するプロセスを選定す
了 プロ セス を 選 定 す るLRU 手 法と
,
アプ リ ケー
シ ョ ン の新 規 起動時間 をもと に 選定 する起動時間手 法と,
これら を組み合 わせた 手 法 を提案する
.
前述の ように
,
low memary killerは第一
次判定と して adij による判 定 を行い,
第二次 判 定として メ モ リ使 用 量 による 判 定 を 行 う.
以 下 に お け るF−
LRU およ びF一
起 動 時間手 法は第一
次 (F廿st)判定にLRU や起動時間 を 用 い る 手 法で あ り,
S一
標 準 手 法 およ びS一
メ モ リ×LRU 手 法は,
第二 次 (Second )判定にメ モ リ量や メ モ リ量× LRU を用い る手 法である.
4.
1
F−LRU
手 法 本 節で,
強制 終了するア プ リ ケー
ショ ン の一
次判定を LRU 方 式 を用い て行 うF−
LRU 手 法 を提 案 す る.
本 手 法で は,
ユー
ザ が起動し たア プ リ ケー
シ ョ ン を LRU により管 理 し,
LRU 順 にて新 しい (最 後の起 動 か らの 時間が短い ) もの のedj
’
を下 げ 強制終了の対象と な りにく くする.
後述の評価用実装で は 以下の様に実装さ れ てい る.
長 さ15
の配列を 用意し,
ユー
ザ が起動し たアプ リ ケー
ショ ン履 歴 を 保 持 す る.
配 列 はLRU にて管 理 す る.
そ して,
low
mem αrykiller
にお ける強 制 終 了 プロ セス選 定の際,
アプリ ケ
ー
シ ョ ン の履 歴 内の順 位 を 調 査 し,
履 歴の犯番 目にある プロ セ スの cidj’
をn/2に変 更する.
順 位は新し い方か ら数 え,
最 小は0 とし,
小 数 点 以 下は切 り捨て と する.
た だ し,
変 更前の adijが変更 後のedj
’
より低い場 合は,
変 更 前の 幼’
を優 先する.
こ の手 法に より,
最 近 使 用さ れ たアプ リ ケー
シ ョ ン の プロ セスが強 制 終 了さ れ に く くな り,
ユー
ザの待ち 時 間 を低 減するこ とが できる と期 待さ れ る.
履 歴 内に記 録の ない アプリ ケー
シ ョ ン の 幼’
は変 更を加えない.
履歴の 長さ や,
adij の 下 げ幅は チュー
ニ ングパ ラメー
タであ る.
4.
2 F一
起 動 時 聞 手 法 本 節で,
アプリ ケー
シ ョンの新 規 起動時 間 を考慮 して 強 制 終 了 する プロセス の一
次 判 定を行 うF一
起 動 時 間 手 法を提 案する.
本 手法で は,
アプ リ ケー
ショ ン の新規起 動 時 間 を計 測 する.
そして,
新 規 起 動 時 間が長 く,
強 制 終了し た場合に増 加さ せ るユー
ザの待ち時間が大きい ア プ リケー
シ ョ ンを強 制 終 了 され に く くす る.
アプ リ ケー
シ ョン の新 規 起 動 時 間は,
アプ リ ケー
シ ョ ンの ライフ サイクル にお けるonereateO
の呼 び 出 し か らonResume O の 呼び出し まで の時間と し,
提 案シ ス テムで は5 章での手法に よりア プ リ ケー
ショ ン ご との 新 規 起 動 時 間の履 歴 を 取 る.
そ して,
履 歴 内の アプ リ ケー
ショ ンに対し て新 規 起動時間の長い順に順 位 (rank) をつ ける.
例 え ば,
新 規 起動時 間の一
番 長いアプリ ケー
シ ョ ン のプロセス は
,
rankニ
0とな る.
10w memory kil1−
er に よ る 強制 終了 プロセス 選定の際,
アプ リ ケー
ショ ン 履 歴 内に存 在する アプリ ケー
ショ ンのプロ セス のrank を参照 し,
αのをran幻2にする こ とで,
新 規 起動 時間の 長いアプリ ケー
シ ョ ンを 強 制 終 了さ れ にく くする.
これ により,
アプ リケー
シ ョ ン の起 動 に 長い 時 間 を 要 しユー
ザの待ち時間 を大き く増 加さ せ ること を 回避で き る と期 待 さ れ る.
後述の評価用実 装で は,
アプ リ ケー
シ ョン の新 規起動 時 間の履 歴は最 新の 10個 を保 持 し,
そ れ よ り古い もの 破棄する.
よっ て,
長時間前に起動し最近使用し てい な い アプリ ケー
シ ョ ンが長 期にわたり強 制 終 了の対 象とな らない こ とは生 じ ない.
履 歴の長 さと幼’
の下 げ 幅 はパ ラメー
タ で あ る.
4.
3 F一
標 準 手 法比較のた め
,
第一
次判定を幼’
で行 う標if
low memary killerの手 法 を本 稿で はF一
標準手 法と呼ぶ.
4.
4
F−LRU
×起動時間手法 本 節で,
F−
LRU 手 法とF一
起動時間手 法を組み合わ せ て第一
次 判 定 を行 うF−
LRU × 起 動 時 間 手 法 を提 案 す る.
本 手 法で は,
F−
LRU 手 法 とF一
起動時 間 手 法 を並 列 し て動作させ,
両 値の小さい方 をそのプロ セ ス の幼’
とす る.
4.
5 S一
メ モ リ×LRU 手 法 本 節で は,
まずS一
標 準 手 法 を定 義 し,
続いて S一
メ モ リ×LRU 手 法の提案を行う.
4.
5.
1S一
標 準 手 法 本 手 法で は,
強 制 終 了 プロ セ ス選 定の第二次 判 定 を プ ロ セ ス の メ モ リ使 用 量で行い,
よ りメ モリ使 用 量の多い プロセ ス を強制終了 する対象とする.
本 手 法 は
,
標 準low memary killerの動 作であ る.
比 較のため
,
これ をS一
標 準 手 法と呼ぶ.
4.
5.
2
S一
メ モリ×LRU
手 法 本 項で,
強 制 終 了プロ セス選 定の第二次 判 定を プロ セ スのメモ リ使用 量とLRU 順の積で行 う手 法を提 案する.
アプリ ケー
シ ョ ンがLRU の履 歴 内に存 在 し ない 場 合は,
LRU 順と し て (履歴長+1
)を用い る.
5 .
実 装 提案手 法 を 実 装するため に,Android
の カー
ネルおよ びフ レー
ム ワー
ク に変更を加えた.
以下に その詳細につ い て述べ る.
5.
1 カー
ネル内 部 カー
ネル 内部 で は まず,
lowmem 。rykiller.
c に お28 工学院大学研究報告 る箇所に変更を加えた. F−LRU 手法では,次節のユーザ空間プログラムより アプリケーション起動時刻の情報を得て,アプリケー ションの起動順をカーネル内の配列にて LRU を用いて 管理する. F−起動時間手法では,カーネルがユーザ空間より /procインターフェイスを介してアプリケーションの 新規起動時間の情報を受け取り,それをカーネル内の配 列に格納して履歴として管理し,新規起動時間の長い順 に rank をつける.そして,メモリが不足し強制終了プ ログラムを選定する際には,アプリケーション履歴内に 存在するアプリケーションのプロセスのrankを参照し, adjをrank/2とする. 5.2 ユーザ空間部 ユーザ空間部では,アプリケーションフレームワーク の実装にアプリケーションライフサイクルメソッド (onCreate()など)の呼び指し時刻を記録する機能と, 記録されたメソッド呼び出し時刻とアプリケーション起 動時間を /proc インターフェイスを通じてカーネルの
low memory killerに伝える機能を追加した.F−LRU 手
法ではアプリケーションの起動時刻を,F−起動時間手 法ではアプリケーションの新規起動時間を伝えている.
6.評 価
本章にて,標準low memory killer(以下標準手法と呼 ぶ)および提案手法のアプリケーションの合計起動時間 の評価を行う.
6.1 評価方法
標準low memory killer,起動時間ベース手法,LRU手 法が実装されている Android スマートフォンにおいて, 複数のアプリケーションを順に起動し,その起動に要し た時間を測定した.実験は,表3に示す仕様のスマート フォンを用いて行った. 6.2 評価シナリオ 本稿では,起動するアプリケーションの順番を定めた ものを“シナリオ”と呼ぶ.本実験では,第三者から許 可を得て取得したユーザの実際の 1 日のアプリケーショ ン使用履歴であるシナリオを 2 つ(シナリオ A,B)用 意し,標準手法と全ての提案手法の評価を行った.(シ ナリオ AとシナリオBのアプリケーション起動順は表6 と表 7 参照.) アプリケーション起動とアプリケーション起動の間に ホームアプリケーション(Launcher)を起動し,実際の 使用順に近いものとしている. 6.3 評価結果 シナリオA,Bにおける評価結果を図3,4に示す.各 図 の 縦 軸 は, シ ナ リ オ の ホ ー ム ア プ リ ケ ー シ ョ ン (Launcher)以外の全アプリケーションの起動時間の合 計であり,少ないほど優れていると言える. また,シナリオ A,B におけるそれぞれの手法のアプ リケーションの新規起動,再開の数を表4,5に示す. 通常,新規起動による起動時間の方が再開による起動 時間より長いため,基本的に新規起動の回数が少ないほ ど合計起動時間が短くなり,優れた手法であると考える ことができる.ただし,新規起動時間はアプリケーショ ンにより異なるため,新規起動時間の回数が同一でも合 計起動時間に差が生じる. 図と表より,両シナリオにおいて標準手法より全ての 提案手法の方が合計起動時間が短く,また新規起動の回 数も少ないまたは同等であることが確認でき,標準手法 よりも優れた手法であることがわかる. 提案手法同士を比較すると,F−LRU−S−メモリ手法と 表3 実験環境 Device name Nexus S
OS Android4.0.3
CPU Cortex A8 (Hummingbird) Processer 1GHz Memory 512MB 図3 シナリオ A における評価結果 図4 シナリオ B における評価結果 28 工学 院大 学 研 究 報告 る箇 所 に変 更 を加 えた
.
F−
LRU 手 法で は,
次 節のユー
ザ空間 プロ グ ラム よ り アプリ ケー
シ ョン起動時 刻の情 報 を得て,
アプリ ケー
シ ョン の起 動順を カー
ネル内の配列にて LRU を用い て 管 理する.
F一
起 動 時 間 手 法で は,
カー
ネル がユー
ザ 空 間より /proc イン ター
フェ イ ス を介 し てア プ リ ケー
シ ョ ン の 新 規 起 動 時 間の情 報 を 受 け 取 り,
そ れ をカー
ネル内の配 列に格 納して履歴 と して管理 し,
新 規起動時間の長い順 にrmk をつ ける.
そ して,
メ モ リ が不足 し強 制 終 了 プ ロ グ ラ ム を選定する際に は,
アプ リ ケー
ショ ン履歴内に 存 在 する アプリ ケー
シ ョ ン のプロ セ ス の rank を 参 照 し,
幼’
をranlO/2とす る.
5.
2
ユー
ザ 空間部 ユー
ザ 空 間部で は,
アプ リケー
シ ョ ン フ レー
ム ワー
ク の実 装にア プ リ ケー
シ ョ ン ライ フサ イ クル メ ソ ッ ド (。nCreate O など)の呼び指 し時 刻 を記 録する機 能と,
記録さ れ た メソ ッ ド呼び出し時刻とア プ リ ケー
ション起 動時間 を /proc イン ター
フェ イ ス を 通 じ て カー
ネル のlow memory killerに 伝 え る機 能 を 追 加 した
.
F−
LRU 手 法で はア プリ ケー
ショ ンの起動時 刻 を,
F一
起動時 間 手 法で は アプリ ケー
シ ョ ン の新 規 起動時 間 を伝 えてい る.
6 .
評 価本 章 にて
,
標if
low memory killer(以 下 標 準 手 法と呼 ぶ)および提案手 法の アプリ ケー
シ ョ ンの合 計 起動時 間の評 価を行 う
.
6.
1
評 価 方 法標
if
low memory killer,
起 動 時 間ベー
ス手 法 LRU 手法が実装さ れ てい る
Android
スマー
トフ ォ ンに おい て,
複 数の アプ リケー
シ ョ ンを順 に起 動 し,
その起 動 に要 し た時 間 を 測 定 した.
実 験 は,
表3に 示 す 仕 様の ス マー
ト フォ ンを用い て行っ た.
表3 実験 環 境 Device nameNexus S OSAndmid4.
0.
3CPUCortex A8 (Hu皿 ning1 血d)Pmcesser IGHz
M ory512MB 意 し
,
標 準 手 法と全て の提 案 手 法の評 価 を行っ た.
(シ ナ リ オA
と シ ナ リ オBの ア プ リ ケー
シ ョ ン起動順は表 6 と表7
参 照.
) アプ リ ケー
シ ョン起動とアプ リ ケー
シ ョン起動の 間に ホー
ムアプリ ケー
シ ョ ン (Launcher )を起動し,
実 際の 使 用 順 に 近い もの としてい る.
6.
3
評価 結果 シナ リオA,
Bに お け る評 価 結 果 を 図3,
4に示 す.
各 図の 縦 軸は,
シ ナ リ オの ホー
ム ア プ リ ケー
シ ョ ン (Launcher )以 外の全アプリ ケー
シ ョ ン の起動時 間の合 計であ り,
少ない ほ ど優れ てい る と言える.
また,
シ ナ リ オA,
B にお ける そ れ ぞ れの手 法の アプ リ ケー
シ ョ ン の新 規 起 動,
再 開の数 を表4,
5に示 す.
通常,
新 規 起動に よ る起動時間の方が 再 開 に よ る起動 時 間より長い ため,
基 本 的 に新 規 起 動の 回数 が 少 ない ほ ど合 計起動時間が短くなり,
優れ た手法で ある と考える こ と がで きる.
た だ し,
新 規 起動時 間は アプリ ケー
シ ョ ンに より異な る た め,
新規起 動時間の回数が同一
でも合 計 起動時間 に差が生じ る.
図と表より,
両シナ リオ において標 準 手 法より全て の 提案手 法の方が合 計 起動時 間が短 く,
また 新 規 起動の 回 数 も少 ない また は同等で あるこ と が確認で き,
標準手 法 よりも優れ た手法である こ と が わ か る.
提 案 手 法 同士 を比 較 する と,
F−
LRU−
S一
メ モ リ手 法と 開一
嶇.
40薗
お−
亙・・一
屡酉一
藁準 毒”一
!
: o「
/
器
:.望
:曇
慧
:1
≡
1
:
:
♂
圏
ノ
ノ
ロ
ノ
ノ
!
/
6.
2 評価シ ナリ オ 本 稿で は,
起動するアプ リ ケー
シ ョ ンの順番を定め た もの を“
シナ リオ11 と呼ぶ.
本 実 験で は,
第三者 か ら許 可 を得て取得し たユー
ザの実 際の1
日の アプ リ ケー
ショ ン使 用 履 歴である シ ナ リ オを2
つ (シ ナ リ オA ,B
)用 図3 シ ナ リオAに お け る評価結果/
[
ノ
■
ノ
γ
/
/
図4 シ ナ リオBに お け る評 価 結果表4 シナリオ A における新規起動,再開の数 手法 新規起動回数 再開回数 F−標準−S−標準 53 101 F−LRU−S−標準 41 113 F−起動時間−S−標準 39 115 F−標準−S−メモリ×LRU 48 106 F−LRU×起動時間−S−標準 44 110 F−LRU−S−メモリ×LRU 42 112 表5 シナリオ B における新規起動,再開の数 手法 新規起動回数 再開回数 F−標準−S−標準 76 320 F−LRU−S−標準 35 361 F−起動時間−S−標準 74 322 F−標準−S−メモリ×LRU 76 320 F−LRU×起動時間−S−標準 33 363 F−LRU−S−メモリ×LRU 32 364 表6 シナリオ A におけるアプリケーション起動順
Setting File Manager Gmail KINGSOFT Office for Android Phone Skype Google Chrome Gmail
Opera Browser Gmail Gmail KINGSOFT Office for Android Gmail Skype Google Chrome Gmail
Music Gmail Gmail Google Chrome Gmail Google Chrome Google Chrome Gmail Google Chrome Gmail Gmail Google Chrome Gmail Google Chrome Skype Gmail Opera Browser Gmail Google Chrome Google Chrome Skype File Manager Gmail Gmail Gmail Google Chrome Google Chrome Google Chrome Skype Gmail Skype Gmail
Gmail Skype Google Chrome KINGSOFT Office for Android Google Chrome Gmail Skype Gmail
Gmail Google Chrome Google Chrome KINGSOFT Office for Android KINGSOFT Office
for Android Gmail Skype Gmail
Gmail Google Chrome Google Chrome KINGSOFT Office for Android Phone Gmail Skype Gmail
Google Chrome Google Chrome Google Chrome Google Chrome Gmail Skype Skype Gmail Google Chrome Google Chrome Google Chrome Google Chrome Gmail Gmail Skype Gmail Google Chrome Google Chrome Google Chrome Skype Gmail Gmail Skype Gmail
Google Chrome Google Chrome Gmail KINGSOFT Office for Android Gmail Gmail Google Chrome Skype
Google Chrome Google Chrome Gmail Gmail Gmail Skype Skype Google Chrome KINGSOFT Office
for Android Google Chrome Gmail Gmail Google Chrome Gmail Google Chrome Google Chrome Gmail Google Chrome Gmail KINGSOFT Office for Android Phone Skype Google Chrome Google Chrome Google Chrome Gmail Gmail Gmail Phone Google Chrome Google Chrome Google Chrome Google Chrome Gmail Gmail Gmail Gmail Skype KINGSOFT Office for Android Skype Skype Gmail Gmail Google Chrome Google Chrome Google Chrome KINGSOFT Office for Android
Gmail Camera Gmail
表7 シナリオ B におけるアプリケーション起動順
File Manager Email Google Chrome Setting JotaTextEditor Email Dropbox Gmail File Manager Email Dropbox Gmail Setting Setting Dropbox Gmail Setting Setting Google Chrome Gmail Setting Setting Dropbox Google Chrome Setting Setting Dropbox Gmail Setting Setting Dropbox Gmail Setting Setting Dropbox Gmail Google Chrome Setting Dropbox Gmail Dropbox Setting Dropbox Gmail Google Chrome Email Map Gmail Gmail Email Gmail Google Chrome Gmail Setting Gmail Gmail Gmail Setting Gmail Google Chrome Google Chrome Setting Gmail Gmail Setting Email Gmail Gmail Setting Setting Setting Gmail Google Chrome Setting Setting Gmail Google Chrome Setting Gmail Gmail Gmail Gmail JotaTextEditor Gmail Gmail Google Chrome Gmail Gmail Gmail Google Chrome Gmail Gmail Setting Setting Gmail Camera Setting Setting Gmail Gmail Gmail Google Chrome Gmail Gmail Google Chrome Google Chrome Map Camera Google Chrome Google Chrome ConnectBot File Manager Google Chrome Setting ConnectBot Gallery Google Chrome Setting ConnectBot File Manager Gmail Setting ConnectBot File Manager Google Chrome Setting ConnectBot Gmail Google Chrome Setting ConnectBot File Manager Gmail Setting ConnectBot Google Chrome Google Chrome Setting ConnectBot Setting Google Chrome Setting Google Chrome Setting Google Chrome Setting Setting Setting Gmail Setting Setting Setting Gmail Setting Setting Gmail Gmail Setting Setting Gmail Gmail Setting Google Chrome Gmail Gmail Google Chrome ConnectBot Gmail Gmail Setting ConnectBot Gmail Gmail Setting ConnectBot Gmail Gmail Setting ConnectBot Gmail Gmail Setting ConnectBot Google Chrome Google Chrome Setting ConnectBot Gmail Google Chrome Phone ConnectBot Gmail Google Chrome Setting MicrosoftRemoteDesktop Gmail Google Chrome Setting MicrosoftRemoteDesktop Camera Google Chrome Setting MicrosoftRemoteDesktop File Manager Gmail Gmail MicrosoftRemoteDesktop Camera Google Chrome Gmail ConnectBot File Manager Google Chrome Gmail ConnectBot Gallery Google Chrome Google Chrome MicrosoftRemoteDesktop File Manager Google Chrome Setting MicrosoftRemoteDesktop Gallery Google Chrome Setting Google Chrome File Manager Setting Setting Setting Gallery Setting Setting Setting File Manager Setting Gmail Setting File Manager Setting Gmail Setting Gmail Setting Gmail Setting Gmail Setting Gmail Gmail Gmail Setting Gmail Gmail Gmail Setting Gmail Gmail Gmail Setting Gmail Gmail Gmail
表4 シナ リオAに おける新 規起 動
,
再 開の数 表7 シナ リオBに おけるアプ リケー
ション起 動順 手法 新 規 起 動 回数 再 開 回数 F一
標 準一
S一
標 準 53 101 F−
LRU−
S一
標 準 41 113 F一
起動 時 間一
S一
標 準 39 115 F一
標 準一
S一
メ モ リ XLRU 48 106 F−
LRU x起 動時 間一
S一
標 準 44 110 F−
LRU−
S一
メ モ リ XLRU 42 112 表5 シ ナ リオBに お け る新 規起 動,
再 開の数 手法 新 規起動 回数 再 開 回数 F一
標 準一
S一
標 準 76 320 F−
LRU−
S一
標 準 35 361 F一
起 動 時 間一
S一
標 準 74 322 F一
標 準一
S一
メ モ リ XLRU 76 320 F−
LRU x起 動時 間一
S一
標 準 33 363 F−
LRU−
S一
メモ リ XLRU 32 364 表6 シ ナ リオA に お け るアプ リケー
ショ ン起 動 順 S曲 臼1eM叩 囲 mNGSOFro 面ce i e 蹶 G嘩 C e 囲 眠raBr。梱 肛 囲 囲 mNGSOFro面ce i 囲 蹶 G嘩 C e 囲 Mu曲 囲 囲 G b e 囲 G嘩 eG 嘩 C e 囲 G嘩 e 囲 囲 G b e 囲 G嘩 e 蹶 囲 0卩 Br跚 肛 囲 G雌 C e G嘩 e 蹶 臼1eM叩 囲 囲 囲 G嘩 eG 雌 C e G嘩 e 蹶 囲 蹶 囲 囲 蹶 G 嘩 C e mNGSOFro 面ce i G嘩 e 囲 蹶 囲 囲 G b eG 嘩 C e mNGSOFro 面ce i mNGSOFro 田ce 血rAn 血岨 囲 蹶 囲 囲 G b eG 嘩 C e mNGSOFro面ce i e 囲 蹶 囲 G嘩 eG 嘩 eG 嘩 C e G b e 囲 蹶 蹶 囲 G嘩 eG 嘩 eG 雌 C e G b e 囲 囲 蹶 囲 G嘩 eG 嘩 eG 嘩 C e 蹄 囲 囲 蹶 囲 G嘩 eG 嘩 eG 皿齟 mNGSOFro 面ce A囗血 ゴd 囲 囲 G 雌 C e 蹶 G嘩 eG 嘩 eG 皿齟 囲 囲 蹶 蹶 G嘩 e mNGSOFro 田ce 血rA血 岨 G嘩 eG 皿齟 囲 G嘩 C e 囲 G 雌 C e G嘩 e 囲 G嘩 eG 皿齟 mNGSOFro 面ce A囗血 ゴd e 蹶 G 嘩 C e G b e G嘩 e 囲 囲 囲 e G嘩 eG 嘩 C e G b e G嘩 e 囲 囲 囲 囲 蹶 mNGSOFro 田ce 血rAndr 岨 蹄蹶 囲 囲 G b e
G嘩 eG 嘩 emNGSOFro 田ce 血rAndr 岨
囲 血 囲 晩 M毋 er 囲 G 衂e 晦 」。囲 E血肛 囲 D叨 面x 囲 晩 M毋 er 囲 D叨面x 囲 Se吶 Se吶 D叨面x 囲 Se吶 Se吶 G衂e 囲 Se吶 Se吶 D叨 面x G 衂e Se吶 Se吶 D叨 面x 囲 Se吶 Se吶 D叨面x 囲 Se吶 Se吶 D叨 面 x 囲 肋噌e 砒 艦 Se吶 D叨 面 x 囲 D軸 DXSe 吶 D叨 面 x 囲 肋噌e砒
艦
囲 M亘P 囲 G皿
an 囲 圃 G 衂e G皿an Se吶 圃 囲 G皿an Se吶 圃 G衂 e 肋噌e 砒 艦 Se吶 圃 囲 Se吶 囲 圃 囲 Se吶 Se吶 晦 囲 肋噌e砒 艦 Se吶 晦 囲 肋噌e 砒 艦 Se吶 圃 囲 G皿an G皿an 」。囲 E面肛 囲 G皿an ⊂ 国eChr。 圃 囲 G皿an ⊂ 国e砒。 圃 囲 Se吶 Se吶 圃 C日皿 肛a Se吶 Se吶 圃 囲 G皿an 肋噌e 砒 。 圃 囲 Go 噌e 肋噌e 砒 艦 M亘P C日皿 肛a G 衂e 肋噌e 馳 m 艦 C皿皿血 晩 M毋 er 肋噌e砒 艦 Se吶 C皿皿血 G組1ery 肋噌e砒 艦 Se吶 C皿皿血 晩 M毋 er G皿an Se吶 C皿皿血 晩 M毋 er 肋噌e 砒 艦 Se吶 C皿皿血 囲 肋噌e 砒 艦 Se吶 C皿皿血 晩 M毋 er G皿
an Se吶 C皿皿
血 G 衂e 肋噌e 砒 艦 Se吶 C皿皿血 晦 肋噌e 砒 艦 Se吶 G衂e 晦 肋噌e 砒 艦 Se吶 晦 晦 G皿
an Se吶 晦 晦 G皿
an Se吶 晦 囲 G皿an Se吶 晦 囲 G皿an Se吶 G衂e 囲 G皿an ⊂ 国e 砒 。 C皿皿血 囲 G皿an Se吶 C皿皿血 囲 G皿an Se吶 C皿皿血 囲 G皿an Se吶 C皿皿血 囲 G皿an Se吶 C皿皿血 G衂 e 肋噌e 馳 m 艦 Se吶 C皿皿血 囲 肋噌e 馳 m 艦 Pb 艦 C皿皿血 囲 肋噌e馳m 艦 Se吶 Mi肛 閃面 砿d〕e5kL。P 囲 肋噌e馳m 艦 Se吶 Mi肛 閃面 砿d〕e5kL。PC 日皿 肛a 肋噌e馳m 艦 Se吶 Mi肛 閃面 砿d〕e5kL。P 晩 M毋 er G皿an G皿an Mi肛 丘R ユ砿d〕e5kL。PC 日皿 肛a 肋噌e 砒 艦 G皿an C皿皿血 晩 M毋 er 肋噌e 砒 艦 G皿an C皿皿血 G組1ery 肋噌e砒 艦 ⊂ 国eChr。 Mi肛 閃面 砿d〕e5kL。P 晩 M嬋 肋噌e馳m 艦 Se吶 Mi肛 閃面 砿d〕e5kL。PG 組1ery 肋噌e 馳 m 艦 Se吶 G衂e 晩 M嬋Se吶 Se吶 晦 G組1ery
Se吶 Se吶 晦 晩 M嬋 Se吶 G
皿
an 晦 晩 M嬋 Se吶 G皿an 晦 囲 Se吶 G皿an 晦 囲 Se吶 G皿an 圃 囲 Se吶 G皿an 圃 囲 Se吶 G皿
an 圃 囲 Se吶 G皿an 圃 囲30 工学院大学研究報告 F−LRU−S メモリ×LRU 手法が両シナリオにおいて優れ た性能を示しており,第一次判定においては LRU を用 いることが好ましいことが分かる. 6.4 アプリケーションの起動時間 アプリケーションごとの起動時間は図5の通りである. 図より,アプリケーションにより起動時間に大きな差 があることが分かる. 7.考 察 今回提案した手法では,アプリケーションの新規起動 時間は onCreate() の開始時刻から onResume() の開 始時刻までとしており,再開時間はonRestart()の開 始時刻から onResume() の開始時刻までとしている. しかし,アプリケーションによっては onResume() が 開始した後にデータの読み込みやページの読み込みを行 うことがあり,これによりユーザには待ち時間が生じて しまうことが考えられる.この様な場合,実際にユーザ の待ち時間の増加の程度は,本稿で定義した「アプリ ケーション起動時間の増大量」を大きく上まわることに なり,提案手法により得られるユーザの体感的待ち時間 の低減は前章の評価をさらに上まわるものになると期待 できる.例えば,Webブラウザアプリケーションの多く がこれに該当し,プロセスが強制終了されてしまった後 にアプリケーションを使用すると onResume() の開始 後に以前閲覧していたページの再読み込みが発生し, ユーザはこの間待たされることとなる.また,タブ型の ブラウザの場合は閲覧タブの変更を行うたびに以前は読 み込み済であったページの再読み込みが生じユーザが待 たされることとなる. そのため,本稿で定めたアプリケーションの起動では なく,onResume() の開始後に発生する処理に要する 時間も考慮した手法を適用することでユーザの待ち時間 のさらなる軽減を図ることができると予想される. 8.関連研究 Android アプリケーションの起動時間の調査方法に関 する研究としては,文献 3 )4 )の研究がある.これら において,ユーザによるスクリーンのタッチからアプリ ケーション起動の完了までの時間の計測方法が示されて いる.また,実際のアプリケーション起動時間の測定結 果と考察が示されている.本稿における起動時間の測定 は当該研究で提案されている手法に基づき行われてい る. Linux カ ー ネ ル の モ ニ タ リ ン グ ツ ー ル と し て は, FTrace5,6),SystemTap7,8),LTTng9,10),OProfile11)がある.
しかし,これらは Linux 用に構築されているため An-droidの解析には適さず,具体的には本研究で必要とな るアプリケーションフレームワークやDalvik VMの動作 の解析ができない.例えば,アプリケーションフレーム ワーク内におけるアプリケーションライフサイクル (onCreate(),onRestart(),onStart(),onRe-sume())の時刻を取得することができず,アプリケー ション起動時間の調査をすることができない. アプリケーション起動時間の短縮に関する研究として は,Zygote の preload クラスの増加による起動時間の短 縮の研究12)がある.当該研究は,Zygoteによる読込済み
Setting Gmail Gmail Simeji(日本語入力キーボード) Setting Gmail Gmail Gmail
Gmail Gmail Gmail Gmail Gmail Gmail Google Chrome Gmail Gmail Gmail Google Chrome Gmail Gmail Gmail Google Chrome Gmail Gmail Gmail Google Chrome Gmail Gmail Gmail Gmail Google Chrome Gmail Gmail Gmail Google Chrome Gmail JotaTextEditor Gmail Google Chrome Gmail Setting Gmail Gmail Gmail Setting Gmail busybox Setting Google Chrome Gmail Google Chrome Setting busybox Gmail Google Chrome Setting Setting Setting Gmail Email Setting Setting Google Chrome Setting Setting Setting Google Chrome Email Setting Setting Google Chrome Setting Setting Setting Google Chrome Email Setting Camera Google Chrome Setting Setting Camera Google Chrome Email Gmail Setting Google Chrome Email Google Chrome Setting Google検索 Email Gmail Setting Gmail Email Gmail Gmail Gmail Email Google Chrome Gmail File Manager Gmail Setting Setting Gmail Email Setting Setting Gmail Email Setting Setting Gmail Email Setting Setting Gmail Email Google Chrome Camera Gmail Email Google Chrome Camera File Manager Email Google Chrome Setting Gmail
図5 各アプリケーションの平均新規起動時間 30 工学 院大 学 研 究 報告 S曲 囲 囲 踊 i 〔日本語入力キ
ー
ボー
ド〕 S曲 囲 囲 G皿副 囲 囲 囲 G皿
副 囲 囲 G 嘩 C e G皿
副 囲 囲 G嘩 C e G皿副 囲 囲 G嘩 C e G皿副 囲 囲 G嘩 C e G皿副 囲 囲 囲 G 啣eC e 囲 囲 囲 G啣eC e 囲 J血 E面L。r 囲 G啣eC e 囲 S曲 囲 G皿副 囲 S曲 囲 bu町b呱 S曲 G嘩 e 囲 G 啣eC e S曲 汐b呱 囲 G啣eC e S曲 S曲 S曲 G皿副 E皿副 S曲 S曲 G啣eC e S曲 S曲 S曲 G 啣eC e E皿副 S曲 S曲 G 啣eC e S曲 S曲 S曲 G 啣eC e E皿副 S曲 Ca皿 ra G啣eC e S曲 S曲 Ca皿 ra G啣eC e E皿副 囲 S曲 G啣 eC e E皿副 G嘩 eS 曲 G 啣e検索 E皿副 囲 S曲 G皿副 E皿
副 囲 囲 G皿
副 E皿副 G嘩 eG 皿齟 FneM呻 囲 S曲 S曲 G皿副 E皿副 S曲 S曲 G皿副 E皿
副 S曲 S曲 G皿
副 E皿
副 S曲 S曲 G皿
副 E皿副 G嘩 eCa 皿 ra G皿副 E皿副 G嘩 eCa 皿 ra FneM呻 E皿副 G嘩 eS 曲 G皿副−
1
■
■
■
■ ■ ■■
■
■
■
レ α・診
』 昌 巨 櫨 益 層 繋 嚇 望 酔 1.
4.
冨1・
z尼
ノ
継
ワ
グ
f
始 時刻 まで としてお り,
再 開 時 間 は。nRestart O の 開 始 時 刻か らonResumeO
の 開始 時 刻ま で と し てい る.
しかし,
アプリ ケー
シ ョンに よっ て はonResume O が 開始し た後にデー
タの読み込み やペー
ジの読み込み を行 うこと があ り,
これ によりユー
ザに は待ち時 間が生 じて しま うこ とが 考 え られ る.
この様 な場 合,
実 際 にユー
ザ の待ち時間の増 加の程 度は,
本 稿で定 義し た 「アプ リ ケー
シ ョ ン起 動 時 間の増 大 量 」 を大 き く上 ま わ るこ とに な り,
提案手法に より得ら れ るユー
ザの体感的待ち時間 の低 減は前 章の評 価 をさらに上 ま わるものになる と期待 で き る.
例 え ば Web ブ ラ ウザアプ リ ケー
ション の多く がこれ に該 当し,
プロセス が 強制 終了 さ れ て し まっ た後 にアプ リ ケー
シ ョ ン を使 用 す ると。nResumeO
の 開 始 後に 以前 閲 覧し てい たペー
ジの 再読み込み が発 生し,
ユー
ザ はこの間待たされ るこ と とな る.
また,
タブ 型の ブラ ウザの場合は閲覧タ ブの変更を行 うた び に 以前は読 み込み済で あっ たペー
ジの再 読み込み が生 じユー
ザが待 た さ れ る こ と と な る.
そのた め,
本 稿で定め たアプ リ ケー
ショ ンの起動で は な く,
。nResume O の 開 始 後 に 発 生 す る処 理 に 要 す る 時 間 も考慮 した 手 法 を適 用するこ とでユー
ザの待ち 時 間 のさらなる軽 減 を図ること がで きる と予 想さ れ る.
図5 各アプリケー
ション の平均新 規 起 動 時 間 F−
LRU−S
メモ リ×LRU 手法が両シナリ オ に おい て優れ た性 能 を示 してお り,
第一
次 判 定におい て はLRU を用 い るこ と が好ま しい こと が分か る.
6.
4 アプ リケー
ションの起 動 時 間 アプ リ ケー
シ ョン ご との起 動 時 間は図5の通 りである.
図より,
アプリ ケー
シ ョンに より起動時 間に大 き な差 がある こ と が分か る.
8 .
関 連 研 究7 .
考 察 今回提案し た手 法で は,
アプ リ ケー
ショ ンの新 規 起動 時 間はonCreate O の開 始 時 刻か らonResume O の開 Aridroidアプ リケー
シ ョ ン の起 動 時 間の調 査 方 法 に 関 する研 究 と して は,
文献 3 )4 )の研 究がある.
これら に おい て,
ユー
ザに よ るス ク リー
ン の タッチ か らア プ リ ケー
シ ョン起動の完 了 まで の時 間の計 測 方 法が示さ れ て い る.
また,
実 際の アプリ ケー
シ ョ ン起 動 時 間の測 定 結 果と考 察が示さ れ てい る.
本稿に おける起動 時間の測定 は 当 該 研 究で提 案 さ れて い る 手 法 に 基づ き行 わ れてい る.
Linux
カー
ネル のモ ニ タ リ ン グ ツー
ル と して は,
F[lrace5
’
6),
SystemTap7’
B),
】LT“
lrng9・
i°),
OProfilell)がある.
し か し,
こ れ ら はLinux用 に構 築さ れ てい る た めAn−
droidの解 析に は適さず
,
具 体 的に は本 研 究で必 要とな るアプ リ ケー
ショ ン フレー
ム ワー
ク やDalvik VM の動作の解 析 がで き ない
.
例 え ば アプ リ ケー
シ ョ ン フ レー
ム ワー
ク内に お けるア プ リ ケー
シ ョ ン ライ フサ イ クル(onCreate
O ,
onRestart (),
onStartO ,
onRe−
sume O )の時刻を取得する こ と がで きず,
ア プ リ ケー
ショ ン起 動時間の調 査をすること が で き ない.
アプ リケ
ー
シ ョ ン起 動 時 間の短 縮 に 関 す る研 究としては
,
Zygoteのprel
【}ad ク ラ スの増 加に よ る起動時間の短クラスの数を増加させることによりアプリケーション起 動時におけるストレージからのクラス読み込み量を減少 させ,起動時間の短縮を実現している.しかし,強制終 了されたアプリケーションの起動時間の短縮を考える当 該研究の手法と,強制終了するアプリケーションの最適 化を考える本稿の手法は目的が大きく異なっている.ま た両手法は排他的な関係になく,両手法を同時に用いて いくことが好ましいと考えられる. おわりに
本論文で我々はlow memory killerにおける強制終了プ ロセスの選定手法に着目し,LRU による選定手法とア プリケーションの起動時間を考慮した選定手法等を提案 した.そしてこれらの手法の評価結果を示し,提案手法 が標準手法よりもアプリケーション起動時間を短縮でき ることを示した.また,全提案手法の中でも特に LRU による手法が優れていることを示した. 今後は,onResume() の開始後に発生する処理に要 する時間も考慮した選定手法について考察していく予定 である. 参考文献
1)Android Captures Record 81 Percent Share of Global Smart-phone Shipments in Q3 2013 :
https://blogs.strategyanalytics.com/WSS/post/2013/10/31/Android −Captures−Record−81−Percent−Share−of−Global−Smartphone− Shipments−in−Q3−2013.aspx
http://www.idc.com/getdoc.jsp?containerId=prUS23638712 2)What is Android?|Android Developers:
http://developer.android.com/guide/basics/what−is−android.html 3)永田恭輔,山口実靖:Android アプリケーションの起動性
能解析システムとその評価,マルチメディア,分散,協調と モバイル(DICOMO2012)シンポジウム,pp.83−90(2012) 4)Kyosuke Nagata, Saneyasu Yamaguchi, “An Android Application
Launch Analyzing System”, 8th ICCM : 2012 International Con-ference on Computing Technology and Information Management, (2012/04/24)
5)Steve Rostedt. ftrace tracing inftrastructure. http://lwn.net/Articles/270971/. SystemTap http://sourceware.org/systemtap/
6)Frank Ch. Eigler. “Problem solving with systemtap”, In Pro-ceedings of the Ottawa Linux Symposium 2006, 2006.
7)LTTng Project http://lttng.org/
8)T. Bird, “Measuring Function Duration with Ftrace”, in Proc. of the Japan Linux Symposium, 2009.
9)M. Desnoyers, M.R. Dagenais, “The LTTng Tracer : A low im-pact performance and behavior monitor of GNU/Linux”, Proceed-ings of Ottawa Linux Symposium 2006, 2006, pp.209−223. 10)J. Levon and P. Elie. Oprofile : A system profiler for linux.
http://oprofile.sf.net, September 2004. 11)Valgrind http://valgrind.org
12)Kyosuke Nagata, Yuta Nakamura, Shun Nomura and Saneyasu Yamaguchi, “Measuring and Improving Application Launching Performance on Android Devices”, 4th International Workshop on Advances in Networking and Computing (WANC ’13)
クラス の数 を増 加 させるこ とによりアプ リ ケ
ー
シ ョ ン起 動時に お け る ス ト レー
ジ か らのク ラ ス読み込み量を減 少 させ,
起動時 間の短 縮 を 実 現 してい る.
しかし,
強 制 終 了さ れ たアプ リ ケー
シ ョン の起動 時間の短縮を考える当 該 研 究の手 法と,
強 制 終 了する アプリ ケー
シ ョ ン の最 適 化 を考 え る本 稿の手 法 は 目的 が 大 き く異 なっ てい る.
ま た 両手 法は排 他的 な 関係に な く,
両手 法を 同時に 用い て い くこ とが好 ま しい と考 え られ る.
お わ り に本 論文で我々 は
low
memorykiller
に おける強制終了プロ セスの選定 手 法に着目 し
,
LRU に よ る 選定 手 法とア プ リケー
シ ョ ン の起 動 時 間 を考 慮 した選 定 手 法 等 を提 案 し た.
そ し てこれ らの手 法の評価 結果 を 示 し,
提案手 法 が 標 準 手 法より もアプ リケー
シ ョ ン起 動 時 間 を 短 縮で き る こ と を示し た.
ま た,
全提 案手 法の中で も特にLRU による手 法が優れていることを示 した.
今 後は,
onResumeO
の 開始 後に発生 する処理 に要 する時間も考慮し た 選定 手 法につ い て考察し てい く予定 であ る.
参
考 文 献1)Android Captures Record 81 Percent Share of Global Smart
−
Phone Shiprnents in
Q3
2013:htU】sV例blogs
.
strategyanalytics.
cormVWSSfpost12013 /IOrSユIAndoid
−
Captures−
Record−
81−
Percent−
Share−
of−
Glol】al−
Srnartphone−
Shiprnents
−
in−
Q3−
2013.
aspxhttp
Vfwww.
idc.
corTVgetdoc.
jsp
?containerld=
prUS23638712 2)What is Andoid?1Andoid
Developers:httpVfdeveloper
.
android.
corqtgUided】asicS!what−
is−
android.
html3)永田恭輔
,
山 口実靖:Androidア プ リ ケー
ショ ンの起 動性 能 解 析シ ステム と その評 価,
マ ルチメディア,
分 散,
協調とモ バイル (DICOMO2012 )シンポ ジ ウム
,
pp.
83−
90 (2012)4)KyosUke Nagata
,
Saneyasu Yarnagudhi,
“
Ari Android ApplicationLaunCh Analyzing Systern
”
,
8th ICCM :2012 lntamational Con−
ference on Computing Teclmology and lnformation Managernent
,
(2012/04/24)
5)Steve Rostedt
.
ftrace trac nng inftrastructue.
h帥 伽 ll
.
n 醇 削 de醐7097V.
Syst 脂phttpVlsourceware
.
org 匹sySterntap 〆6)Frank Ch
.
Eigler.
‘
T’
roblem solving with systemtap”
,
h pm−
ceedings ofthe Odawa I血nux Symposiur【L 2006
,
2006.
7)HT P朗ect htΦ朔ttng
.
orY8)TB
,
『Meas囲 cdon Duration輌th Ftracざ,
in Pmc.
oftheJapan Ijnux Symposiur【LJ 2009
.
9)M
.
Desnoyers, M.
R.
Dagenais,‘
’
TlieLTTng Thacer:A low im
−
paCt perforTnance and behavior rnonitor of GNUILinux
”
,
Proceed−
ings ofOttawa I血nux Symposiur【L 2006
,
2006,
pp.
209−
223.
10)
J.
Levon and P EIie.
Oprofile:Asystem profiler for linux.
httPVIoProfile
.
sf.
net,
Septernl】er 2004.
11) 丶脚 nd httPVf》algrind
.
org12)Kyosuke Na彫 Ita
,
丶血ta Nakamura,
Shun Nomura and SaneyasuYarnaguchi
,
『Measuring and ImproVing Application LaunchingPerformance on ArLdroid Devices
【
,
4th internationa1 WorkShop onAdvances血Networking and Computi (WANC