CentOS检查和禁用transparent hugepages
2022-11-17 19:49 abce 阅读(547) 评论(0) 编辑 收藏 举报1.查看系统当前使用的匿名透明大页
1 2 | # grep -i AnonHugePages /proc/meminfo AnonHugePages: 1216512 kB |
2.查看哪些应用在使用匿名透明大页
1 | $ sudo awk '/AnonHugePages/ { if($2>4){print FILENAME " " $0; system("ps -fp " gensub(/.*\/([0-9]+).*/, "\\1", "g", FILENAME))}}' /proc/*/smaps |
3.如何分配大页
在运行时候,可以使用命令sysctl -w来分配大页。
在分配之前,查看大页的使用情况
1 2 3 4 5 6 7 | # grep -i huge /proc/meminfo AnonHugePages: 10240 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB |
可以看到,没有使用大页
目前,系统的内存情况
1 2 3 4 | # free -m total used free shared buff/cache available Mem: 3790 194 3318 46 277 3314 Swap: 759 0 759 |
为大页保留512MB内存
(这只是对连续的内存有效,所以,可能需要重启系统,确保有连续的可用内存)
1 2 | # sysctl -w vm.nr_hugepages=512 vm.nr_hugepages = 512 |
再来查看一下内存,free部分变少了。因为预留给了大页
1 2 3 4 | # free -m total used free shared buff/cache available Mem: 3790 1220 2292 46 277 2289 Swap: 759 0 759 |
再次查看一下大页信息
1 2 3 4 5 6 7 | # grep -i huge /proc/meminfo AnonHugePages: 14336 kB HugePages_Total: 512 HugePages_Free: 512 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB |
要想使配置永久生效,可以在/etc/sysctl.d/目录中增一个配置文件:
1 2 | # cat /etc/sysctl.d/10-hugepages.conf vm.nr_hugepages=512 |
4.禁用透明大页
修改文件/etc/sysconfig/grub添加transparent_hugepage=never
1 | GRUB_CMDLINE_LINUX= "novga console=ttyS0,115200 panic=1 numa=off elevator=cfq rd.md.uuid=d265dd3d:9ee4d53a:597b8c08:8201b9af rd.lvm.lv=os/root rd.md.uuid=5398452a:ab1b8e91:4307b53b:5c3cccbd rd.md.uuid=131bc1e7:7c9087c3:03f3ad4a:7cde170c noht rhgb quiet transparent_hugepage=never" |
修改后需要重新build一下GRUB2配置文件
1 2 | # grub2-mkconfig -o /boot/grub2/grub.cfg # shutdown -r now |
5.使用sysctl永久禁用透明大页
创建一个配置文件,添加vm.nr_hugepages=0
1 2 | # cat /etc/sysctl.d/disable_hugepage.conf vm.nr_hugepages=0 |
在重新刷新dracut条目之前,确认一下没有initramfs内容
1 2 3 4 5 6 7 8 9 | # lsinitrd /boot/initramfs-`uname -r`.img | grep hugepage # dracut -f # lsinitrd /boot/initramfs-`uname -r`.img | grep hugepage -rw-r ----- 1 root root 18 Jul 31 18:46 etc/sysctl.d/disable_hugepage.conf # cat /sys/devices/system/node/node*/meminfo | fgrep Huge Node 0 AnonHugePages: 0 kB Node 0 HugePages_Total: 0 Node 0 HugePages_Free: 0 Node 0 HugePages_Surp: 0 |
6.运行时禁用透明大页
nr_hugepages表示当前在大页池中Persistent的大页,一个任务释放的Persistent的大页会被返回给大页池。
具有root权限的用户,通过修改nr_hugepages,可以动态增加或减少Persistent的大页
显式地为当前会话禁用透明大页:
1 2 3 4 5 | # echo 0 > /proc/sys/vm/nr_hugepages # cat /proc/sys/vm/nr_hugepages 0 # sysctl vm.nr_hugepages vm.nr_hugepages = 0 |
运行时禁用透明大页
1 2 | # echo never > /sys/kernel/mm/transparent_hugepage/enabled # echo never > /sys/kernel/mm/transparent_hugepage/defrag |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2020-11-17 PostgreSQL的并行查询
2017-11-17 微观经济学--经济学十大原理