利用可能なメモリ量を調べる

◼︎ 目次

  1. 概要
  2. 前提知識
  3. 利用可能なメモリ量を計算する
  4. 参考

◼︎ 概要

サーバでまだメモリに余裕があるのか調べる
ページキャッシュというものがあってメモリが不足しているように見えるのでそのあたりを考慮させる

◼︎ 前提知識

サーバ全体のメモリ取得方法(free)、プロセス毎のメモリ取得方法、キャッシュの用語について予習しておく

freeコマンドについて

そのサーバのメモリの使用状況を表示する

$ free
             total       used       free     shared    buffers     cached
Mem:       1019452     967356      52096      32700      41804     353344
-/+ buffers/cache:     572208     447244
Swap:      2097148      17616    2079532

freeコマンドを叩いたときのMem行のfreeの値は「空きメモリ量」ではなく何の用途にも使っていない物理メモリ量」なので後述するページキャッシュの値は考慮していない

psについて

psコマンドで現在動いているプロセスについての詳細を知る方法

$ ps aux | less
RSSと表示されているのがメモリーの使用量(単位はk)

RSSとはResident Set Size の略
常駐セット (Resident set) は、「物理メモリーに常駐するページ」のことを指すそうで、
つまりメモリーの使用量とみなしてよい 

「ps aux」についての参考
http://www.itmedia.co.jp/help/tips/linux/l0158.html

ページキャッシュについて

ページキャッシュとはI/Oデータをキャッシュする機能のこと

読み込んだファイルをメモリにキャッシュさせておくことで次回読み込むときにそのキャッシュがあればディスクまで読みに行かなくて済むので高速で負荷も低くなる

◼︎ 利用可能なメモリ量を計算する

実際は使えるメモリがキャッシュという機能があるためfreeとかを使うと利用可能なメモリが少ないように見えてしまう
極力キャッシュについて考慮させて、利用可能なメモリ量について調べるようにする

vmstat -aのActiveとInactiveを使う
Activeはページキャッシュや無名ページのうち最近利用したり、まだストレージとの同期が取れていない

捨てられないページInactiveは、同じくページキャッシュや無名ページのうち最後にアクセスされてからある程度時間がたちストレージとの同期も完了していてすぐに捨てられるページ

(実際に利用可能なメモリ量)≒(MemFree+Inactive)

// 無理矢理求めてみる
$ echo '利用可能なメモリ量';TMP1=`free | grep 'Mem:' | awk '{print $4}'`;TMP2=`vmstat -a | tail -n 1 | awk '{print $5}'`;TMP3=`expr $TMP1 + $TMP2`;echo $TMP3;echo `expr $TMP3 / 1000`M

利用可能なメモリ量
1125732

◼︎ 参考

今回の記事を作成するにあたって参考にしたページ


Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です