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

Published: 2016年2月7日 by tomsato

◼︎ 概要

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

◼︎ 前提知識

サーバ全体のメモリ取得方法(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

◼︎ 参考

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

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