当前位置: 首页 > 科技观察

Linuxgetrandom()获得8450%的性能提升

时间:2023-03-12 20:25:47 科技观察

JasonDonenfeld是WireGuard的主要开发者,也是Linux内核随机数相关代码的维护者。最近,在他的带领下,Linux内核的随机数生成器代码有了巨大的改进。在之前的Linux5.17中,JasonDonenfeld在随机码中使用了BLAKE2s而不是SHA1。由于BLAKE2s的固有特性,前者通常比后者更快、更安全。经过测试,通过这种简单的转换,可以获得约131%的速度提升。虽然Linux5.17有巨大的速度提升,但JasonDonenfeld并不满意。所以在Linux5.18中他对随机码做了更多的改进。通过查看Linuxrandom.git存储库(上图)的日志可以看出,开发人员JasonDonenfeld在过去两天提交了大量代码。当Linux5.18的合并窗口在3月下旬开始时,这些提交都将被带入内核。邮件中特别强调,获取随机字节的getrandom()调用使用最新的正在开发的代码可以获得更好的性能。在配备IntelXeonE5-2697v2@2.70GHzCPU和112G内存的设备上进行stress-nggetrandom()基准测试后,获得了8450%的性能提升。这个改动基本上会将之前的全局结构(实际上是per-numanode结构)改为per-cpu结构,也就是说fastpath上的很多锁都会消失。所以在多核CPU上并发尝试getrandom()时,毫无疑问会有性能提升。只是没想到在测试中带来了8450%的提升。此外,当从per-numa更改为per-cpu时,将不再需要推迟到工作队列上线。同样正如我之前所说,这种改进将为高核数计算机和服务器带来巨大的好处。本文转自OSCHINA文章标题:Linuxgetrandom()gets8450%performanceimprovement文章地址:https://www.oschina.net/news/183698/linux-getrandom