linux6.2最新合并情况:拓展armsoc支持,华为代码加速核心功能715倍!

CSDN资讯 CSDN资讯     2022-12-16     375

关键词:

整理 | 王启隆

作为送给全球开发者的圣诞礼物,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

linux6.2已正式发布

...p;6.2内核,这是2023年的第一个主要内核版本。硬件方面,Linux6.2提升了IntelArc显卡(DG2/Alchemist)的稳定性,真正做到开箱即用。英特尔的OnDemand驱动程序现在状态良好,适用于第4代Xeon可扩展“SapphireRapids”CPU。其次,Linux6.2初步支持... 查看详情

linux6.2:华为代码加速核心功能715倍!

...9;作为送给全球开发者的圣诞礼物,Linux在前日发布了Linux6.1内核的稳定版,并开启了Linux6.2的合并窗口。这次更新不仅为广大用户带来了不少新功能与改进,还让许多人开始期盼Linux6.2将会合并哪些令人兴奋雀跃的内... 查看详情

如何在没有合并提交或使用 CLI 的情况下使 GitHub 分叉保持最新?

】如何在没有合并提交或使用CLI的情况下使GitHub分叉保持最新?【英文标题】:HowtokeepaGitHubforkuptodatewithoutamergecommitorusingCLI?【发布时间】:2019-10-1722:45:07【问题描述】:贡献代码库的正常GitHub流程是创建上游的分支,克隆您进... 查看详情

拓展并查集

...扩大倍数,每增加一倍就保存一个·对立的关系。然后合并时要注意用可要把对立关系合并起来,举个列子吧。就比如说洛谷p2204这个题,他就是有三个关系,食物,天敌。你每次合并不仅要把自己合并,你还要把食物和天敌... 查看详情

求一款最新的能剪切、合并、截取视频和音频的专用工具,急用!!!

1、要是免费的,而且是汉化版的!2、最好能附带下载地址的!3、在次表示万分的感谢!参考技术A一、UltraRMConverter是一款Real媒体文件转换、分割、合并软件,支持将RM和RMVB文件转换为AVI(DivX/XviD/MPEG-4)、VCD、SVCD、DVD(PAL/NTSC)、MPEG... 查看详情

st推出最大内存stm32,航顺发布全球最高工艺norflash,linux6.2.1正式发布

ST推出最大内存STM32,Linux6.2.1正式发布,航顺发布全球最高工艺NORFlash(点击链接,阅读原文)更多视频,请到我视频号查看:点击“阅读原文”查看更多分享。 查看详情

我可以在不执行合并的情况下从主干更新分支吗?

...发一些新功能,是否有更简单的方法可以让分支与trunk的最新版本保 查看详情

如何获取最新政策信息-比目镜

如何获取最新政策信息-比目镜比目镜——一个政府红利政策信息资源整合与共享服务平台,以知识产权维护为中心,以科技政策信息为指导,以服务于中小企业为宗旨。平台三大优势功能优势一:一手政策通知实时获取优势二... 查看详情

报表中怎么把相同值的单元格合并成一个大格

同值合并单元格的情况一般分两种:1、一种是比较简单的情况:对分类或者分类扩展字段进行同值合并处理(如下图所示的效果图:对供应商数据进行同值合并)这种情况大多数报表工具都能直接支持,使用分组功能即可。2、... 查看详情

报表中怎么把相同值的单元格合并成一个大格

同值合并单元格的情况一般分两种:1、一种是比较简单的情况:对分类或者分类扩展字段进行同值合并处理(如下图所示的效果图:对供应商数据进行同值合并)这种情况大多数报表工具都能直接支持,使用分组功能即可。2、... 查看详情

利用seaweedfs支持多文件合并上传

...告诉seaweedfs,这个大文件是由1,2,3。。。。这几个文件合并而成。详情请参考https://github.com/chrislusf/seaweedfs/blob/master/weed/operation/chunk 查看详情

深度学习--pytorch维度变换自动拓展合并与分割(代码片段)

深度学习--PyTorch维度变换、自动拓展、合并与分割一、维度变换1.1view/reshape变换​ 这两个方法用法相同,就是变换变量的shape,变换前后的数据量相等。a=torch.rand(4,1,28,28)a.view(4,28*28)#tensor([[0.9787,0.6729,0.4877,...,0.8975,0.3361,0.9341],#[0.... 查看详情

远程仓库获取最新代码合并到本地分支(代码片段)

这里共展示两类三种方式。1.gitpull:获取最新代码到本地,并自动合并到当前分支命令展示//查询当前远程的版本$gitremote-v//直接拉取并合并最新代码$gitpulloriginmaster[示例1:拉取远端origin/master分支并合并到当前分支]$gitpullorigindev... 查看详情

entityframeworkextendedlibrary(ef扩展类库,支持批量更新删除合并多个查询等)

...d也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对IQueryable<T>的扩展,而不是DbSet<T>(已经标记为弃用),所以跟我一样 查看详情

亚马逊云科技最新赛事思路拓展|如何实现超大尺寸图像快速识别?

近期开赛的亚马逊云科技【AIForGood-2022遥感光学影像目标检测挑战赛】中,动辄超过10000x10000的卫星遥感图像让许多选手感到头疼。同时遥感影像中目标尺寸差别大、角度各异也导致常见的CV框架难以实现快速精准的目标识别... 查看详情

如何合并由最新覆盖的哈希数组?

】如何合并由最新覆盖的哈希数组?【英文标题】:Howtomergeanarrayofhashesoverridingbythelatest?【发布时间】:2021-11-2816:12:18【问题描述】:根据@choroba,我尝试了以下代码:useData::Dumper;my@arrayofhashes=[\'a\'=>4,\'b\'=>3,\'c\'=>5,\'a\'=>... 查看详情

git如何合并fork的仓库的最新代码(代码片段)

文章目录Git如何合并Fork的仓库的最新代码1、操作步骤Git如何合并Fork的仓库的最新代码1、操作步骤#拉取原仓库代码gitremoteaddupstreamfork的仓库地址gitpullupstream#将原仓库代码合到自己仓库gitmergeupstream/master#推送到自己仓库gitpush 查看详情

opencv 无法在启用 ipp 支持的情况下构建

...遇到了一些问题。我在debiansqueeze32bit上使用cmake-gui和ipp的最新intel版本(完整的composer包)。我认为我已经正确配置了cmake。当我在启用ipp的情况下构建时 查看详情