如何限制用户或应用程序使用大页面支持?
我们部署和使用(内部本地应用程序)所有实际使用hugepage并使用mmap()系统调用。 但我宁愿限制一些应用程序实际使用大页面支持。 这可以通过代码中的任何更改或可以实现的任何系统范围的配置选项来实现吗? 如果需要,我将很快更新系统调用上的一些代码示例。
我建议在/etc/sysctl.conf
设置和使用内核可调选项vm.hugetlb_shm_group=
,或者通过hugeadm
命令手动设置和使用。 以下示例表示只有组mygroup(2341)的成员才能分配“巨大的”共享内存段
vm.hugetlb_shm_group = 2341
注意:只有(用户部分) vm.hugetlb_shm_group
内核可调参数中列出的组,sysctl才能使用shmget()
和shmat()
调用来访问HugePages。 但是,任何调用mmap()的用户都可以访问HugePages。 如果仅使用mmap()
,您的代码可能需要相应的一些更改。
只能将一个组定义为vm.hugetlb_shm_group
。 更新/etc/sysctl.conf
文件中的内核参数值后,重新启动计算机,或运行命令sysctl -p
以使/etc/sysctl.conf
文件中的更改在活动内核内存中可用。
参考: hugeadm
命令 。
–set-SHM-组=
/ proc / sys / vm / hugetlb_shm_group中指定的组中的用户被授予对大页面的完全访问权限。 sysctl采用数字gid,但是这个hugeadm选项可以使用gid或组名为你设置。