今天又发现一个问题,根据文档描述的,如果不打开sysctl fs.exec-use-hugetlb 即使用户设置了环境变量也不会使用该特性,内核会忽略相关流程。但是我没有开启这个开关或者关闭了,然后使用HUGEPAGE_PROBR=1 这个环境变量,动态库仍然可以开启大页,好像并没有被忽略,使用LD_HUGEPAGE_LIB=1 也一样可以开启,而且我看了一下代码,好像也没有看到这个开关会影响动态库大页加载,这里是代码实现的有问题还是文档描述的有问题呀
---原始邮件--- 发件人: "lvying"<lvying6@huawei.com> 发送时间: 2023年3月6日(周一) 下午4:16 收件人: "x_xiny"<x_xiny@qq.com>; 主题: 答复: 转发:回复:RE: 回复:答复: 您好 关于内核大页特性怎么开启,需要请教一下
感谢常新同学对于openEuler动态库大页的特性的关注!最近团队工作较忙,我们会在工作完成的第一时间答复您的信息,也麻烦子杨关注下常新同学的问题,及时答复。
祝好
发件人: 常新 <x_xiny@qq.com> 发送时间: 2023年3月6日 10:23 收件人: lvying <lvying6@huawei.com> 抄送: dev <dev@openeuler.org>; Liuzixian <liuzixian4@huawei.com> 主题: 转发:回复:RE: 回复:答复: 您好 关于内核大页特性怎么开启,需要请教一下
因为我在看LD_DEBUG信息的时候,前边的流程都是一样的,但是在__mmap_reserved_area 这个函数里调用_mmap的时候x86上返回MAP_FAILED了,可是ARM上却成功了,然后导致了动态库在x86上没有开2m对齐编译的时候就不映射大页,但是在ARM上映射了,所以这是因为mmap在ARM和x86上实现差异导致的吗
常新
x_xiny@qq.com
------------------ 原始邮件 ------------------
发件人: "常新" <x_xiny@qq.com>;
发送时间: 2023年3月3日(星期五) 下午5:35
收件人: "Zhoukang (A)"<zhoukang7@huawei.com>;"Liuzixian"<liuzixian4@huawei.com>;"常新"<x_xiny@qq.com>;"dev@openeuler.org"<dev@openeuler.org>;
抄送: "lvying"<lvying6@huawei.com>;"linfeilong"<linfeilong@huawei.com>;
主题: 回复:RE: 回复:答复: 您好 关于内核大页特性怎么开启,需要请教一下
那在x86上和ARM上存在的这种差异,是因为在两个架构上对于mmap的实现差异导致的嘛,还是说现在非对齐情况下使用暂时就是一种未定义行为会导致不确定的结果
---原始邮件---
发件人: "Zhoukang (A)"<zhoukang7@huawei.com>
发送时间: 2023年3月3日(周五) 下午4:30
收件人: "Liuzixian"<liuzixian4@huawei.com>;"常新"<x_xiny@qq.com>;"dev@openeuler.org"<dev@openeuler.org>;
抄送: "lvying"<lvying6@huawei.com>;"linfeilong"<linfeilong@huawei.com>;
主题: RE: 回复:答复: 您好 关于内核大页特性怎么开启,需要请教一下
相关讨论, 请抄送 dev@openeuler.org, 方便后续搜索类似问题
From: Liuzixian <liuzixian4@huawei.com> Sent: Friday, March 3, 2023 4:26 PM To: 常新 <x_xiny@qq.com> Cc: Zhoukang (A) <zhoukang7@huawei.com>; lvying <lvying6@huawei.com>; linfeilong <linfeilong@huawei.com> Subject: 答复: 回复:答复: 您好 关于内核大页特性怎么开启,需要请教一下
动态库的实现代码没有加这个约束,但目前我们认为支持非对齐的动态库较复杂,且未看到支持非对齐的需求,后期可能考虑删除。
写文档时考虑到实际产品均对齐使用,因此增加了约束限制,并且openEuler没有验证非对齐场景。
发件人: 常新 <x_xiny@qq.com> 发送时间: 2023年3月3日 15:36 收件人: Liuzixian <liuzixian4@huawei.com> 主题: 回复:答复: 您好 关于内核大页特性怎么开启,需要请教一下
你好,文档上有一个约束条件,要求2m对齐,动态库也受这个约束嘛,我试了一下,在x86平台上动态库也受这个约束,但是在ARM平台上好像动态库不受限制,
我跑的是这个用例tst-ld-use-hugpage.c里面的用例 环境设置为
sysctl fs.exec-use-hugetld=1
export LD_HUGEPAGE_LIB=1
HUGEPAGE_PROBE没有设置,
也没有对动态库和二进制文件进行标记,
执行了 echo 200 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages,
2209分支x86版本中动态库没有被大页映射,KernelPageSize全部都是4k的,但是ARM平台上动态库被映射了2m的大页,是x86和ARM约束条件不一样吗,还是这是一个bug
---原始邮件---
发件人: "Liuzixian"<liuzixian4@huawei.com>
发送时间: 2023年2月9日(周四) 上午9:21
收件人: "x_xiny"<x_xiny@qq.com>;
主题: 答复: 您好 关于内核大页特性怎么开启,需要请教一下
22.09版本文档链接:https://docs.openeuler.org/zh/docs/22.09/docs/A-Tune/native-turbo.html
发件人: Liuzixian <> 发送时间: 2023年2月9日 9:20 收件人: '常新' <x_xiny@qq.com> 抄送: Zhoukang (A) <zhoukang7@huawei.com>; linfeilong <linfeilong@huawei.com> 主题: 答复: 您好 关于内核大页特性怎么开启,需要请教一下
22.09版本使用sysctl开关(exec-use-hugetlb)
PR中的这个commit增加了该开关:https://gitee.com/openeuler/kernel/commit/1efdacff482d8609bed72b9de61b6cc288...
环境变量改为sysctl的理由如下:
1、 内核原生不支持判断环境变量,不符合社区使用方式
2、 22.03还有内核启动参数exec-hugepages进行控制,调试时不如sysctl方便,在22.09合并到sysctl中
3、 有使用者反馈业务启动代码有sudo app_start这样切换用户的场景,无法继承环境变量。
如果您有关于该特性使用方式的建议,也可以反馈给我们。
发件人: 常新 <x_xiny@qq.com> 发送时间: 2023年2月8日 17:48 收件人: Liuzixian <liuzixian4@huawei.com> 抄送: Zhoukang (A) <zhoukang7@huawei.com> 主题: 您好 关于内核大页特性怎么开启,需要请教一下
您好,有个问题向您请教一下,我看见你们已经在kernel2209分支上合入了大页的特性,这个在5.10上怎么开启
https://gitee.com/openeuler/kernel/pulls/59
我看见开启大页功能这个在4.19内核版本上可以通过设置环境变量的方式 export HUGEPAGE_ELF=1的方式开启 看这里是通过加了几个补丁做了这么一个功能,
https://gitee.com/openeuler/native-turbo/blob/master/kernel-patch/kernel-4.1...
我在5.10内核上没有看见相关的代码,如果开启这个功能的话,是需要同步这些补丁吗?
或者有没有相关的文档呀 感谢