Redian新闻
>
平均查找性能提高了 715 倍,Linux 6.2 合并 华为 贡献的代码

平均查找性能提高了 715 倍,Linux 6.2 合并 华为 贡献的代码

公众号新闻

https://www.ithome.com/0/660/975.htm

Linux 6.2 今日合并了来自华为郑磊(Zhen Lei,音译)的代码,将核心内核功能的速度提高了 715 倍。
在合并代码模块介绍中写道:“得益于 Zhen Lei 的代码,Tux(Linux 的吉祥物,这里指 Linux)在 kallsyms_lookup_name () 平均查找性能提高了 715 倍,将我们的旧实现从 O (n) 升级到 O (log (n)),同时还保留了 / proc / kallsyms 上的旧实现支持”。
IT之家了解到,kallsyms_lookup_name () 函数用于根据一个符号的名称查询其地址,并可用于内核符号表内任何符号的查询。
华为的 Zhen Lei 在之前的补丁贴中描述了对 kallsyms_lookup_name 的优化:
目前,为了搜索一个符号,我们需要将 'kallsyms_names' 中的符号逐一展开,然后使用展开后的字符串进行比较。这是 O (n)。
如果我们像地址一样将名字按升序排序,我们也可以使用二进制搜索。而这就是 O (log (n))。
为了不改变“/proc/ kallsyms”的实现,表 kallsyms_names [] 仍然以升序与地址一一对应的方式存储。
增加数组 kallsyms_seqs_of_names [],它以排序后的名字的序列号为索引,对应的内容是排序后的地址的序列号。
例如,假设 NameX 在数组 kallsyms_seqs_of_names [] 中的索引是 'i',kallsyms_seqs_of_names [i] 的内容是 'k',那么 NameX 的对应地址是 kallsyms_addresses [k]。kallsyms_names [] 中的偏移是 get_symbol_offset (k)。
注意,内存使用量将增加 (4 * kallsyms_num_syms) 字节,接下来的两个补丁将减少 (1 * kallsyms_num_syms) 字节并正确处理 CONFIG_LTO_CLANG=y 的情况。
性能测试结果(在 x86 平台上):
之前:
min=234, max=10364402, avg=5206926
min=267, max=11168517, avg=5207587
之后:
min=1016, max=90894, avg=7272
min=1014, max=93470, avg=7293
kallsyms_lookup_name () 的平均查询性能提高了 715 倍。这是 kallsyms_lookup_name 一次重大改进,也是 Linux 6.2 的圣诞礼物。

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:3762708

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Rosalía 登意大利版《VOGUE》封面!英特尔发布第四代至强可扩展处理器:PyTorch 训练性能提升 10 倍,安装量超 1 亿颗!打造万圣节 Linux 桌面 | Linux 中国性能提升 2.5 倍!字节开源高性能 C++ JSON 库 sonic-cpp天赋“易昺(bǐng)”,创造历史!我用Lambda表达式写代码,开发速度提高了10倍!谁动了我的代码:代码混淆剖析如何通过 chroot 恢复 Arch Linux 安装 | Linux 中国5 个即将推出的可能会挑战 VS Code 的代码编辑器 | Linux 中国使用 PSCP 将文件和文件夹从 Windows 传输到 Linux | Linux 中国如何提高 Ubuntu 和其他 Linux 系统中的扬声器音量 | Linux 中国解决 Linux 中的 “Bash: Command Not Found” 报错 | Linux 中国如何在 Ubuntu 等 Linux 中安装 Python 3.11 | Linux 中国从神救世人普渡众生到为了人民在 Linux 中如何从命令行查找默认网关的 IP 地址 | Linux 中国LURE 初窥!将 AUR 带入所有 Linux 发行版 | Linux 中国学习语言,成人的困惑与儿童的困惑Rhino Linux:滚动发布但也很稳定的 Ubuntu | Linux 中国在你的 Linux 终端中玩经典的贪吃蛇游戏 | Linux 中国华为开发者贡献 Linux 内核补丁,将核心内核函数速度提升 715 倍研究了代码质量后,开发速度提高了 2 倍,bug 减少了 15 倍如何在 Arch Linux 中启用 Snap 支持 | Linux 中国开源朗读者:使用 Linux 的优势和劣势 | Linux 中国Linux 6.2合并窗口时间撞上圣诞节,Linus强势催更川普不是分裂美国的罪魁祸首如何在 Ubuntu 和其他相关 Linux 中安装 Python 3.10 | Linux 中国如何在 VSCode 中自动缩进你的代码 | Linux 中国咖啡乳酪蛋糕(Coffee Cheese Cake)如何在 Ubuntu 和其他 Linux 中检查 CPU 和硬盘温度 | Linux 中国在 Linux 中创建 LVM 分区的分步指南 | Linux 中国12 个对新手最重要的 Linux 命令 | Linux 中国为美国做出巨大贡献的“梦想者”在等一个“圣诞奇迹”四通桥、海瑞上书和《大明王朝1566》GitHub Copilot代码笔刷火了,一刷修bug加文档,特斯拉前AI总监:我现在80%的代码由AI完成如何在 Ubuntu Linux 上更新谷歌 Chrome | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。