为什么 VmallocTotal 为 34359738367 kB?

为什么 VmallocTotal 为 34359738367 kB?

/proc/meminfo有内存统计VmallocTotal。它被描述为

vmalloc 内存区域的总大小。

proc 的手册页

和其他地方作为

内核中可用于 vmalloc 分配的总内存

它激发了我的好奇心,因为它是一个非常高的数字,我在所有地方搜索它都恰好是 34359738367 kB。这似乎是一个任意的最大值。但 34359738367 kB 有什么意义呢?它不是 2 的倍数,也不是素数,但十六进制是 0x7FFFFFFFF。我还注意到pmap进程内存映射地址最大为 0x7FFFFFFFF。那么0x7FFFFFFFF有什么实际意义呢?

答案1

这就是 32 TiB,空间量vmalloc在 Linux 内核的 x86-64 内存映射中预留

它很大是因为64位地址空间很大。我认为它的具体尺寸除了在设计布局时是一个整齐的细分之外没有任何意义。

相关内容