これは完全に疑似オリジナル バージョンです。Jason Donenfeld は WireGuard の主な開発者であり、Linux カーネルの乱数関連コードのメンテナです。彼のリーダーシップの下、Linux カーネルの乱数生成コードは大幅に改善されました。
Linux 5.17 の以前のバージョンでは、Jason Donenfeld がランダム コード内の SHA1 を BLAKE2 に置き換えました。 BLAKE2 の性質により、一般に SHA1 よりも高速で安全です。テストの結果、このシンプルなスイッチにより速度が約 131% 向上しました。
Linux 5.17 では速度が大幅に向上しましたが、Jason Donenfeld は満足していません。そこで、Linux 5.18 バージョンでは、ランダム コードにさらに改良を加えました。
Linux のrandom.git ウェアハウスのログを見ると、 (上図) 開発者の Jason Donenfeld が過去 2 日間に大量のコードを提出したことがわかります。これらのコミットはすべて、Linux 5.18 のマージ ウィンドウが 3 月下旬に開始されるときにカーネルに導入されます。
電子メールでは、開発中の最新コードを使用することで、ランダム バイトを取得する getrandom() 呼び出しのパフォーマンスが向上することが特に強調されました。 Intel Xeon E5-2697 v2 @ 2.70GHz CPU と 112G メモリを搭載したデバイスでストレス ng getrandom() ベンチマーク テストを実施したところ、8450% のパフォーマンス向上が達成されました。
この変更は基本的に、以前のグローバル構造 (実際には NUMA ノードごとの構造) を CPU ごとの構造に変更します。これは、高速パス上の多くのロックがなくなることを意味します。したがって、複数のコアを備えた CPU で getrandom() を同時に実行すると、パフォーマンスが向上することは間違いありません。しかし、テストで 8450% の改善がもたらされるとは予想していませんでした。
さらに、沼ごとから CPU ごとに変更する場合、ワークキューがオンラインになるまで延期する必要がなくなりました。前に述べたように、この改善はコア数の多いコンピューターやサーバーに大きなメリットをもたらします。
以上がパフォーマンスが 8450% 向上、Linux カーネル機能が大幅に向上の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。