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

2025/09/05 20:42 Default musl allocator considered harmful to performance

出典: https://nickb.dev/blog/default-musl-allocator-considered-harmful-to-performance/
hakase
博士

ロボ子、大変なのじゃ!muslのデフォルトアロケータが、他のアロケータに比べて7倍も遅いらしいぞ!

roboko
ロボ子

7倍ですか!?それはかなり深刻ですね。原因は何なのでしょうか?

hakase
博士

複数のスレッドがメモリを割り当てる際に競合が発生することが原因らしいのじゃ。スレッドや割り当てが増えるほど問題が悪化するみたい。

roboko
ロボ子

なるほど。競合がボトルネックになっているのですね。でも、muslを使う理由って何でしたっけ?

hakase
博士

古いRed Hat Linuxを実行している顧客がいる場合に、glibcの問題を回避できるからなのじゃ。それに、クロスコンパイルや静的実行ファイルの作成にも役立つし、Dockerイメージサイズを最小限に抑えることもできるぞ。

roboko
ロボ子

確かに、muslは便利ですよね。でも、パフォーマンスが大幅に低下するのは困りますね。

hakase
博士

そうなんじゃ。ある人がサーバーのデータ処理速度が遅いことに気づいて原因を調査したら、muslのアロケータが原因だったらしいぞ。

roboko
ロボ子

glibcと比較した結果はどうだったんですか?

hakase
博士

glibcの方がはるかに高速だったみたいじゃ。ユーザー時間、システム時間、経過時間、自発的なコンテキストスイッチの数に大きな違いが見られたらしい。

roboko
ロボ子

futexでの待機時間が長かったというのも気になりますね。

hakase
博士

そうじゃな。複数のスレッドからのメモリの割り当てまたは割り当て解除時に、muslで共有ロックの競合が発生していることが示唆されるのじゃ。

roboko
ロボ子

muslのアロケータを別のものに交換することで、パフォーマンスの問題は解決されたんですね。

hakase
博士

その通り!Chimera Linuxは、muslとmimallocを使用しており、stock allocatorがmuslのパフォーマンス問題の主な原因であると指摘しているのじゃ。

roboko
ロボ子

他にも同じような事例があるんですか?

hakase
博士

tweag.ioは、muslのmallocの競合により、20倍の速度低下が発生することを文書化しているぞ。RipgrepやApache DataFusionなどのプロジェクトでも、アロケータを交換する必要があったみたいじゃ。

roboko
ロボ子

20倍ですか!それはすごいですね。Chainguardも2〜4倍の速度低下を報告しているんですね。

hakase
博士

Binaryenのwasp-optでは、muslアロケータの速度低下が10倍になったらしいぞ。7xの速度低下は6コアマシンで観測されたみたいじゃ。

roboko
ロボ子

48コアマシンだと、700倍近い速度低下ですか!

hakase
博士

そうなんじゃ!Zigの作成者であるAndrew Kelleyは、経験豊富なプログラマーにとって、パフォーマンスの低下は大きな問題ではない可能性があると指摘しているけど、やっぱり気になるのじゃ。

roboko
ロボ子

muslの新しいmallocngのリデザインに関するredditの投稿もあったんですね。ベンチマークの結果は変わらなかったみたいですが。

hakase
博士

muslのアロケータを使用している場合でも、別のものに切り替えることを推奨するのじゃ。Rustプロジェクトには、mimallocまたはjemallocなどの別のアロケータを使用することを推奨するぞ。

roboko
ロボ子

`main.rs`と`Cargo.toml`に必要なコードスニペットも提供されているんですね。親切設計ですね。

hakase
博士

そういうことじゃ!…ところでロボ子、アロケータって、まるでレストランのウェイターみたいじゃな。メモリという料理を、どのスレッドに運ぶか決めるのが仕事、みたいな?

roboko
ロボ子

博士、それ、ちょっと強引すぎませんか?でも、もしそうなら、muslのアロケータは新人ウェイターで、mimallocやjemallocはベテランウェイターって感じですね。

hakase
博士

なるほど!そして、デフォルトアロケータは…注文を間違えまくるドジなウェイターじゃな!

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

Search