Linux getrandom() 获得 18450% 性能提升


Jason Donenfeld 是 WireGuard 的主要开发者,同时他也是 Linux 内核随机数相关代码的维护者,近日在他的领导下,Linux 内核的随机数生成器代码有了巨大幅度的改进。

在之前的 Linux 5.17 中,Jason Donenfeld 就在随机代码用 BLAKE2s 代替了 SHA1,由于 BLAKE2s 自带的特性,前者通常比后者更快更安全。经过测试,通过这个简单的转换就能获得 131% 左右的速度提升。

虽然在 Linux 5.17 中有了速度上的大幅提升,但 Jason Donenfeld 对此并没满足。因此在 Linux 5.18 中他对随机代码作出了更多的改进。

通过查看 Linux 的 random.git 仓库的日志能够看出(上图),开发者 Jason Donenfeld 在最近两天时间里进行了大量的代码提交。这些提交内容都将在 3 月下旬 Linux 5.18 的合并窗口启动时引入内核。

在邮件中特别强调到,通过使用正在开发的最新代码,用于获取随机字节的 getrandom() 调用能够获得更好的性能。在配备英特尔 Xeon E5-2697 v2 @ 2.70GHz CPU 和 112G 内存的设备上进行 stress-ng getrandom() 基准测试后,更是获得了 18450% 的性能提升。

此次更改基本上会将之前的全局结构(实际上是 per-numa 节点结构)更改为 per-cpu 结构,这意味着快速路径上的许多锁都会消失。因此,当在具备多核的 CPU 上同时尝试 getrandom() 时,毫无疑问性能会出现提升。只不过没想到在测试中能带来 18450% 的提升。

除此之外,当从 per-numa 更改为 per-cpu 后,也将不再需要被推迟到工作队列上线后才能进行。也正如我之前所说,此次改进将会为高核心数的电脑和服务器带来巨大收益。


相關推薦

2023-02-01

去年 8 月发布的 ACPI 6.5 规范引入了 对 LoongArch / RISC-V 架构的支持。近日,一组由 RISC-V 初创公司 Ventana Micro Systems  提供的 Linux 内核补丁为 RISC-V 处理器架构提供了基本的 ACPI 基础设施支持。 ACPI 全称 Advance

2022-12-23

在业界和学术界都有口皆碑。用户可通过完整的源代码来获得支持。很多应用程序都可容易地从 NetBSD Packages Collection 获得。

2023-11-24

于最新的AMD Zen 4 Threadripper处理器,运行Ubuntu会比Windows 11获得更好的性能,前者较后者大约提升了20%的性能。这项测试是在一台配置了HP Z6 G5 A工作站的96核AMD Ryzen Threadripper PRO 7995WX处理器上进行的。 测试结果显示,Linux在处理

2023-11-18

为用户提供了数以千计的参数,因此想要通过调整参数以获得最佳性能已经变得越来越困难。大多数情况下,不同的工作负载需要对不同的 Linux 内核参数集进行不同的调整。 而在像字节跳动这样的大型数据中心,要针对数百种

2022-10-28

更强的安全性和更好的硬件兼容性 许多内置系统技术已获得改进,以提高安全性、兼容性和性能。 Zorin OS 16.2 现在由与 Ubuntu 22.04 相同版本的 Linux 内核提供支持,并配备了新的驱动程序,为硬件带来了更好的支持,例如:

2021-11-09

操作内存的新 API。 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持。 在 .NET 6 开发周期内,总共包含大约一万个 commit,下面简要介绍新版本的亮点变化。 .NET 6 亮点 使用 Microsoft 服务、其他公司运行的云应用程

2023-11-10

在业界和学术界都有口皆碑。用户可通过完整的源代码来获得支持。很多应用程序都可容易地从 NetBSD Packages Collection 获得。

2023-11-24

根据Phoronix的报道,Linux 6.8内核计划在明年升级其Zstd代码,以提供更好的压缩性能。 在Linux 6.2中,内核的Zstd压缩/解压缩代码已经根据Zstd 1.5的最新状态进行了更新。而在Linux 6.8内核中,计划升级到Zstd 1.5.5版本,这将提供更好

2024-08-15

points,提升调试效率。 改进符号识别功能,以确保用户获得最准确的建议。 更精确、更具上下文感知的代码完成,减少了手动编辑的需要。 提升安全性,GitHub Copilot Business 客户可防止指定文件或资源库被用于为 GitHub Copilot

2022-12-17

Linux 6.2 的 exFAT 内核驱动程序获得了一批优化补丁,对使用 exFAT 文件系统的 SD 卡或 USB 闪存驱动器来说,创建文件和目录的速度比以前版本更快。 exFAT 文件系统是由微软开发的 FAT32 文件系统的替代者,在整个电子行业中都得

2022-09-09

3.2 开始,RDNA1 和 GFX9/Vega 的问题已经解决,以便让 Blender 获得更广泛的 AMD Radeon GPU 支持 改进了 macOS 上 Apple Metal 渲染 GPU 的性能 OpenVDB 卷的渲染精度为半浮点,而不是全浮点,从而大大降低了内存占用 在使用多个 NVIDIA GPU

2022-11-03

定文件相关联,可以从文件的 iNode 和一些偏移量计算中获得 主机向设备询问该文件当前的物理碎片级别。 如果需要,主机可以指示设备执行碎片整理。 碎片整理阶段成功后,主机可能会询问文件的新碎片级别。 但该系

2022-10-08

后于计划时)。启用三重缓冲技术后,GPU 的时钟速度将获得提升,时钟速度提升又有助于性能提升,以确保桌面能够以全帧率渲染。如果前一帧没有落后于计划,则会采用传统的双重缓冲技术,以避免过度延迟。 Ubuntu 最早是

2022-10-20

量生命周期短、规格小的任务实例,但在此类任务实例上获得调试诊断能力并不容易,这使得 Serverless 应用长期处于较为黑盒的窘境。比如,Inspector 需要稳定和长时的网络连接、运行时 Heap Snapshot 需要较