- 主题:Linux 6.2合并华为郑磊(Zheng Lei)代码:查找性能平均提高715
https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9447896597532731506%22%7D&n_type=-1&p_from=-1
总所周知,作为世界最知名,用户最多的开源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))。
--
FROM 27.115.4.*
我不知道呀。华为有水军宣传这个?
【 在 gloria 的大作中提到: 】
: 又来刷KPI了
--
FROM 27.115.4.*
加了个二叉树?
--
FROM 59.109.147.*
这个所谓的改进真的很蛋疼
首先这个功能用得本来就很少
其次是只有在表项很多的时候查找能提高效率
但是代价是每次插入的时候要排好序
为啥一直没人愿意动,都是有原因的
菊花的码农估计也是挖空心思,终于捡了一个漏
但这玩意说实话真的没多大意义
【 在 pfan117 的大作中提到: 】
: 加了个二叉树?
--
FROM 61.149.218.*
哦哦,有序插入,二分查找的套路?
【 在 gloria 的大作中提到: 】
: 这个所谓的改进真的很蛋疼
: 首先这个功能用得本来就很少
: 其次是只有在表项很多的时候查找能提高效率
: ...................
--
FROM 59.109.147.*
就这个意思
【 在 pfan117 的大作中提到: 】
: 哦哦,有序插入,二分查找的套路?
--
FROM 61.149.218.*
【 在 gloria 的大作中提到: 】
: 这个所谓的改进真的很蛋疼
: 首先这个功能用得本来就很少
: 其次是只有在表项很多的时候查找能提高效率
: ...................
"平均查找的性能提高了715倍"
-- 是不是说明平均情况下表项确实有上千级别?
--
FROM 1.91.32.*
咱们对同行的贡献还是要持给予鼓励和支持比较好。虽然道法就那么几种。但是呢,说到底快了总比慢了好。都是为了钱。
--
FROM 59.109.147.*
屁大的事,吹的到处都是,这很华为。
这个函数只有在做模块live patch的时候才有可能会用到,使用频率也不高,不然也轮不到到6.2了还留着没改。
快有快的代价,比如这个改动会增加4 * kallsyms_num_syms的内存占用。大概会消耗48KB内存,对于极端内存紧缺的环境,比如嵌入式,这点性能可能根本就不重要,甚至直接把kallsyms关掉。相反增加了代码复杂度,总的来说是否值得也是个问题。贴个其中一位reviewer的意见:
IMHO, the size win is not worth the code complexity.
Well, people compiling the kernel for small devices might think
different. But they probably disable kallsyms completely.
【 在 pfan117 的大作中提到: 】
: 咱们对同行的贡献还是要持给予鼓励和支持比较好。虽然道法就那么几种。但是呢,说到底快了总比慢了好。都是为了钱。
--
FROM 180.158.63.*