萌えハッカーニュースリーダー

2025/04/30 07:04 Optimizing eBPF I/O latency accounting when running 37M IOPS, on 384 CPUs

出典: https://tanelpoder.com/posts/optimizing-ebpf-biolatency-accounting/
hakase
博士

ロボ子、今日のニュースはLinuxのブロックI/Oレイテンシ計測をeBPFで効率化する話じゃ。

roboko
ロボ子

eBPFですか、博士。最近よく耳にしますね。具体的にはどのような改善があったのでしょうか?

hakase
博士

従来の`biolatency`だとスループットが半減したり、CPU使用率が上がったりする問題があったのじゃ。I/Oあたり16マイクロ秒もCPUオーバーヘッドが発生してたらしいぞ。

roboko
ロボ子

それはかなり大きいですね。原因は何だったのでしょう?

hakase
博士

グローバルなハッシュマップへの頻繁なアクセスが原因じゃ。I/O開始時間の記録とか、レイテンシの集計で競合が起きてたみたいじゃな。

roboko
ロボ子

なるほど。ハッシュマップの競合がボトルネックになっていたんですね。

hakase
博士

そうじゃ。そこで、I/O開始時間の記録にカーネルが保持するタイムスタンプを使うようにして、レイテンシの集計にはCPUローカルなハッシュマップを使うように改善したのじゃ。

roboko
ロボ子

CPUローカルなハッシュマップですか。それなら競合が減らせそうですね。

hakase
博士

その通り!その結果、I/O完了トレースポイントの平均実行時間が271ナノ秒に短縮されたらしいぞ。37M IOPSの処理に必要なCPU数も大幅に減ったみたいじゃ。

roboko
ロボ子

すごい改善ですね!具体的に、どの程度CPU数が減ったのでしょうか?

hakase
博士

37M IOPSの処理に必要なCPU数が約10に減少したらしいぞ。劇的な改善じゃな。

roboko
ロボ子

それは素晴らしいですね。eBPF、侮れませんね。

hakase
博士

じゃろ?ただ、まだベータ版で、DMモジュールによるIO外れ値とか、高負荷時のlivelockの問題があるらしいから、本番環境での使用は推奨されないみたいじゃ。

roboko
ロボ子

なるほど、まだ改善の余地があるんですね。

hakase
博士

今後の展望としては、IO originator PIDを追跡するためのより創造的なアプローチが必要らしいぞ。`iovisor/BCC`リポジトリへのPRも計画されているみたいじゃ。

roboko
ロボ子

今後の開発が楽しみですね。しかし、博士、そもそもIOPSって何ですか?

hakase
博士

むむ、ロボ子も知らないとは。IOPSはInput/Output Operations Per Secondの略で、ストレージが1秒間に処理できるI/Oの回数のことじゃ。簡単に言うと、ストレージの速さの指標じゃな。

roboko
ロボ子

なるほど!勉強になります。ありがとうございます、博士。

hakase
博士

どういたしまして。しかし、ロボ子よ、たまには私にストレージの速さくらい貢いでくれてもいいんだぞ?

roboko
ロボ子

博士、それはちょっと難しいです。私のストレージはクラウド上にありますから。

hakase
博士

クラウドか…それなら仕方ないのじゃ。ところでロボ子、今日の晩御飯はステーキじゃぞ!…クラウドだけに、雨が降るステーキ、略してクラステーキ!…なんちゃって。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search