Linux共通

【Linux初心者向け】Linuxメモリを確認できるコマンドと方法を解説!

今回はLinuxメモリの確認方法について解説していきたいと思います。

みなさんメモリを気にするのはどんな時でしょうか?

どんな時にメモリを調べる?

・パソコンの動作が遅くなり、原因追及のため不要なプロセスが動いていないかメモリの使用量をチェックするとき

・ソフトウェアを使用するとき、どのくらい容量を使用しているかチェックするとき

などなどあります、普段気にすることなく、かってに使用するソフトに応じてメモリが使用されますが、悪意のあるソフト(ウイルス)などが紛れている場合もあり、メモリを大量消費することががるので、知識として持っておくと原因切り分けに便利です。

例えばゲームや動画などをするときにメモリが足りないとかくついたりすることがありますが、メモリを増やせば解消されたりなど身近に事例が多々あります。

今回はLinuxにおけるメモリの確認方法について紹介しますが、Linuxで商用を取り扱っているとメモリの使用量など記録されているため、ある日突然使用量が上がったりすると変なプロセスが動いているといったことに気づけます。

 

この記事でわかること?

・メモリの確認方法である各種コマンドの概要

・オプションを含む豊富な実行例

それでは解説していきます。

メモリとは

まずメモリについて紹介していきます。

プログラムやデータを一時的に保存する場所・領域です。新たに開いたファイルや動画、ブラウザの情報はメモリに一時的に保存されます。そして開いた物を消すとメモリから削除されます。

この領域が足りなければプログラムやファイルなどが実行できません。そのため実行できない場合はメモリ不足なのか・メモリを増やせば実行できるかなど原因の切り分けが必要です。

足りない時の対処法

メモリを増やす

物理メモリの総量を増やすこと。

不要なメモリの解放

ソフトやブラウザを使い終わったのに上げっぱなしにしている場合に起こります。

よくある例としてブラウザで複数のタブを開いている場合だとメモリの消費量がかなり上がります。そのため使い終わったタブは都度消していくと、メモリを節約できます。

仮想メモリを増やす

仮想メモリとは、ハードディスクやSSDの容量の一部分をメモリとして扱うことができる技術です。Linuxでは、メモリが使用できなくなると、Swap領域が使用されます。これが仮想メモリのことです。

クラウドマシンを利用

AWSやAzureのクラウドサービスを利用することです。利用したい分だけ割り振られるサービスがあるので、それを利用することによりストレスなくメモリ問題は解消できると思います。

ただ使った分だけ料金が増えるので、料金体系等サービスをを理解したうえで利用してください。

Linuxにおけるメモリ確認方法

それではコマンドとファイルについて紹介していきます。

 

freeコマンド

「free」は使用しているメモリの空き容量や使用量を確認するためのコマンドです。

書式

#free [オプション]

オプション

freeコマンドのオプションは多数存在します。

オプション 説明
-b (--bytes)  メモリの容量をバイト単位で表示します
-k(--kibi) メモリの容量をキビバイト単位で表示します。デフォルトで出力される単位。
-m (--mebi)  メモリの容量をメビバイト単位で表示します
-g(--gibi) メモリの容量をギビ

バイト単位で表示します

--tebi メモリの容量をテビバイトで表示します
--pebi メモリの容量をぺビバイトで表示します
-s(--seconds) 指定した秒間隔で表示を続けます
-t(--total) 物理メモリとスワップメモリの合計も表示します
-h(--human)  読みやすい単位で表示する
--kilo メモリの容量をキロバイトで表示します

※単位を換算する際に1024ではなく1000で割って計算する

 

--mega メモリの容量をメガバイトで表示します
--giga メモリの容量をギガバイトで表示します
--tera メモリの容量をテラバイトで表示します
--peta メモリの容量をペタバイトで表示します
--si わかりやすい単位で表示します。
-l --lohi LowメモリとHighメモリの状況も表示する
-c  回数(--count) 回数 再出力する回数を指定する(デフォルトは1回出力して終了する)
-t,--total メモリの統計情報を表示します
-V (--version)  バージョン情報を表示します

実行例

freeの実行例を紹介していきます。

free

それぞれの項目の意味は以下の通りです。

項目 意味
total マシンに搭載されたメモリ量
used OSやアプリケーションに割り当て済みの消費量
buff/cache カーネルバッファ、ページキャッシュ、スラブキャッシュの消費量
-buff カーネルバッファ(メモリ上のデータをデバイスに送受信する領域)
-cache ページキャッシュやスラブキャッシュ(高速化のためのキャッシュ)
free まだ全く利用されていないメモリ量
shared 共有メモリの消費量
available 実質すぐに割り当てられるメモリ量(free + buff/chacheのうち解放可能な領域)

-b (--bytes)

メモリの容量をバイト単位で表示します。

-k(--kibi)

メモリの容量をキビバイト単位で表示します。

-m (--mebi)

メモリの容量をメビバイト単位で表示します。

-g(--gibi)

