詳解 システムパフォーマンスを読む⑥
前回の続き
P.21あたりから
パフォーマンスについては、トレードオフが存在することを認識しておくべきである
良いー早いー安い から2つを選ぶと1つが犠牲になる
パフォーマンスー時間内ー低コスト から2つを選ぶと1つが犠牲になる
小 アプリケーション実行中のファイルシステムキャッシュをより効率的に使える
大 ファイルシステムバックアップなど、ストリーミングのワークロードのパフォーマンスが向上する
ネットワークバッファサイズ
小 接続ごとにメモリにかかるオーバーヘッドが削減できるので、システムのスケーリングに効果がある
大 ネットワークスループットが上がる
チューニング
チューニングは仕事が実行される場所から最も近い場所で行ったときが一番効率が良い
また、低レイヤで色々するよりも、まずはアプリケーションなどの高レイヤで改善を行ったほうが効率が良い
例)
アプリケーション ー 実行されるデータベースクエリなど
データべース ー テーブルのレイアウト、インデックス、バッファなど
システムコール ー メモリマップファイル、読み書きなど
ファイルシステム ー レコードサイズ、キャッシュサイズ、その他チューニング可能なパラメータなど
ストレージ ー RAIDレベル、ディスクの数やタイプ、その他チューニング可能なパラメータなど
上記の場合、まずは上から対応していくことが望ましい
※下手なクエリを打っていたのでは、いくらDBやストレージレイヤで頑張っても大してパフォーマンスはよくならない
また、パフォーマンスはアプリケーションなどの上位レイヤ改善でよくなることが多いが、
観察対象は必ずしもアプリケーションが最善ではない
クエリが遅いことは、アプリ側でなくともCPUやファイルシステムが使った時間やクエリが実行したディスクのIOデータでわかる場合が多いので
以上。