PID哈希表条目:4096(顺序:12,32768字节)?

时间:2014-05-13 22:27:17

标签: linux linux-kernel redhat

读取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字节?

1 个答案:

答案 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.cfs/inode.c中提供。