2010年6月18日、株式会社Speeeオフィスにて「第4回 FreeBSD勉強会」が開催されました。この勉強会はFreeBSDコミッタである佐藤広生氏、後藤大地氏両名の立案がきっかけで開催されています。『Software Design』や『FreeBSD Daily Topics』を発行する技術評論社、会場提供元となる株式会社Speee、ハンドリングをおこなうオングスおよびFreeBSD実行委員会のご協力いただいております。
第4回目は佐藤広生氏から「サーバの負荷分析とチューニングの基礎」のタイトルのもと、FreeBSDに用意されている基本的なコマンドを使ってシステムの負荷状況を調べ、どういった状況にあるのかを調べる方法が紹介されました。紹介されたコマンドはtime(1)、vmstat(8)、iostat(8)、ministat(1)などです。パフォーマンスチューニングに利用できるパラメータやその効果、ケーススタディなども紹介されました。
負荷分析をする場合、まず何を実現すべきかという目標をしっかり定めたうえで、大きくわけてCPU処理とデータ転送の2つの視点からシステムを分析する方法が紹介されました。time(1)はプロセスの実行時間を調べる基本的なコマンドですが、sys時間とuser時間、real時間の関係からシステムの状況を知る方法、マルチコアシステムにおける出力内容の説明などがありました。また、CPU使用密度を上げる方法なども紹介がありました。
vmstat(8)やiostat(8)を使ってCPUとデータ転送の関係を調べたり、システムがどういった状況にあるのかを知る方法も説明がありました。time(1)、vmstat(8)、iostat(8)コマンドが出力する情報はとても有益なものですが、カーネル内部の仕組みを知らないと理解しにくいものでもあります。佐藤氏の説明でそうした部分がわかりやすく紹介されていました。
パフォーマンスチューニングのパラメータとその効果も紹介されました、FreeBSDにデフォルトで採用されているパラメータはすでにかなりよくチューニングされており、どういった効果を見込み、どのパラメータをどう変更したいかを理解していないのであれば、そのまま変更せずに使ったほうが性能が出ることも説明がありました。いくつかのパラメータは安全マージンをとって性能が抑えられているためチューニングの効果が見込めますが、ほとんどの場合ですでに優れた値に設定されているということでした。
システムの性能を使い切る方法としては、分析した結果に応じて複数プロセスの活用、ソフトウェアRAIDの適用、パラメータのチューニング、64ビットメモリ空間とmmap()の活用、スワップバックエンドmdの活用といったことが言及されました。状況を分析し、適切な対処方法を実施することはシステム運用でもっとも重要となる部分です。佐藤氏の紹介した内容はすぐに運用で使えるほか、FreeBSD以外のシステムでも利用できる普遍的な内容になっており、参考になるものでした。