Linux 6.2今天合并了来自华为郑雷的代码,将核心内核功能的速度提高了715倍。
在合并代码模块的介绍中写道:得益于雷震的代码,Tux在kallsyms_lookup_name中的平均查找性能提升了715倍,我们的旧实现从O 升级到O ,同时仍然保持了/proc/kallsyms中的旧实现支持。
本站了解到kallsyms_lookup_name函数用于根据符号的名称查询符号的地址,可以用来查询内核符号表中的任意符号。
华为的雷震在之前的补丁中描述了kallsyms_lookup_name的优化:
目前,为了搜索一个符号,我们需要逐个扩展'kallsyms_names '中的符号,然后与扩展后的字符串进行比较这是o
如果我们像地址一样按升序排列名字,我们也可以使用二分搜索法而这个是o)
为了不改变/proc/ kallsyms的实现,表kallsyms_names仍然按照升序存储,与地址一一对应。
添加数组kallsyms_seqs_of_names,该数组以排序名称的序号为索引,对应的内容是排序地址的序号。
例如,假设数组kallsyms_seqs_of_names中NameX的索引为‘I’,kallsyms_seqs_of_names (i)的内容为‘k’,那么NameX对应的地址为kallsyms_addresses (k)kallsyms_names中的偏移量是get_symbol_offset (k)
请注意,内存使用将增加字节,接下来的两个补丁将减少(1 * kallsyms_num_syms)字节,并正确处理config _ LTO _ clang = y的情况
性能测试结果:
之前:
最小值=234,最大值=10364402,平均值=5206926
最小值=267,最大值=11168517,平均值=5207587
之后:
最小值=1016,最大值=90894,平均值=7272
最小值=1014,最大值=93470,平均值=7293
kalyms _ lookup _ name的平均查询性能提高了715倍这是kallsyms_lookup_name的重大改进,也是Linux 6.2的圣诞礼物
。郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。
第一次看到Poppy的时候,相信很多人会说这个姑娘真的很精致优雅。没错,小红书里的Poppy笑起来很甜,举手投足都很自信很淡定。但很难想象P...
2023-10-13 15:342023世界数字经济大会暨第十三届智慧城市与智能经济博览会于10月13日至15日在宁波举行,交通银行连续三年作为支持单位参与大会。作为唯一参...
2023-10-13 12:57塔里木油田钻井现场塔里木油田公司供图位于沙漠腹地的塔中第三联合站塔里木油田公司供图在塔里木这个我国陆上最大的含油气盆地,分布着全国80%以上...
2022-08-18 11:438月16日至18日,以“虚实共生数字新未来”为主题的2022(GIAC)智能视听大会在山东省青岛市举办。在开幕式上,人民视频联合行业头部生态...
2022-08-18 11:42