首页 > 解决方案 > HugeTLB 大页面和 IO 映射:为什么会浪费内存?

问题描述

在启动时使用hugepages=内核参数或使用echo 1024 > /proc/sys/vm/nr_hugepages分配内存。

# cat /proc/meminfo
MemTotal:       32565364 kB
MemFree:        30179992 kB
MemAvailable:   30820684 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB


# echo 1024 > /proc/sys/vm/nr_hugepages

# cat /proc/meminfo
MemTotal:       32565364 kB
MemFree:        28082216 kB
MemAvailable:   28723824 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

它从 30GB 到 28GB ( ) 分配 2GB (1024 Hugepages x 2MB MemFree)。

为什么?我怎样才能消除这种行为?

我只想保留 TLB 条目,而不是实际的物理内存。我永远不会分配这么大的页面,因为我只会使用它们来映射 IO 内存。

这种行为浪费了我 2GB 的物理内存。

标签: linux-kernelhuge-pages

解决方案


推荐阅读