「詳解 システム・パフォーマンス 第2版」を年末年始の連休で一気読みした。まだ読んだことない人向けに軽く紹介してみる。
Brendan Greggさんの本で、初版から8年越しの改訂版。初版から何が変わっているかというとeBPFの章が追加されていてeBPFのツールも各章で紹介されている。あと、Solarisについての記述が大幅に無くなったっぽい。Solarisファンの方は、前の版も買うと良さそう。大学のマシンがSolarisだったけど、私は特に思い入れはないので第2版で満足w
章の組み立てとしては、いきなりCPUやメモリの話になるのではなく、どういう方法論を使っていけばメトリクスなどから解決方法を導くことができるかというのが示されるところから始まる。USEメソッド、REDメソッドはシンプルかつ、有益なのでこれをサクっと見れるようになるダッシュボード作っておくかという業務にすぐ活かせそうな情報も手に入る。
それ以降の章では、オペレーティングシステム、アプリケーション、CPU、メモリ... とそれぞれの基礎的な用語の整理から始まりアーキテクチャ、採用されているアルゴリズムの話が展開される。ここの部分はパフォーマンスを改善するためにベースとなる部分ではありつつ、ここら辺の知識が抜けている人はキャッチアップするのに良さそうであった。
基礎知識整理したあとは、2章で取り上げた方法論を元に、それぞれに合わせたツールを用いて実際にどう分析していくのかというが記載されている。
各レイヤーをどういったツールで分析していくかというのを図示してくれているけど、知らないのがほとんどだった。
また、各章末には練習問題がついていて、理解度チェックに活用できるので、これも嬉しい。一部異常に難しい演習があるが、ちゃんと高難易度と書かれているので親切。
最後にケーススタディとして、著者が実際にNetflixでの業務で発生した「新しいコンテナベースのプラットフォームでNetflixのあるマイクロサービスをテストしたところ、VMから移しただけなのに4倍くらい高速になった」という摩訶不思議な事象を紹介した方法論・ツールを使って謎を解き明かしていく章があるが、これめちゃくちゃ面白いのでここから読んでも良いかも。
色んなケーススタディがまとまっている本を出版して欲しいw
eBPFのことも全然知らなかったので、どういうものか知ることができてよかった。興味が出てきたので、タイムリーに先月発売されていたO'Reilly Japan - 入門 eBPFを買った。読むのが楽しみ。
まとめ
900ページという技術書の中でも結構分厚い書籍ではあるけど、頭から全部読む必要はないかなと思った。16章の「ケーススタディ」を読んで(ケーススタディ自体は10ページほどの短さ)から、2章の「メソドロジ」を読み、気になる章を読んでいくスタイルでも良さそう。1回読んで終わりの本ではないので、必要になった時に何度も参照することになると思う。
2024年の課題図書として、いかがでしょうか。