Linux 6.8落地常见的基于路径的搜索的诱人优化

2024年 1月 10日 36.6k 0

Linux 6.8落地常见的基于路径的搜索的诱人优化-1
对于通过路径名执行程序的execve()系统调用,Linux6.8内核将进行新的优化,以“显著”加速路径搜索。

的 执行更新对于Linux6.8,引入了新的快速失败检查来加速基于execve的路径搜索。

Linux开发人员Josh Triplett编写了这个优化并评论了补丁:

“目前,execve分配mm并在检查路径是否存在之前解析argv和envp。但是,通常情况下,$PATH搜索可能在一次成功之前多次调用EXEC失败。在执行更昂贵的操作之前,执行文件名查找的目的是返回ENOENT。

..。

为了测量性能,我运行了2000个fork和execvpe调用,其中一个七元素的PATH中的文件位于第七个目录中(常见情况的代表是/usr/bin是我的$PATH上的第七个目录),以及2000个fork和execve调用,其中一个绝对路径指向现有的二进制文件。我记录了每一个的最短时间,以消除上下文切换和类似的噪音。

没有快速通道:

叉子/执行器:49876 ns

叉子/execve:32773 ns

使用快速路径:

叉子/叉子:36890 ns

fork/execve:32069ns

对于成功的EXEC来说,额外查找的成本似乎微不足道,但它为路径搜索提供了26%的改进

加快了六个失败的高管。”

对于基于execve的PATH搜索来说,这是一个相当不错的胜利,速度快了26%,特别是对于这是一个常见的操作。在该补丁中提出,shell脚本倾向于使用stat()来检查PATH中的文件,而GNU C库(glibc)和Musl libc,Python,Perl等倾向于使用基于execve的方法,从而受益于这种内核优化。

Linux 6.8落地常见的基于路径的搜索的诱人优化-2

Nothing beats a small patch for a nice performance win.

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论