整理 | 王启隆

作为送给全球开发者的圣诞礼物,Linux 在前日发布了 Linux 6.1 内核的稳定版,并开启了 Linux 6.2 的合并窗口。这次更新不仅为广大用户带来了不少新功能与改进,还让许多人开始期盼 Linux 6.2 将会合并哪些令人兴奋雀跃的内容。那么,Linux 6.2 的合并窗口现在都有什么新动向呢?

合并华为代码,平均查找性能再提升

12 月 14 日,Linux 6.2 合并了一段来源于华为的代码,这段代码将 Linux 6.2 内核函数的速度提高了 715 倍。代码的注释写道:

通过华为 Zhen Lei 的贡献,Tux(Linux 的吉祥物小企鹅,全称为tuxedo,此处代指 Linux)在圣诞节期间将 kallsyms_lookup_name() 的平均查找性能提高了 715 倍。这份代码将我们那个 O(n) 的旧实现升级到了 O(log(n)),同时还支持以前 /proc/kallsyms 上的旧实现。

唯一的不足是,这么做将会让内存的占用量增加 3 * kallsyms_num_syms。
文中,kallsyms_lookup_name() 是一个函数,用于根据名称查找符号的地址,并可用于查找内核符号表中的任何符号。这段代码将另一个包含索引的数组添加到原始数组,从线性查找变为二分查找,从 O(n) 变为 O(log(n)),以便可以在不影响原始数组顺序的情况下对其进行排序,并提供显着的加速。

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 平台上的性能测试,可以得出 kallsyms_lookup_name() 的平均查找性能确实提高了 715 倍:

以前:

Min =234, max=10364402, avg=5206926

Min =267, max=11168517, avg=5207587

现在:

Min =1016, max=90894, avg=7272

Min =1014, max=93470, avg=7293

扩展 ARMSoC 支持,面向更多用户

同样在 12 月 14 日,Linux 6.2 的合并窗口新增了 Arm SoC 支持和 DeviceTree 的更新。6.2 内核将会支持多达 7 种高通骁龙 SoC,甚至还在 Mainline 里提供了对 Apple M1 Pro/Ultra/Max SoC 的初步支持。

在假期合并窗口期间,Linux 内核开发者 Arnd Bergmann 为 Linux 6.2 完成了这次 SoC 更新,而 Linux 之父 Linus Torvalds 已经接受了这些合并请求。

本次更新将加入的七种高通骁龙 SoC 分别是:

MSM8996 Pro(骁龙 821)
SM6115(骁龙 662)

SM4250(骁龙 460)

SM6375(骁龙 695)

SDM670(骁龙 670)

MSM8976(骁龙 652)

MSM8956(骁龙 650)

这些骁龙 SoC 和 Linux 内核目前已支持的高通硬件都有着不少共同之处。与此同时,一些使用这些 SoC 的新设备也成功得到了上游化。包括:

索尼的 Xperia 10 IV、5 IV、X 和 X Compact;一加的 OnePlus One、OnePlus 3、OnePlus 3T 和 OnePlus Nord N100;小米的 Mi6;华为手表;谷歌的 Pixel 3a。
另外,Linux 6.2 Mainline 终于开始了对 苹果 M1 Pro、M1 Max 和 M1 Ultra SoC 的初步支持。研究 Linux for Apple Silicon macs 的组织群体 Asahi Linux 团队正在开发相关的内核代码,该团体的目标便是将 Linux 移植到更新的 Apple Silicon 驱动的 Mac。

如今,更多的代码被上游化至 Linux 6.2,而 Linux 上对苹果 M1 / M2 设备的最佳硬件支持也是来自于 Asahi Linux。

图形驱动改进,拥抱 RTX 30 系显卡

还是在 12 月 14 日,Linux 6.2 合并了开源内核图形/显示驱动程序 Direct Rendering Manager(DRM)。英特尔的锐炫系列显卡(DG2/Alchemist)所使用的 Arc Graphics 驱动也终于不再是“实验性”了。

以前的 Linux 内核如果想支持锐炫 Arc 系列显卡,那就必须通过选项 i915.force_probe= 来强制启用“实验性”硬件支持。但是,在 Linux 6.2 及以后版本中,锐炫 的离散图形处理器被认为足够稳定,可以在默认情况下启用。

从此以后,运行 Linux 6.2+ 和 Mesa 22.3+ 时也可以享受 Arc Graphics 驱动带来的图形优化了。

另一个重大更新自然就是 Linux 6.2 开始初步支持英伟达 RTX 30 “Ampere” 的加速,将其进行了上游化。虽然 RTX 40 早已发布,但还有不少人仍持有着 30 系显卡;使用 Nouveau 的 RTX 30 系列依赖于英伟达几个月前发布的纯二进制固件进行加速,并且 Nouveau Gallium3D 还在 Mesa 中支持 OpenGL。

这是 Linux 6.2 为广大开发者准备的圣诞礼物。值得一提的是,Linux 6.2 的模块代码还包含一个次要的引导优化,可以减少大约 30 毫秒的引导时间。

