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