总所周知,作为世界最知名,用户最多的开源PC操作系统,Linux每个版本都会正黑来自世界各地开发者的代码。
今天,最新的Linux 6.2版本合并了来自华为郑磊(原文为Zheng Lei)的代码,为核心内核的性能带来了大幅提升。
根据合并代码模块的介绍,通过郑磊提交的代码,Linux在kallsyms_lookup_name () 平均查找的性能提高了715倍,将旧实现从O (n) 升级到O (log (n)),同时还保留了/proc/kallsyms 上的旧实现支持。
而根据郑磊自己的描述,他对Linux查找符号的逻辑进行了优化。
在此前,为了搜索一个符号,需要将 'kallsyms_names' 中的符号逐一展开,然后使用展开后的字符串进行比较。这是 O (n)。
而在优化后,系统就可以像地址一样将名字按升序排序,并使用二进制搜索,这就是O (log (n))。