3

Androidジンジャーブレッドとアイスクリームサンドイッチ(シアンCM9)を実行しているgalaxys2(arm exynos4)デバイスの/ proc/meminfoを比較しました。カーネルがメモリを低メモリと高メモリの間で異なる方法で分割することに気づきました。

ICS / CM9(3.0カーネル)の場合:

cat /proc/meminfo:

MemTotal:         843624 kB
MemFree:           68720 kB
Buffers:            1532 kB
Cached:           115720 kB
SwapCached:            0 kB
Active:           487780 kB
Inactive:          64524 kB
Active(anon):     436316 kB
Inactive(anon):     1764 kB
Active(file):      51464 kB
Inactive(file):    62760 kB
Unevictable:         748 kB
Mlocked:               0 kB
**HighTotal:        278528 kB**
HighFree:          23780 kB
**LowTotal:         565096 kB**
LowFree:           44940 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        435848 kB
Mapped:            45364 kB
Shmem:              2276 kB
Slab:              37996 kB
SReclaimable:      10028 kB
SUnreclaim:        27968 kB
KernelStack:       10064 kB
PageTables:        16688 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      421812 kB
Committed_AS:    8549052 kB
VmallocTotal:     188416 kB
VmallocUsed:      104480 kB
VmallocChunk:      26500 kB

GB(2.6カーネル)の場合:

cat /proc/meminfo:

MemTotal:         856360 kB
MemFree:           22264 kB
Buffers:           57000 kB
Cached:           337320 kB
SwapCached:            0 kB
Active:           339064 kB
Inactive:         379148 kB
Active(anon):     212928 kB
Inactive(anon):   112964 kB
Active(file):     126136 kB
Inactive(file):   266184 kB
Unevictable:         396 kB
Mlocked:               0 kB
**HighTotal:        462848 kB**
HighFree:           1392 kB
**LowTotal:         393512 kB**
LowFree:           20872 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        324312 kB
Mapped:            97092 kB
Shmem:              1580 kB
Slab:              29160 kB
SReclaimable:      13924 kB
SUnreclaim:        15236 kB
KernelStack:        8352 kB
PageTables:        23828 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      428180 kB
Committed_AS:    4001404 kB
VmallocTotal:     196608 kB
VmallocUsed:      104804 kB
VmallocChunk:      57092 kB

3.0カーネルではメモリの負荷が明らかであり、メモリ不足のキラーが頻繁に呼び出されることに気づきました。

これに関して2つの質問があります。

  1. 3.0レイアウト(highmemが少ないほどlowmemが多い)では、アプリケーションの使用可能なメモリが少なくなる可能性はありますか?それは高いメモリプレッシャーを説明できますか?
  2. 3.0カーネルのレイアウトを変更して2.6レイアウトに近づけることは可能ですか(つまり、highmemを増やしてlowmemを減らす)?
4

1 に答える 1

1

私が思い出す限り、高メモリと低メモリの分割はカーネルのコンパイル パラメータであるため、(コンパイル時に) 別の方法で設定できるはずです。あなたの例で高メモリ領域に多くが与えられている理由がわかりません。1 GB の物理 RAM を搭載した x86 では、低メモリの場合は約 896 MB、高メモリの場合は 128 MB です。

Android は、典型的な 32 ビット x86 デスクトップよりも多くのメモリを必要とするようです。Android エコー システムのどの機能がそのような要件をもたらすかはわかりません。

メモリ ゾーンを調査して、Android ICS と GB の違いを確認してみてください。単に実行しcat /proc/zoneinfoます。この記事では、これらのゾーンに関する背景情報をいくつか見つけることができますが、x86 arch について説明されていることに注意してください。

于 2013-03-13T20:48:48.350 に答える