2010年07月01日

Androidのlowmemorykillerが発動したときのログ

Androidではメモリが足りなくなったときに、プロセスを強制終了させてメモリを開放させるという機構が入っています。Low memory killer と呼ばれるものです。

これが発動したときの典型的なログがとれたのでちょっと紹介します。



Android 2.2 をビルドしてemulatorを起動し、JavaScriptのベンチマークテストのページをブラウザで開きました。

このページ(V8 benchmark)です。

すると、このページの実行にはメモリがたくさん必要らしく、コンソールに以下のようなカーネルログが ...

select 217 (droid.deskclock), adj 15, size 3521, to kill
select 236 (d.process.media), adj 15, size 3646, to kill
send sigkill to 236 (d.process.media), adj 15, size 3646
select 217 (droid.deskclock), adj 15, size 3488, to kill
send sigkill to 217 (droid.deskclock), adj 15, size 3488
select 257 (droid.bluetooth), adj 15, size 3472, to kill
send sigkill to 257 (droid.bluetooth), adj 15, size 3472
select 269 (m.android.email), adj 14, size 3593, to kill
send sigkill to 269 (m.android.email), adj 14, size 3593
select 194 (d.process.acore), adj 8, size 4156, to kill
select 286 (viders.calendar), adj 13, size 3477, to kill
send sigkill to 286 (viders.calendar), adj 13, size 3477
select 194 (d.process.acore), adj 8, size 4136, to kill
select 296 (com.android.mms), adj 12, size 3594, to kill
send sigkill to 296 (com.android.mms), adj 12, size 3594
select 194 (d.process.acore), adj 8, size 4114, to kill
select 314 (.quicksearchbox), adj 11, size 3266, to kill
send sigkill to 314 (.quicksearchbox), adj 11, size 3266
select 194 (d.process.acore), adj 8, size 4082, to kill
select 323 (android.protips), adj 10, size 3172, to kill
send sigkill to 323 (android.protips), adj 10, size 3172
select 194 (d.process.acore), adj 8, size 4047, to kill
select 332 (m.android.music), adj 9, size 3144, to kill
send sigkill to 332 (m.android.music), adj 9, size 3144
select 193 (ndroid.launcher), adj 4, size 3851, to kill
select 194 (d.process.acore), adj 8, size 3955, to kill
send sigkill to 194 (d.process.acore), adj 8, size 3955
select 193 (ndroid.launcher), adj 4, size 3695, to kill
select 340 (.cooliris.media), adj 7, size 3138, to kill
send sigkill to 340 (.cooliris.media), adj 7, size 3138
select 193 (ndroid.launcher), adj 4, size 3630, to kill
send sigkill to 193 (ndroid.launcher), adj 4, size 3630
select 146 (putmethod.latin), adj 1, size 2882, to kill
send sigkill to 146 (putmethod.latin), adj 1, size 2882
select 70 (logcat), adj 0, size 68, to kill
select 350 (android.browser), adj 0, size 16780, to kill
send sigkill to 350 (android.browser), adj 0, size 16780

lowmemorykillerがばったばったとプロセスを殺していき、最後にブラウザまで殺してしまってそこで終了。

何事もなかったようにホーム画面を表示し、システムとしては不安定にはなっていません。

emulatorはデフォルトではメモリが96MBなのですが、このページのJavaScriptを実行するにはこれでは足りないようです。コマンドラインオプション -memory 256 を追加して起動するとlowmemorykillerが発動することなくこのページのJavaScriptベンチマークを実行することができました。

JavaScriptエンジンはV8でなくjscのほうを使いました。V8だとなぜかメモリが256MBでも落ちてしまいました。

このログはAndroid用Linuxカーネルの以下のソースから出ています。

drivers/staging/android/lowmemorykiller.c



トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード