MIRACLE

メールサービス申込 ユーザー登録&ログイン パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

テクノロジー情報


Linux技術トレーニング 基本管理コース II

第5章 パフォーマンス管理

4.メモリ使用率
4-1./usr/bin/free
  • システムの空きメモリと使用メモリの量を表示する

freeコマンド

freeはシステムの物理メモリとスワップメモリそれぞれに対して使用量と空き容量を表示しカーネルが用いているバッファも表示します。

使用方法

$ /usr/bin/free [オプション]

主なオプションとしては、以下のものがあります。

  • -b:メモリの量をバイト単位で表示します。 -kではキロバイト単位(デフォルト) で表示し、-mではメガバイト単位で表示します。
  • -t:物理メモリ、スワップメモリの合計を示す行も表示します。
  • -o:「バッファの分を増減した行」を表示しません。このオプションを指定しない限り使用中のメモリからバッファメモリを引いた値と未使用のメモリにバッファメモリを足した値を表示します。
  • -s:繰り返し実行をする間隔(秒)を指定することでその間隔での繰り返し実行ができます。例えば2秒ごとに繰り返し実行するには free -s 2 となります。間隔は秒未満の短い時間も指定できます。

/usr/bin/freeの表示項目は、以下の通りとなります。

項目 説明
Mem ページキャッシュとバッファキャッシュを考慮しないメモリサイズ
 total OSが認識している物理的なメモリサイズ。RAIDカードやNICなどを装着しているときは、それらのためにメモリが使われるので実際の搭載メモリサイズよりも少なくなります。
 used 使用しているメモリサイズ。これにはバッファキャッシュやページキャッシュなどOSがディスクキャッシュのために使用しているメモリも含まれます。
 free 空きメモリサイズ。この値にはバッファキャッシュとページキャッシュが含まれていません。一般にLinuxは使い続けるほど、メモリをキャッシュに割り当てます。そのため使い続けるほどfreeの値はゼロに近づきます。この値が少ないからといって空きメモリがないわけではないことに注意してください。
 shared 共有メモリに割り当てられたメモリ。
 buffers バッファキャッシュに割り当てたメモリ。バッファキャッシュはブロックデバイス用のキャッシュです。
 cached ページキャッシュに割り当てたメモリ。ページキャッシュはファイルに対するキャッシュです。
-/+buffers/cache ページキャッシュとバッファキャッシュを考慮したメモリサイズ
 used 1行目のusedからページキャッシュとバッファキャッシュを引いた値。OSとアプリケーションが純粋に使用しているメモリサイズを表します。
 free 1行目のfreeにページキャッシュとバッファキャッシュを足した値。キャッシュに割り当てられているメモリを自由に割り当て可能なメモリと考えれば、この値が空きメモリサイズになります。
Swap スワップに割り当てたサイズ。
 total スワップに割り当てたディスクサイズ。
 used 割り当てた中で使用中のサイズ。
 free 割り当てた中で使用していないサイズ。

コマンド実行例

[root@localhost ~]# free
          total       used       free     shared    buffers     cached
Mem:        715204     443348     271856          0      39952     291532
-/+ buffers/cache:     111864     603340
Swap:       883564          0     883564

4-2./usr/bin/vmstat
  • 仮想メモリの統計をレポートする

/usr/bin/vmstatコマンド

プロセスの状態、メモリの使用状況、ページングの回数、I/Oの回数、CPUの使用率など幅広い情報を取得できます。そのためデータベース等のアプリケーションのチューニングに便利です。

使用方法

$ /usr/bin/vmstat [-n] [間隔[回数]]

オプションの意味は、以下の通りです。

  • -n:ヘッダーの表示が一度だけになります。

間隔(秒)とその間隔で繰り返し実行します。回数を指定しているとその回数分実行します。

/usr/bin/vmstatの表示項目は、以下の通りとなります。

1行目 2行目 説明
procs r CPUを割り当て中もしくは割り当て可能なプロセスの数。CPUの個数以下であることが望ましい。
b 割り込みを禁止しているプロセスの数。I/O待ちなどで割り込み不可能なときに発生。ゼロであることが望ましい。
memory swpd 使用している仮想メモリの量(KB)
free 空きメモリの量(KB)
buff バッファキャッシュに使用されているメモリ量(KB)
cache ページキャッシュに使用されているメモリ量(KB)
swap si ディスクからページインされるメモリの量(KB/秒)
so ディスクにページアウトしているメモリの量(KB/秒)
io bi ブロックデバイスから受け取ったブロック数(blocks/秒)
bo ブロックデバイスに送られたブロック数(blocks/秒)
system in 1秒あたりの割り込み回数。クロック割り込みも含む。
cs 1秒あたりのコンテキストスイッチの回数
cpu us ユーザー時間
sy システム時間
id アイドル時間。I/O待ちは含まない。
wa I/O待ち時間

