【问题标题】:RAM split between lowmem and highmemRAM 在 lowmem 和 highmem 之间分割
【发布时间】:2013-03-10 10:07:47
【问题描述】:

我比较了运行 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)?

【问题讨论】:

    标签: memory-management linux-kernel arm embedded-linux


    【解决方案1】:

    据我回忆,高低内存之间的分割是内核的编译参数,所以应该可以不同地设置它(在编译时)。我不知道为什么在您的示例中为高内存区域提供了这么多。在具有 1 GB 物理 RAM 的 x86 上,低内存约为 896 MB,高内存约为 128 MB。

    Android 似乎需要比典型的 32 位 x86 桌面更高的内存,我不知道 Android echo-system 的哪些功能会带来这样的要求,所以希望其他人能告诉你。

    您可以尝试调查内存区域以尝试了解 Android ICS 和 GB 之间的区别。只需做一个cat /proc/zoneinfo。您可以找到一些背景 information on these zones in this article,但请注意它是针对 x86 架构描述的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2021-12-31
      • 2016-01-13
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多