◼︎ 概要
サーバでまだメモリに余裕があるのか調べる
ページキャッシュというものがあってメモリが不足しているように見えるのでそのあたりを考慮させる
◼︎ 前提知識
サーバ全体のメモリ取得方法(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
◼︎ 参考
今回の記事を作成するにあたって参考にしたページ
- http://www.atmarkit.co.jp/ait/articles/0810/01/news134_2.html{.external-link}
- http://www.atmarkit.co.jp/ait/articles/0812/16/news121.html{.external-link}
コメントを書く
コメント一覧