读取redhat服务器5.8的服务器启动序列,我看到这个并且对我来说非常不清楚,也许我错了,但我知道linux内核主体分配器使用两种机制来分配和解除系统内存,
来自启动消息:
PID hash table entries: 4096 (order: 12, 32768 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 33554432 (order: 16, 268435456 bytes)
Inode-cache hash table entries: 16777216 (order: 15, 134217728 bytes)
订购权力
python -c 'import math ; print int(math.pow(2,12))*4096'
16777216
python -c 'import math ; print int(math.pow(2,16))*4096'
268435456
python -c 'import math ; print int(math.pow(2,15))*4096'
134217728
所以,我的问题是,为什么第一行" PID哈希表进入"不是16777216字节?
答案 0 :(得分:2)
分配为2 ^ N struct hlist_head
s的PID哈希表条目,在64位系统上分别为8个字节。 2^12*8 = 32768
。
Inode / Dentry缓存分配为2 ^ N个页面,每个页面通常为4096个字节。 2^15*4096 = 134217728
。
此信息分别在来源kernel/pid.c
和fs/inode.c
中提供。