メイン・メモリーが不足すると,CPUの処理性能やI/Oデバイスの帯域幅に悪い影響を与え,サーバー全体のパフォーマンスを劣化させてしまう。本来必要な量のメモリーを搭載していない場合には,頻繁にスワッピングが発生することになる。
スワップ領域はハード・ディスク装置上に配置されているため,メモリーと比べて圧倒的にアクセス・スピードが遅くなり,スワップ領域を使い始めるとパフォーマンスが大幅にダウンする。こうしたパフォーマンス低下が起きないよう,使用するOSやアプリケーションにマッチした,適切なメモリー容量を見極める必要がある。
図1はスワップ回数と性能の関係を表した概念図である。ある一定レベルまでは,メモリー容量の増加に比例してパフォーマンスが向上していく。そして,その一定レベル(スワップが安定した状態)を超えると,メモリー容量を増やしてもパフォーマンスが向上しにくくなる。そのポイントを見極めることによって,搭載するべきメモリー容量を把握できる。
図1●スワップ回数と性能の関係 |
メモリーの負荷状況を調べる
メモリーの負荷状況を調べるには,以下のようにすればよい。
(1)/proc/meminfo
メモリーとスワップに関する詳細情報を参照できるファイルである(図2)。後述するvmstatやfreeなどのコマンドはこのファイルから情報を取得して表示している。
|
図2●/proc/meminfoファイルの内容 |
(2)vmstat
仮想メモリーの統計情報を取得するためのコマンド。メモリーとスワップの状況は次に示した個所を見るとよい。
●memory
swpd:使用している仮想メモリーの総量(Kバイト)
free:空きメモリーの総量(Kバイト)
buff:バッファとして使用しているメモリーの総量(Kバイト)
cache:キャッシュとして使用しているメモリーの総量(Kバイト)
●swap
si:ディスクからスワップインされているメモリーの総量(Kバイト/秒)
so:ディスクにスワップアウトしているメモリーの総量(Kバイト/秒)
ここで表示されるbuffとcacheは,それぞれバッファ・キャッシュとページ・キャッシュのことを指している。共にファイル・アクセスを高速化するために使用される。なお,バッファ・キャッシュはブロック・デバイスのキャッシュであり,デバイスとブロック番号を用いてブロック単位でデータを扱う。一方,ページ・キャッシュはファイルのキャッシュであり,iノード番号とファイル・オフセットを用いてページ単位でデータを扱う。
(3)free
vmstatと同様に,メモリーの使用状況を表示するコマンドである(図3)。前述の通り,/proc/meminfoファイルの情報を見やすく整形して表示したものである。
|
図3●freeの実行結果 mはMバイト単位で表示するオプション。tは物理メモリーとスワップの合計を示す行も表示するためのオプション。 |