- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图使 linux 内存管理更加清晰一些,以用于调优和性能目的。
通过阅读在 IBM website 上找到的这本非常有趣的红皮书“Linux 性能和调优指南”我遇到了一些我不完全理解的事情。
On 32-bit architectures such as the IA-32, the Linux kernel can directly address only the first gigabyte of physical memory (896 MB when considering the reserved range). Memory above the so-called
ZONE_NORMAL
must be mapped into the lower 1 GB. This mapping is completely transparent to applications, but allocating a memory page inZONE_HIGHMEM
causes a small performance degradation.
ZONE_HIGHMEM
中分配内存页会对性能产生影响? ZONE_HIGHMEM
的用途是什么?CONFIG_HIGHMEM=y
) 的内核只能使用第一个 GB?提前致谢
最佳答案
当用户进程陷入内核时,页表不会改变。这意味着一个线性地址空间必须能够覆盖用户进程可用的内存地址和内核可用的内存地址。
在允许 4GB 线性地址空间的 IA-32 上,通常线性地址空间的前 3GB 分配给用户进程,线性地址空间的最后 1GB 分配给内核。
内核必须使用它的 1GB 地址范围来寻址它需要的物理内存的任何部分。高于 896MB 的内存不“映射到低 1GB” - 发生的情况是低于 896MB 的物理内存在线性地址空间的内核部分中分配了一个永久线性地址,而高于该限制的内存必须在线性地址空间的剩余部分分配一个临时映射。
将 ZONE_HIGHMEM
页面映射到用户空间进程时对性能没有影响 - 对于用户空间进程,所有物理内存页面都是相等的。当内核需要访问 ZONE_HIGHMEM
中的非用户页面时,会对性能产生影响 - 为此,如果尚未映射,则必须将其映射到线性地址空间。
关于linux-kernel - 32 位和 64 位内核上的 zone_NORMAL 和 ZONE_HIGHMEM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145456/
在 linux 内核中,mem_map 是一个包含所有“struct page”描述符的数组。这些页面包括 lowmem 中用于动态映射 highmem 的 128MiB 内存。 由于lowmem大小
在 3:1 分割的系统中,大小为 896MB 的 ZONE_NORMAL 被永久映射到内核地址空间。这在内核地址空间中留下了 128MB 的空闲空间,根据我的理解,ZONE_HIGHMEM 页面被映射
我试图使 linux 内存管理更加清晰一些,以用于调优和性能目的。 通过阅读在 IBM website 上找到的这本非常有趣的红皮书“Linux 性能和调优指南”我遇到了一些我不完全理解的事情。 On
在32位x86平台上,如果vmalloc()可以从ZONE_NORMAL或ZONE_HIGHMEM分配内存,是否意味着即使我扩大ZONE_HIGHMEM,vmalloc()实际可以使用的总范围不变?我
我是一名优秀的程序员,十分优秀!