Cin*_*bit 3 memory-management linux-kernel vmalloc
在32位x86平台上,如果vmalloc()可以从ZONE_NORMAL或ZONE_HIGHMEM分配内存,是否意味着即使我放大ZONE_HIGHMEM,vmalloc()可以使用的实际总范围也不变?我做了一个扩大ZONE_HIGHMEM的测试,vmalloc()的一次性分配可能比以前大得多.那么这是否意味着vmalloc()实际上只从ZONE_HIGHMEM分配内存?
vmalloc喜欢ZONE_HIGHMEM,如果它存在,但可以回归ZONE_NORMAL.
但是,在1GB或更多(即任何现代机器)的机器中,vmalloc受虚拟内存(vmalloc区域)的限制,而不受物理内存的限制.
在这种情况下,该vmalloc区域是128MB(除非放大vmalloc_reserve),ZONE_HIGHMEM而是加上1GB以上的所有内存 - 通常要大得多.
你放大的实际上是vmalloc虚拟内存区域,扩大它可以让你vmalloc更多.这间接扩大了ZONE_HIGHMEM,但这并不是很麻烦.
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |