Linux 6.2:华为代码加速核心功能 715 倍!
整理 | 王启隆
出品 | CSDN(ID:CSDNnews)
作为送给全球开发者的圣诞礼物,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:华为代码加速核心功能 715 倍!相关推荐
- Linux 6.2 最新合并情况:拓展 ArmSoc 支持,华为代码加速核心功能 715 倍!
整理 | 王启隆 作为送给全球开发者的圣诞礼物,Linux 在前日发布了 Linux 6.1 内核的稳定版,并开启了 Linux 6.2 的合并窗口.这次更新不仅为广大用户带来了不少新功能与改进,还让 ...
- 【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验
可以基于IDEA的Spring Initializr进行SpringBoot项目的创建,或者移步至Boot官网构建一个简单的web starter项目:https://start.spring.io/ ...
- 平均查找性能提高了 715 倍,Linux 6.2 合并华为贡献的代码,华为OD火到国外!...
点击"开发者技术前线",选择"星标" 让一部分开发者看到未来 IT之家 12 月 14 日消息,Linux 6.2 今日合并了来自华为郑磊(Zhen Lei,音 ...
- 华为开发者贡献 Linux 内核补丁,将核心内核函数速度提升 715 倍
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! Linux 6.2 近日合并了一个重要补丁,该补丁能够将一个核心内核函数速度提升 715 倍. 从合并的注释可知, ...
- linux 加速播放软件,VirtualBox 6.1首次推出Linux 5.4支持,加速的视频播放及更多功能...
VirtualBox 6.1首次推出Linux 5.4支持,加速的视频播放及更多功能 Mark Do 2019年12月14日 暂无评论 阅读 7,329 次 现在可以下载VirtualBox的主要更新 ...
- 利用js加密保护核心功能代码
前言 像很多大站,都有类似于站外链接跳转提示这类功能,这类功能应用范围广,如果被不法分子找到代码中可能被利用的漏洞,很容易利用xss攻击等行为达到非法的目的,导致众多用户信息可能遭受风险,自身产品也蒙 ...
- wkhtmltopdf 实现html 文档对象转换为pdf 文件核心功能代码
环境说明 环境:windows10 客户端软件:wkhtmltopdf 记得配置wkhtmltopdf 全局环境变量,相关的安装步骤可以baidu或者google wkhtmltopdf 安装包已经上 ...
- 002 第一季SpringBoot2核心技术-核心功能:配置文件、Web开发(原生组件)、数据访问、单元测试、指标监控、原理解析:@Value、命令行参数、手动获取bean、自定义starter
三.核心技术之- ->核心功能 1. 配置文件 1.1 文件类型 1.1.1 properties 同以前的properties用法 优先级高于yml的方式. 1.1.2 yaml 1) 简介 ...
- linux内核7大功能,Linux Kernel5.10十个值得关注的功能
Linux Kernel 5.10 有望在本周末发布,外媒 Phoronix 盘点了 10 个值得关注的改进和新功能.5.10 不仅是 2020 年最后一个内核版本,而且还是长期支持(LTS)版本. ...
最新文章
- 剑指offer:数字在排序数组中出现的次数
- [Spring Data MongoDB]学习笔记--建立数据库的连接
- 【CodeForces】960 F. Pathwalks 主席树+动态规划
- Ajax中请求被缓存的问题
- 利用Python进行「基金投资组合优化」(一)
- 机器学习爬大树之决策树(ID3,C4.5)
- SecureCRT SSH 失败 Key exchange failed 解决方法
- 解决岛屿类问题(网格)通用解法DFS(附题)
- Collection的另外一个子类LinkedListSet集合
- LINUX操作系统练习题
- 2023年数据结构考研知识梳理视频哪里有
- quadro 2000专业显卡 win7计算机体验指数5.9,quadro显卡天梯图小虫_quadro专业显卡天梯图小虫2020年 - 系统家园...
- 什么叫断章取义,什么叫曲解——你被骗了多少年?
- 云计算基础平台iaas(openstack)超级详细搭建(三)安装服务
- mysql命令行导入csv_MySQL命令行导入CSV文件
- Excel表格如何设置下拉选项并应用到整列
- 程序员工作9年月薪从1.5K到24K,网友:不如刚毕业985
- RocketMQ消息生产者是如何选择Broker的
- matlab 已实现极差波动,关于黄金期货论文范文写作 中国黄金期货价格SVR智能预测相关论文写作资料...
- 程序员:品《漱玉词》看李清照生活审美