Linux:memory: THP: [迷惑行为] 要看源代码的必要性

本文探讨了Linux内存管理中透明大页(THP)的一个混淆问题。在尝试理解THP如何处理内存分配时,作者发现即使没有成功分配巨页,thp_fault_fallback计数仍为0。通过分析源代码,发现并非每次fallback错误都会被计数,这可能导致误解。文章建议增加计数以更好地跟踪此情况,并指出深入研究源代码的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在总结之前THP引出的一个问题,发现了一个让人迷惑的问题,记录总结一下过程。

参考文档:

https://lwn.net/Articles/423584/ 这里记录了引入THP的原因历史。

源码:transhuge.rst

从文档里说:Should the allocation succeed, the huge page will be filled, any existing small pages in the new page’s address range will be released, and the huge page will be inserted into the VMA. If no huge pages are available, the kernel falls back to small pages and the application never knows the difference.

这里是说一开始就按照巨页分配,如果找不到合适的巨页才falls-back到之前的逻辑分配4KB小页。而且有相关的fall-back的计数。

但是当看具体的计数的时候,发现对不起来,自己写一个小程序申请不超过2M的内存,从计数上看:AnonHugePages这个没有值,也就是没有申请到巨页,但是thp_fault_fallback计数依然是0。所以说为什么没有fallback计数呢?

[root@10 15881]# cat smaps | gr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mzhan017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值