Proc
為什麼 VmallocTotal 為 34359738367 kB?
/proc/meminfo
有記憶統計VmallocTotal
。它被描述為vmalloc 記憶體區域的總大小。
和其他地方一樣
核心中可用於vmalloc分配的總記憶體
它激發了我的好奇心,因為它是一個非常高的數字,而且我搜尋的所有地方都恰好是 34359738367 kB。這似乎是一個任意的最大值。但是 34359738367 kB 有什麼意義呢?它不是 2 的倍數,也不是質數,而是十六進制的 0x7FFFFFFFF。我還注意到
pmap
程序記憶體映射地址最大為 0x7FFFFFFFF。但是那麼0x7FFFFFFFF的實際意義是什麼呢?
那是 32 TiB,在 Linux 核心的 x86-64 記憶體映射中留出
vmalloc
的空間量。它很大,因為 64 位地址空間很大。我認為它的具體尺寸沒有任何意義,除了在設計佈局時它是一個整潔的細分。