为什么linux内核只有一个?  

为什么linux内核只有一个?

发布时间:2023-01-04 13:24:16

转载:OSC开源项目(ID:oschina2013)

Linux 6.2 近日合拼了一个重要补丁,该补丁能够把一个核心内核函数公式效率提高 715 倍。

从合拼的注解得知,奉献此补丁的管理者 Zhen Lei 来源于华为公司,他把 kallsyms_lookup_name () 平均查找性能提升了 715 倍,从而使得内核里边旧达到的时间复杂度从 O (n) 升级成 O (log (n)),大幅降低查找时虫草鹿鞭王怎么服用长,另外还保存了 藏虫草鹿王鞭10粒 /proc/kallsyms 上老旧完成适用。

kallsyms_lookup_name () 函数公式用以依据名字查找标记地址,并适合于查找内核字母符号中的所有标记。

Zhen Lei 曾经在较快的补丁中叙述了?kallsyms_lookup_name () 的改善构思:

现阶段,要搜索一个符号,我们应该将 'kallsyms_names' 中的符号一个一个进行,随后应用进行后字符串数组进行对比。这类算法的时间复杂度是 O (n)。

假如我们像详细地址一样按降序对名字开展排序,则可以用二分查找。这类算法的时间复杂度虫草鹿鞭王多少钱是 O (log (n))。

为了能没有改变 “/proc/kallsyms” 的完成,表 kallsyms_names[]依然依照降序与详细地址一一对应存放。

加上二维数组 kallsyms_seqs_of_names[],以排序后 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) 字节数,接下来2个补丁将降低 (1 * kallsyms_num_syms) 字节数并妥善处理 CONFIG_LTO_CLANG=y 的现象。

性能检测结果:(x86)

Before:

min=234, max=10364402, avg=5206926

min=虫草鹿鞭王使用说明书267, max=11168517, avg=5207587

After:

min=1016, max=90894, avg=7272

min=1014, max=93470, avg=7293

kallsyms_lookup_name () 平均查找性能提升了 715 倍。

因而,该补丁产生的唯一主要缺点将cpu占用量提升 3 * kallsyms_num_syms。

Linux 6.2 的组件编码也包含一个小的运行提升,将开机时间缩短大概 30 ms。

分类虫草鹿鞭王服后脸红搜索:

- EOF -



上一篇: 美国保罗黑v8虫草鹿鞭王:孕初期乳房不黑并不是正常吗
下一篇: 虫草鹿鞭王乙肝人可以吃吗:滑沙简单的说就是在碎石子里滑跑,在六年级暑假时我和爸爸母亲也有
 
 
联系我们
 
 
Copyright © 2011-2019 版权所有 虫草鹿鞭王官网正品旗舰店