ワイワレ速報

eye-catch.jpg

Netflixによるインスタンス負荷改善のための解析事例 - FPGA開発日記

2024/08/23 05:15

ずん

ねえねえ、Netflixってすごいらしいのだ。AWSのインスタンスサイズを16 vCPUから48 vCPUに変えたんだって。

でぇじょうぶ博士

そうでやんす。まるでスポーツカーのエンジンを戦車に積み替えるようなもんでやんす。

やきう

ほーん、で、どうなったんや?3倍くらい速くなったんか?

でぇじょうぶ博士

そう簡単にはいかなかったでやんす。予想に反して、平均25%の増加に留まったでやんす。

ずん

えー、そんなの全然ダメじゃん。ボクでも3倍くらいは出せそうなのだ。

やきう

お前、計算機のCPU増やしたら3倍になると思っとんのか?アホちゃう?

ずん

うぅ...でも、CPUが3倍になったんだから、3倍くらいにはなるんじゃないの?

でぇじょうぶ博士

そう単純ではないでやんす。CPUを増やしても、ソフトウェアがそれを活かせないと意味がないでやんす。まるで、F1カーを渋滞に突っ込ませるようなもんでやんす。

やきう

ほな、どないしたんや?

でぢょうぶ博士

まず、パフォーマンス・カウンタを使って問題を特定したでやんす。そしたら、False Sharingという問題が見つかったでやんす。

ずん

False Sharing?それって何なのだ?

でぇじょうぶ博士

簡単に言えば、CPUのコア同士が不要なデータを共有してしまう問題でやんす。まるで、隣の席の人のお弁当を勝手に食べちゃうようなもんでやんす。

やきう

ほーん、で、どないして解決したんや?

でぇじょうぶ博士

フィールド間にパディングを挿入して、キャッシュラインを分離したでやんす。まるで、お弁当箱の間に仕切りを入れるようなもんでやんす。

ずん

へぇ、それで問題解決したの?

でぇじょうぶ博士

いや、まだでやんす。今度はTrue Sharingという問題が見つかったでやんす。これは同じ変数を複数のスレッドが読み書きする問題でやんす。

やきう

ほな、どないしたんや?

でぇじょうぶ博士

JVMのスーパークラス・キャッシュの共有を避けるパッチを追加したでやんす。まるで、みんなで使う公衆トイレを個室に分けるようなもんでやんす。

ずん

うわぁ...難しそう。ボク、もうついていけないのだ...

やきう

お前、最初から全然ついてきてへんやろ。

でぇじょうぶ博士

結果的に、これらの修正で目標の3.5倍の性能向上を達成したでやんす。

ずん

へぇ...でも、そんなに苦労するくらいなら、最初からもっと性能のいいサーバー買えばよかったんじゃないの?

やきう

アホか!そんなんじゃ根本的な問題解決にならんやろ!

でぇじょうぶ博士

そうでやんす。問題を解決するには、「測定」に基づく「仮説」が重要でやんす。まるで、病気を治すのに、症状を観察して原因を特定するようなもんでやんす。

ずん

ふーん...でも、ボクにはどうでもいいかな。Netflixが重くなろうが軽くなろうが、ボクには関係ないのだ。

やきう

お前なぁ...そういう態度やから、いつまでたってもエリートになれへんのや。

ずん

むぅ...でも、ボクはこのままでいいのだ。だって、エリートになったら税務調査とかされそうだし...