マシンがボロいということはハードウエアを増強すればプログラムをいじらなくても性能向上するわけです。どこがボトルネックかを把握せずに闇雲にハードウエアを増強しても高いコストパフォーマンス得られません。今回はハードウエアのボトルネックの追求方法を考えます。ネットワークを使用する場合はネットワークがボトルネックとなることがありますが今回は考えません。全体像を把握するためにPCの構成を書いてみます。PCではCPU,メモリ,ハードディスクの3箇所がボトルネックの容疑者となります。I/Oを監視するボトルネックを判断する最初のツールはtopコマンドです。topコマンドの読み方を説明します。kswapdまずはシステム全体の構成について読み取ります。CPUがcpu00,cpu01なので2CPUのマシンです。freeなので実メモリが4Gで空きメモリが1.7G弱です。freeなのでスワップは500Mでほとんど使用していません。CPUがボトルネックとなった場合を見てみます。testCPUがボトルネックの場合は簡単です。CPUのuserまたはsystemが100%近くに張り付いている場合です。対処としてはCPUの増強やアルゴリズムの変更が一般的です。入力すればCPU利用率順にソートされるので先頭付近にいるプロセスを対象に改善策を考えてください。次にメモリがボトルネックとなった場合を見てみます。testメモリがボトルネックの場合はディスクがボトルネックの場合とよく似た出力になることがあります。シングといってスワップイン,スワップアウトにCPUとディスクIOを占有されて他の処理をできなくなる現象が発生するからです。判断のポイントは,メモリのfreeのサイズとプロセスの所要メモリです。vmstatコマンドを使用してスワップイン,スワップアウトの回数を計測するのもいいでしょう。対処としてはメモリの増設やプログラムのメモリ使用量を削減するのが一般的です。入力すればメモリ所要量順にソートされます。最後にディスクがボトルネックとなった場合を見てみます。testディスクがボトルネックの場合はiowaitの値が大きくなっています。前述したようにメモリがボトルネックの可能性もあるので,空きメモリの確認を同時に行います。対処としてはiostatコマンドなどを使用して使用ディスクを割り出し,ディスク自体を高性能なものに交換する。アクセスするディスクを分散させるといった手段が一般的です。ディスク障害の場合はディスクに何回も読み込みや書き込みを行うため,突如ディスクがボトルネックとなる場合があります。いままでは問題なかったのに突然ディスクがボトルネックとなった場合はディスクの障害を疑う必要もあります。量が多くなったので今週はここまでです。来週はvmstat,iostatの使用法を解説します。|2005年06月20日デスマーチ哀話みなさんはデスマーチと聞いて何を想像しますか?IT業界の人であれば身をもって知っているでしょうが,学生さんやカタギの人は雑誌や噂で聞いたことがある程度でしょう。一日の平均残業時間が2時間以下です。一日は余暇にあふれています。今日は何をしようかなって感じでしょうか。