linux-kernel - 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 的物理内存。
解决方案
推荐阅读
- php - apache 意外退出,chrome 浏览器失败,没有任何响应
- vb.net - 如何在 VB.NET BackgroundWorker 中使用百分比而不是 ProgressBar 控件
- ios - 在开发人员门户上创建配置文件时无法选择通配符 App ID
- python - 比较两个列表,并创建其他两个具有交集和差异的列表
- ios - 在 applicationWillTerminate 中发出套接字事件
- tree - AVL 树的左节点是否总是小于当前节点?
- tcl - Tcl 中的 info exists 命令返回错误
- c++ - C++ Dijkstra 的算法程序与初始顶点问题和结果少一个顶点
- jquery - 两个选择选项以获得结果和一个搜索按钮
- installation - 关闭 PC 后 Hyperledger 作曲家消失