我试图使 linux 内存管理更加清晰,以用于调整和性能目的。
通过阅读IBM 网站上的这本非常有趣的红皮书“Linux 性能和调优指南”,我发现了一些我不完全理解的东西。
在 IA-32 等 32 位架构上,Linux 内核只能直接寻址物理内存的第一个 GB(考虑保留范围时为 896 MB)。所谓上面的内存
ZONE_NORMAL
必须映射到下面的1 GB。这种映射对应用程序是完全透明的,但分配内存页面ZONE_HIGHMEM
会导致性能下降。
- 为什么896 MB以上的内存必须映射到较低的1GB?
- 为什么分配内存页面会影响性能
ZONE_HIGHMEM
? - 那有什么
ZONE_HIGHMEM
用呢? - 为什么能够识别高达 4gb (
CONFIG_HIGHMEM=y
) 的内核只能使用第一个千兆字节?
提前致谢