コマンド実行例

[root@localhost ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 0  0      0 270752  41080 291576    0    0    13     8 1055   165  1  5 92  2
 0  0      0 270736  41080 291576    0    0     0     0 1012   148  3  3 94  0
 0  0      0 270736  41088 291576    0    0     0    40  954   144  4  2 81 12

4-3.考察
(1)考察:必要メモリ量
統計項目のfreeとcacheに注意
  • freeは「空きメモリ」の意味だが、cacheに割り当てられることで時間とともに減少する。したがってfreeの値のみでメモリ不足を判断することはできない。
  • スワップの状況やアプリケーション側(例 オラクルデータベース)の統計も勘案し総合的に判断する必要がある。

freeとcacheの違い

/usr/bin/freeコマンドや/usr/bin/vmstatコマンドの統計項目にfreeとcacheがありますが、この項目の意味は注意が必要です。freeとは「空きメモリ」の意味ですが、キャッシュに割り当てられることで減っていきます。したがってfreeが小さいからといってメモリが不十分であるということにはなりません。/usr/bin/vmstatのso項目やアプリケーション側(例データベース)のヒット率等で総合的に判断する必要があります。

空きメモリ容量の推移(グラフ)

(2)考察:スワップ状況
  • スワップの状況は一般にアプリケーション側からは判断できない

アプリケーション側からはスワップの状況はわからない

例えば、オラクルデータベースでは、オラクルデータベースの機能として、各種のパフォーマンスの統計をとっています。それに基づきオラクルデータベースが使用するメモリの大きさをチューニングしても、それが実メモリの大きさを超えてスワップが発生した場合、オラクルデータベース側からは判断できません。したがってスワップの状況などはOS側で調査すべき重要な統計項目です。

(注目すべき項目)

  • vmstatのso項目
  • freeコマンドのswap関連項目

(3)考察:プロセスの待機
  • アプリケーション側のパフォーマンス統計でプロセスの待機が見られる場合は、OS側でも検証してみる

アプリケーション側のプロセスの待機をOS側でも検証してみる

例えば、オラクルデータベースでは、オラクルデータベースの機能として、各種のパフォーマンスの統計をとっています。それに基づきオラクルの特定のプロセスが待機していることが判断できるとき、OS側でもその様子を検証することができます。 たとえば、オラクルデータベース側でチェックポイントの完了をログスイッチが待機するという代表的なケースがあります。この場合、オラクル側のシステム統計で、「log file switch (checkpoint incomplte)」という待機統計が上位に待機項目の中で上位に位置づけられます。このようにアプリケーへション側でプロセスが待機していることをOS側でも裏付けるために、Linuxのコマンドを使うことは有効です。

(注目すべき項目)

  • vmstatのprocsの「b」
    割り込みを禁止しているプロセスの数を意味します。I/O待ちなどで割り込み不可能なときに発生します。この値は、ゼロであることが望ましく、この項目がゼロより大きな値で推移するとき、プロセスの待機があると判断できます。

次にこれら、パフォーマンスに関して注目すべき項目の簡単なフローについてご紹介します。

  1. システム全体の調査

    1. CPUのアイドル状況をチェック
    2. スワップアウトをチェック

  2. CPU使用率の調査

    1. システムCPUの使用率のチェック
    2. 実行待ちプロセスのチェック
    3. デバイスの過度な割り込みチェック

  3. ディスク使用率の調査

    1. ディスク使用率が過度に高いデバイスのチェック
    2. 書き込み要求の比率のチェック

第5章 3へ 第5章 5へ

■この資料の評価をお願いします。
とても参考になった
参考になった
どちらでもない
あまり参考にならなかった
まったく参考にならなかった

コメントがある場合は以下に記述してください。技術資料として取り上げてほしいテーマも受け付けています。

以下は任意です。

お名前(フルネーム) :
会社名 :
メールアドレス :
 

会社情報 採用情報 個人情報保護方針 情報セキュリティ基本方針 商標等取り扱い事項 English
Copyright(c)2000-2015 MIRACLE LINUX CORPORATION. All Rights Reserved.