参考链接:

  • https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1362114-linux-6-2-speeds-up-a-function-by-715x-kallsyms_lookup_name

  • https://www.phoronix.com/news/Linux-6.2-Arm-SoC-Updates

  • https://www.phoronix.com/news/Linux-6.2-DRM

Linux 6.2 最新合并情况:拓展 ArmSoc 支持,华为代码加速核心功能 715 倍!相关推荐

  1. Linux 6.2:华为代码加速核心功能 715 倍!

    整理 | 王启隆 出品 | CSDN(ID:CSDNnews) 作为送给全球开发者的圣诞礼物,Linux 在前日发布了 Linux 6.1 内核的稳定版,并开启了 Linux 6.2 的合并窗口.这次 ...

  2. 小鹏飞行汽车完成海外公开首飞;统一充电接口或让苹果每年损失百亿;Linus电脑内存问题致Linux 6.1补丁合并推迟|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  3. 【会议记录】Linux内核的最新进展(6.2版本)分享

    前一段时间我参加了阅码场的活动 Yomoday(北京场),现场有很多技术专家,非常多前沿的技术分享.这是其中一个主题的记录,尽量还原当时的分享内容,但也可能有些地方不特别准确. Linux内核的最新进 ...

  4. linux面试大全最新

    文章目录 Linux 概述 什么是Linux Unix和Linux有什么区别? 什么是 Linux 内核? Linux的基本组件是什么? Linux 的体系结构 BASH和DOS之间的基本区别是什么? ...

  5. 四大运营商频段最新划分情况

    四大运营商频段最新划分情况 中国移动 1.900MHz(Band8)上行:889-904MHz,下行:934-949MHz,带宽共计15MHz,目前部署:2G/NB-IoT/4G 2.1800MHz( ...

  6. KDE、Gnome 和 XFCE,各个 Linux 桌面环境的使用情况如何?

    摘要:Linux 中的桌面环境是一个程序,对于用户来说也有多种选择,那么在各种 Linux 桌面环境的资源消耗情况分别如何呢? 链接:https://itvision.altervista.org/l ...

  7. 平均查找性能提高了 715 倍,Linux 6.2 合并华为贡献的代码,华为OD火到国外!...

    点击"开发者技术前线",选择"星标" 让一部分开发者看到未来 IT之家 12 月 14 日消息,Linux 6.2 今日合并了来自华为郑磊(Zhen Lei,音 ...

  8. 暗黑3有linux版本吗,Linux能玩最新的

    4.易维护.有人会说,在Linux操作系统中,请忘掉扫描病毒.磁盘碎片整理.清理注册表以及频繁的被要求重启等等诸如此类的问题. 这是不正确的,一个无论什么样的系统,当运行时间足够长的时候,总会出现这样 ...

  9. linux个人桌面推扩情况,linux桌面

    通常Linux发行版都有默认的桌面成为你的首选,但目前可供选择的桌面环境种类繁多.特别是Ubuntu系统一个平台就提供9种正式备选版本,且各自拥有不同的桌面配置选项.对于Linux桌面环境来说,因为具 ...

最新文章

  1. 四位先行进位电路逻辑表达式_计算机硬件基础:二进制半加器、全加器与加法电路...
  2. [全]php-redis函数使用
  3. SAP Fiori Elements edit按钮的实现细节
  4. [蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)
  5. 用udp协议通讯时怎样得知目标机是否获得了数据包?_和相亲对象聊天,你属于UDP还是CDP?...
  6. 网易云课堂测试微专业前置课
  7. win10便签常驻桌面_Win10用户的印象笔记便签深度体验 | 大使专栏
  8. 保险经纪公司达信联合IBM开发区块链平台
  9. Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24
  10. 【SD自动记账】SD与FI的集成部分
  11. 史上官场吃喝风:与送礼一样成为通用的规则
  12. MapReduce剥洋葱
  13. Git GitHub入门
  14. HTML.初学.更新
  15. c语言程序设计基础程序改错,c语言程序设计改错信息.docx
  16. uniapp 动画的实现
  17. java 群名_网名丨沙雕又可爱的网名/群名
  18. 浅谈IT行业加班现象
  19. sublime text3配置python的代码提示
  20. 云储存公司Terascala获1400万美元融资

热门文章

  1. 河海大学计算机网络毕业设计,河海大学文件河海大学毕业设计.doc
  2. SVN教程——02TortoiseSVN的使用
  3. 共享办公室租赁和传统写字楼之间,如何抉择
  4. 核函数和核矩阵【转】
  5. 嵌入式操作系统--篮球记分计时系统
  6. 360Lib:Lanczos插值
  7. 设计模式----观察者模式
  8. C++ 实现两线段是否相交、相交情况、若相交求出交点坐标
  9. 3080算力添加、ValueError: Unknown CUDA arch (8.6) or GPU not supported 解决RTX30 运行深度学习代码报错
  10. FastBoot BootLoader Recovery 模式学习