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 内核上,内存压力很明显,并且经常调用内存不足的杀手。

我对此有两个问题:

  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 echo-system 的哪些功能会带来这样的要求,所以希望其他人可以告诉你。

您可以尝试调查内存区域以尝试查看 Android ICS 和 GB 之间的区别。只需做一个cat /proc/zoneinfo. 您可以在本文中找到有关这些区域的一些背景信息,但请注意它是针对 x86 架构描述的。

于 2013-03-13T20:48:48.350 回答