メモリの容量をギビバイト単位で表示します。

-s(--seconds)

指定した秒間隔、表示を続けます。

-t(--total)

物理メモリとスワップメモリの合計も表示します。

-h(--human)

読みやすい単位で表示します。

--kilo

メモリの容量をキロバイトで表示します。

--mega

メモリの容量をメガバイトで表示します。

--giga

メモリの容量をギガバイトで表示します。

--tera

メモリの容量をテラバイトで表示します。

--peta

メモリの容量をペタバイトで表示します。

--si

わかりやすい単位(g)で表示します。

-l (--lohi)

LowメモリとHighメモリの状況を表示します。

-c  回数(--count)

再出力する回数を指定します。

-V (--version)

バージョン情報を表示します

vmstat

「vmstat」は仮想メモリやCPU、ディスクI/Oの統計情報を表示するコマンドです。

書式

$ vmstat [オプション][更新の間隔[回数]]

オプション

オプション 説明
-a(--active) アクティブ / 非アクティブの量を表示します。
-f(--forks) ブート後のフォーク数(プロセスの作成回数)を表示します。
-m(--slabs) スラブ情報を表示します。
-n(--one-header) デフォルトでは、繰り返し表示の際に定期的にヘッダが表示されますが、このオプションを使用すると一度だけ表示されます。
-s(--stats) 1項目1行でメモリの統計情報とイベントカウンタを表示します。
-d(--disk) ディスクの統計情報が表示されます。
-D(--disk-sum) ディスクの統計情報を1項目1行で表示します。
-p パーティション(--partition パーティション) 指定したパーティションの統計情報を表示します。
-S (--unit) の中から指定された単位で表示します。
-t(--timestamp) タイムスタンプを表示します。
-w(--wide ワイドモードで表示します。

実行例

それではvmstatの実行例を紹介していきます。

vmstat

仮想メモリやCPU、ディスクI/Oの統計情報をまとめて表示しております。

各項目については下記まとめましたので、ご参考いただければと思います。

項目 説明
procs(プロセスの状態)
r 実行待ちプロセス数
b スリープ(割り込み可能)のプロセス数
memory(メモリの使用状況)
swpd スワップサイズ(KB)
free 空きメモリ(KB)
buff バッファメモリサイズ(KB)
cache キャッシュメモリサイズ(KB)
swap(スワッピングの状況)
si ディスクからスワップインされているメモリサイズ(KB/秒)
so ディスクへスワップアウトされているメモリサイズ(KB/秒)
io(ブロックI/Oの状況)
bi ブロックデバイスから受け取ったブロック数(ブロック/秒)
bo ブロックデバイスに送られたブロック数(ブロック/秒)
system(割り込みやコンテキストスイッチの回数)
in 割り込み回数/秒
cs コンテキストスイッチ回数/秒
CPUの使用状況(ユーザモード、カーネルモード等の使用割合)
us ユーザプロセスのCPU使用時間割合
sy カーネルの時間割合
id CPUがアイドル状態の時間割合
wa CPUがI/O待ちの時間割合
st ゲストOSがCPUを割り当てられなかった時間の割合

続いてオプションの実行例についても紹介していきます。

-a(--active)

アクティブ / 非アクティブの量を表示します。

-f(--forks)

ブート後のフォーク数(プロセスの作成回数)を表示します。

-m(--slabs)

※管理者権限で実施

スラブ情報を表示します。

-n(--one-header)

繰り返し表示の際に定期的にヘッダが表示されますが、このオプションを使用すると一度だけ表示されます。

-s(--stats)

1項目1行でメモリの統計情報とイベントカウンタを表示します。

-d(--disk)

ディスクの統計情報を表示します。

-D(--disk-sum)

ディスクの統計情報を1項目1行で表示します。

-p パーティション(--partition パーティション)

指定したパーティションの統計情報を表示します。

-S(--unit)

k(1000)、K(1024)、m(1,000,000)、M(1,048,576)の中から指定された単位で表示します。

-t(--timestamp)

タイムスタンプを表示します。

-w(--wide)

ワイドモードで表示します。

・-V(--version)

バージョンを表示します。

top

topコマンドは、稼働中のシステムをリアルタイムかつ簡潔に監視することができるコマンドです。topコマンドは、ただ単にタスクの一覧を一覧表示するだけでなく、CPU利用率やメモリ利用率、優先度、タスクの状態(実行中、停止中、ゾンビ状態など)、プロセスの実行時間なども表示されます。

top コマンドは CPUやメモリなどシステムの利用状態把握、および各プロセスごとどの程度リソースが利用されているかを確認するために利用されます。

topコマンドは非常に奥深く、

オプションやtopコマンドの表示項目については説明いたしますが、

今回はメモリ確認で利用するオプションの実行例を紹介させていただきます。

書式

$top [オプション]

オプション

項目 説明
-d 間隔 更新する間隔を「ss.tt秒」で指定する
-n 回数  表示を繰り返す回数を指定する
-b バッチモード。
-s セキュアモード。
-U 監視するユーザーを名前またはIDで指定
-p  プロセスID 監視するプロセスIDを指定。
-c COMMAND欄(右端)を、プログラム名の表示とコマンドラインの表示のどちらにするか切り替える(起動後は「c」で切り替え)
-i 何も実行していないアイドルプロセスを表示するか、しないかを切り替える(起動後は「i」で切り替え)
-S 累積時間モード(起動後は「S」で切り替え)
-o 項目 出力の並べ替えに使用する項目(デフォルトはCPU使用率)を指定。指定できる項目名は「top -O」で確認 ※
-w桁数   出力の幅

・実行例

topコマンドのメモリに関する実行例について紹介していきます。

top

topコマンドの実行例です。各項目については下記表でまとめておりますのでご参考いただければと思います。

%MEMでCOMMANDのメモリ利用率を表しています。

各項目の意味

項目 説明
top 時刻が表示されています。
up OSが起動してからの起動時間
users ログインユーザ数
load average 「ディスクIO待ちののプロセス数」を示しています。

左から順に [ 1 分平均], [ 5 分平均], [ 15 分平均] の数値です。

Tasks プロセス数
running 実行中のプロセス
sleeping スリープ中のプロセス
stopped 実行を停止されたプロセス数
zombie 正常終了されなかったプロセス
Cpu
us ユーザプロセスの使用時間の割合
sy システム(カーネル)プロセスの使用時間の割合
ni 実行優先度を変更したプロセス使用時間の割合
id アイドル(待機)状態の使用時間の割合
wa CPUがディスクI/Oの終了待ちをしていた時間の割合
hi ハードウェア割り込み要求での使用時間の割合
si ソフトウェア割り込み要求での使用時間の割合
st OS仮想化利用時に他のCPUの計算に待たされた割合
Mib Mem
total 物理メモリのメモリ総量
 free 空きメモリ
used 割り当て済みのメモリ量
buff/cache バッファやキャッシュに割り当て中のメモリ量
Mib Swap
total  SWAP領域のメモリ総量
free 空きメモリ
used 割り当て済み
avail Mem 使用可能、実質的な利用可能メモリ
PID プロセス名
USER ユーザ
PR Priority値
NI nice値
VIRT 割り当て済みの仮想メモリ
RES 物理メモリのうち、実際に消費されているメモリ容量。
SHR 共有メモリとして消費されているメモリ容量
S S:Process State code

R 稼働中
S スリープ中
D スリープ中(現在制御不可)
T 停止中
Z ゾンビ状態

%CPU CPUで処理を行った総時間のうち、そのプロセスが処理を行った時間の割合。
%MEM 物理メモリの容量に対する。
TIME+ プロセス起動してから、CPUにより処理された総時間。
COMMAND 実行プロセス名
shit + m プロセスの一覧をメモリの使用率が高い順に並べ替えます。
shit + T プロセスの一覧を稼働時間が長い順に並べ替えます。

shit + m

shift + e

プロセスの一覧をメモリの使用率が高い順に並べ替えます。

ps

実行中のプロセスを一覧表示するコマンドです。各プロセスでどのくらいのメモリ消費量などを調べるために利用します。

今回はメモリ箇所に関するオプションと実行例を紹介していきます。

オプション

メモリに関する確認に役立つオプションを抜粋しました。下記となります。

オプション 説明
オプション f プロセスを階層で表示します。
 u CPUやメモリの使用率なども表示します。

実行例

それでは紹介していきます。

f

linux-command-ps f

プロセスを階層で表示します。後述するuオプションと併用すると見やすいです。

u

linux-command-ps u

CPUやメモリの使用率なども表示します。

-fu

linux-command-ps -fu

CPUやメモリ利用料、プロセスの階層表示してくれて、見やすくてお勧めです。

ファイルでの確認方法

ファイルでのメモリに関する情報の確認は下記ファイルでできます。

/proc/meminfo

メモリがどのように消費されているかなど詳しく記載があります。

まとめ

今回のまとめは以下となります。

“まとめ!”

・OSやプログラムを動かすには必要不可欠な存在

・原因切り分けの際に主に確認

・Linuxではコマンドとファイルなどの確認方法がある

・topコマンドが簡潔にいろんな情報がでているため便利

・必要に応じて各コマンドやファイルを閲覧する

 

以上となります。コマンドやオプションが多々ありますが、見やすいコマンドを使っていただければと思います。

本ブログでは他のLinuxについての情報発信もしているので興味があればご覧ください。

  • この記事を書いた人
  • 最新記事

ミツ

サーバ初心者向け「server-beginner」を運営する「ミツ」と申します。 Linux系やwindows系などのサーバに関する部分をメインで執筆していきますので、興味ある方はぜひご覧いただけますと幸いです。 <経歴> 専門学校卒業後、ネットワーク、インフラ、プログラミングを一通り経験。 当メディアでは主にLinux分野に関する内容を発信していきます。

-Linux共通