Chinaunix

标题: zone的疑惑 [打印本页]

作者: embeddedlwp    时间: 2012-05-24 13:09
标题: zone的疑惑


对这个图有个疑问:

#define GFP_SLAB_BUG_MASK (__GFP_DMA32|__GFP_HIGHMEM|~__GFP_BITS_MASK)

slab分配的时候,不从ZONE_DMA32和ZONE_HIGHMEM分配,那么如果是64位系统,插一个4GB内存,那么岂不是系统很快就分配不了slab了?
作者: embeddedlwp    时间: 2012-05-24 20:41
顶啊!
作者: lofeng410    时间: 2012-06-09 23:23
帮顶,同样有这个困惑
作者: chishanmingshen    时间: 2014-06-11 16:54
求解!
作者: humjb_1983    时间: 2014-06-12 09:11
本帖最后由 humjb_1983 于 2014-06-12 09:12 编辑

个人理解:
内存分配时有fallback order,当指定从某个zone中分配而此时该zone中又没有空闲内存时,内核会自动fallback到下一级的zone中分配,默认的order为:
The zone fallback order is MOVABLE=>HIGHMEM=>NORMAL=>DMA32=>DMA.
slab分配中不允许使用__GFP_DMA32|__GFP_HIGHMEM标记,只是代表不能显式的指定从DMA32和HIGHMEM中分配slab,但并不代表就不能使用DMA32了,大概看下,slab中多使用GFP_KERNEL和GFP_ATOMIC标记,这样的话,其实会按上述的fallback order来分配,即NORMAL=>DMA32=>DMA,当NORMAL中不能分配时,应该会从DMA32中分配。
@chishanmingshen
作者: chishanmingshen    时间: 2014-06-12 12:55
回复 5# humjb_1983

    有道理,谢谢!
    x86_64 normal zone 也是direct map?
作者: humjb_1983    时间: 2014-06-12 13:51
chishanmingshen 发表于 2014-06-12 12:55
回复 5# humjb_1983

    有道理,谢谢!

应该是的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2