Linux 6.4 のマージ ウィンドウは今週末に終了しますが、期間の最後の丸 1 日である今日、Jens Axboe はパイプ FMODE_NOWAIT サポートを提出し、パフォーマンスと効率が大幅に改善されたと述べています。

パイプ パッチの FMODE_NOWAIT サポートの初期化により、 Axboe 氏は次のように説明しています。-wq を処理します。このシリーズでは、FMODE_NOWAIT のサポートをパイプに追加します。”

しかし、実際にワイルドになるのは、それによるパフォーマンス/効率の向上の規模です:

“方法に興味があるこれが大きな違いを生むので、単純に 128 のパイプを開き、256 ラウンドの読み取りと書き込みを行う小さなベンチマークを作成しました.これは 10 回実行され、常に少し遅いため、最初の実行は破棄されました. パッチ適用前:

平均: 262.52 ミリ秒
標準偏差: 2.12 ミリ秒
最小: 261.07 ミリ秒
最大 267.91 ミリ秒

パッチ適用後:

平均: 24.14 ミリ秒
標準偏差: 9.61 ミリ秒
最小: 17.84 ミリ秒
最大: 43.75 ミリ秒

つまり、パフォーマンス (および効率) が約 10 倍向上します。

パッチを ltp パイプとスプライス テストで実行しましたが、リグレッションは観察されませんでした。 io_uring トレースを見ると、以前はすべて io-wq を介して行われていたパッチ後、io_uring_queue_async_work() トレースがなくなっていることがわかります。”

後で そのパッチシリーズに追加:

」上記テストは、読み取りが発行されたときに空のパイプを対象としていました。テストがデータを持つように変更された場合、さらに良く見えます:

前:

平均: 249.24 ミリ秒
標準偏差: 0.20 ミリ秒
最小: 248.96 ミリ秒
最大: 249.53 ミリ秒

変更後:

平均: 10.86 ミリ秒
標準偏差: 0.91 ミリ秒
最小: 10.02 ミリ秒
最大: 12.67 ミリ秒

または約 23 倍の改善.”

Linux 6.4 にマージするために設定されたパッチは、パイプの FMODE_NOWAIT サポートを設定しますが、使用する場合は無効にしますパイプ上の splice/vmsplice。このプル リクエストが現在のものですパイプ FMODE_NOWAIT のサポートは保留中です。

Categories: IT Info