メモリーチューニング(AIX)

・現在の状態を確認

# vmstat -v
    524288 memory pages          ←実メモリページ数
   494223 lruable pages
      4115 free pages
         2 memory pools
    176832 pinned pages           ←ページアウトされない使用メモリ
      80.0 maxpin percentage
      20.0 minperm percentage     ←ファイルキャッシュの最低保持割合
      80.0 maxperm percentage     ←ファイルキャッシュの最大保持割合
      15.5 numperm percentage     ←実メモリに対するファイルキャッシュの占める割合
     76722 file pages             ←ファイルキャッシュのページ数
       0.0 compressed percentage
         0 compressed pages
      16.4 numclient percentage   ←現在のバッファキャッシュの実メモリに対する割合
      80.0 maxclient percentage   ←バッファキャッシュの最大保持割合
     81069 client pages           ←現在のバッファキャッシュのページ数
         0 remote pageouts scheduled
      9203 pending disk I/Os blocked with no pbuf
      8718 paging space I/Os blocked with no psbuf
      2740 filesystem I/Os blocked with no fsbuf
        30 client filesystem I/Os blocked with no fsbuf
         0 external pager filesystem I/Os blocked with no fsbuf

・メモリ関連のパラメータ確認

# vmo -a

・ファイルキャッシュを減らす
 明らかに、大量のファイルが何度も読み取られるがない場合 有効
 maxperm の値を減らす。
  ( maxperm > numpermの場合、ファイルキャッシュを取りにいこうとする。実メモリから移動できない実行中のメモリが大きいほど、使われてないメモリがスワップされてしまう)

# vmo -o maxperm=60 [-p]

 strict_maxperm を 1 にすると maxperm がファイルキャッシュのハード制限になる

# vmo -o strict_maxperm=1 [-p]

・バッファキャッシュを減らす
 大量ファイル読み取りによってメモリを逼迫している場合に有効
 当然、ディスクI/Oパフォーマンスは落ちる
 maxclient の値を減らす

# vmo -o maxclient=30 [-p]

・空きメモリ確保
 大きく空けるとプロセス生成時にページアウトしにくくなる。
 前もってページアウトして局所的に遅くなるのを防ぐ
 minfree ページアウト開始トリガー
 maxfree ページアウト終了

# vmo -o minfree=1000 [-p]

・プロセスごとの使用メモリ量取得

# svmon -P