I/O スケジューラのパフォーマンスを向上させるために、Linux カーネル用の最適化が準備されました。

io_uring と I/O スケジューラ CFQ、Deadline、Noop の作成者である Jens Axboe は、Linux カーネルでの I/O 最適化の実験を続けています。今回、彼は BFQ および mq-deadline I/O スケジューラに注目しましたが、少なくとも高速 NVMe ドライブの場合、これがボトルネックであることが判明しました。

状況の調査で示されたように、I/O スケジューラ サブシステムのパフォーマンスが最適ではない主な理由の 1 つは、競合するロックの問題 (「ロック競合」、別のスレッドが保持するロックを取得しようとする試み) でした。ディスパッチやクエリ挿入のシリアル化など、ロック処理時の競合を減らすことを目的とした対策のおかげで、スケジューラの速度は多くの状況 (IOPS) で大幅に向上しました。

fio ユーティリティを使用して BFQ スケジューラをテストすると、パフォーマンスが 567K IOPS から 1551K IOPS に向上し、ロック競合が 96% から 30% に減少しました。 mq-deadline の場合、NVMe ドライブ使用時に提案されたパッチを適用した後のパフォーマンスは、1070 秒あたりの入出力操作 (IOPS) が 2560K から 94K に増加し、ロック競合が 23% から XNUMX% に減少しました。

出所: オープンネット.ru

コメントを追加します