【Ubuntu初心者向け】これで迷わない!メモリ確認方法のすべてを徹底解説
Ubuntuを使っている皆さん、こんにちは!パソコンの動作がなんだか遅いな、特定のアプリケーションが頻繁に固まるな、と感じたことはありませんか?そんな時、原因の一つとしてよく挙げられるのが「メモリ不足」です。メモリはパソコンの快適さに直結する非常に重要な部品ですが、「どうやって確認すればいいの?」「表示されている数字の意味が分からない…」という方も多いのではないでしょうか。
この記事は、まさにそんなUbuntu初心者の皆さんに向けて書かれています。コマンドを使った方法から、直感的に分かりやすいGUIツールを使った方法まで、Ubuntuでメモリの状態を確認する様々な方法を、それぞれのコマンドやツールの出力の意味を丁寧に解説しながらご紹介します。
この記事を最後まで読めば、
- なぜメモリ確認が必要なのか
- コマンドラインでメモリ情報を取得する方法とその見方
- GUIツールで視覚的にメモリ状況を把握する方法
- 取得した情報から何がわかるのか、メモリ不足の兆候と対処法
といった、Ubuntuにおけるメモリ管理の基礎をしっかりと理解できるようになるでしょう。さあ、あなたのUbuntuのメモリの状態を一緒に覗いてみましょう!
1. なぜメモリ確認は重要なのか?
まず、なぜメモリの状態を確認することが大切なのか、その理由を簡単に説明します。
パソコンの動作が遅くなる原因は様々ですが、メモリ不足はその中でも特に多い原因の一つです。CPUが計算を行う際、処理に必要なデータは一時的にメモリに置かれます。メモリの容量が十分にあれば、CPUは必要なデータに素早くアクセスでき、効率よく作業を進めることができます。しかし、メモリの容量が不足したり、メモリの使用率が非常に高くなったりすると、CPUはデータをメモリから読み書きするのに時間がかかったり、後述する「スワップ」と呼ばれる処理が発生したりして、全体的な動作が遅くなってしまいます。
さらに、メモリはシステム全体の安定性にも関わっています。メモリが枯渇すると、アプリケーションが予期せず終了したり、システム自体がフリーズしたりする可能性も高まります。
メモリの状態を定期的に確認することで、以下のようなメリットがあります。
- パフォーマンスの問題特定: 動作が遅い原因がメモリ不足にあるのかどうかを判断できます。
- リソース管理: どのアプリケーションがどれだけメモリを使っているかを把握し、リソースを効率的に使うためのヒントを得られます。
- 将来のアップグレード計画: 現在のメモリ容量が不足している場合、将来的にメモリ増設を検討する判断材料になります。
- 異常の早期発見: メモリリーク(アプリケーションが使ったメモリを解放しないことで、徐々にメモリを消費し続ける現象)などの問題を早期に発見できることがあります。
このように、メモリの状態を把握することは、Ubuntuシステムを快適かつ安定して使い続けるために非常に重要です。
2. メモリとは何か?基本的な理解
メモリ確認方法を学ぶ前に、そもそも「メモリ」とは何で、どんな役割をしているのか、基本的な部分を理解しておきましょう。
パソコンの主要な部品には、CPU(中央演算処理装置)、ストレージ(SSDやHDD)、そしてメモリ(RAM)があります。
- CPU: パソコンの脳みそにあたり、計算や処理を実行します。
- ストレージ: ファイルやプログラムなどのデータを永続的に保存する場所です。電源を切ってもデータは消えません。
- メモリ (RAM – Random Access Memory): CPUが現在実行中のプログラムや、そのプログラムが扱っているデータを一時的に置いておく場所です。ストレージよりもはるかに高速にデータの読み書きができますが、電源を切ると内容はすべて消えてしまいます。
例えるなら、CPUはあなた自身、ストレージは本棚やファイルキャビネット、メモリは机の上や手元に置いている資料、といったイメージです。本棚(ストレージ)に大量の本があっても、今読んでいる本や参考にしたい資料(データ)を手元(メモリ)に置いておかないと、効率よく勉強や仕事(処理)はできませんよね?机(メモリ)が広くてたくさんの資料を置いておければ、本棚に取りに行く回数が減り、スムーズに作業できます。
メモリ容量とパフォーマンス
机の広さ(メモリ容量)が広ければ広いほど、たくさんの資料を手元に置いておけるため、CPUはより多くのデータを高速に扱えます。これにより、複数のアプリケーションを同時に実行したり、メモリを大量に消費するアプリケーション(動画編集ソフト、仮想マシン、多数のタブを開いたWebブラウザなど)を快適に使ったりできるようになります。メモリ容量が不足すると、CPUは頻繁にストレージからデータを読み書きする必要が出てきてしまい、これが動作速度低下の大きな原因となります。
スワップ領域とは?
メモリ容量が足りなくなった場合、Ubuntuを含む多くのOSは「スワップ領域」と呼ばれる機能を利用します。スワップ領域は、ストレージ(SSDやHDD)の一部をあたかもメモリのように使う仕組みです。メモリに入りきらないデータや、しばらく使われていないデータを一時的にスワップ領域に「スワップアウト」し、必要になったら再びメモリに「スワップイン」します。
スワップはメモリ不足を補う便利な機能ですが、ストレージはメモリに比べて圧倒的にデータの読み書き速度が遅いため、スワップが頻繁に発生するとシステムの動作は著しく遅くなります。また、SSDの場合、スワップによる頻繁な書き込みは寿命を縮める可能性もあります。したがって、スワップの発生はメモリ不足の強い兆候と捉えることができます。
3. コマンドラインを使ったメモリ確認方法
Ubuntuでは、ターミナル(端末)を開いてコマンドを入力することで、システムの詳細な情報を取得できます。メモリの情報も、いくつかのコマンドを使って確認できます。まずは、最もよく使われる基本的なコマンドから見ていきましょう。
ターミナルを開くには、アプリケーションメニューから「端末」や「Terminal」と検索して起動するか、キーボードショートカット Ctrl + Alt + T を押します。
3.1. free コマンド – 基本中の基本
free コマンドは、システムの物理メモリとスワップ領域の合計、使用量、空き容量、バッファやキャッシュによる使用量などを表示してくれる、最も手軽で基本的なコマンドです。
ターミナルに free と入力して Enter キーを押してみましょう。
bash
free
実行すると、以下のような出力が表示されます(表示される数値はあなたの環境によって異なります)。
total used free shared buff/cache available
Mem: 8131488 3877452 543540 492664 3710496 3403960
Swap: 2097148 0 2097148
この数値はデフォルトではバイト単位で表示されます。これだと分かりにくいので、よく使われるオプションを付けて実行してみましょう。
-h オプション: 人間が読みやすい形式で表示
free コマンドに -h オプションを付けると、数値をキロバイト(K)、メガバイト(M)、ギガバイト(G)といった単位で表示してくれます。これが最もよく使われる形式です。
bash
free -h
実行結果例:
total used free shared buff/cache available
Mem: 7.8G 3.7G 530M 481M 3.5G 3.3G
Swap: 2.0G 0B 2.0G
どうでしょう?ぐっと分かりやすくなりましたね。それでは、それぞれの項目の意味を詳しく見ていきましょう。
free -h 出力の見方
出力は通常、Mem: と Swap: の2行で構成されます。
-
Mem: (物理メモリ)
total: システムに搭載されている物理メモリの合計容量です。この例では 7.8GByte (ギガバイト) です。OSやその他の要因で表示される容量が搭載容量よりわずかに少ない場合がありますが、これは正常です。used: 現在使用されている物理メモリの合計容量です。free: どのプロセスにも割り当てられておらず、完全に空いている物理メモリの容量です。shared: 複数のプロセス間で共有されているメモリの容量です。buff/cache: バッファやキャッシュとして使用されているメモリの容量です。- バッファ (Buffers): ディスクI/O(読み書き)のために一時的にデータを保持する領域です。
- キャッシュ (Cached): 一度読み込んだファイルの内容などをメモリに一時的に保存しておき、次に同じデータが必要になったときに高速に読み出せるようにする領域です。
- Linuxシステムは、空いているメモリを積極的にバッファやキャッシュとして利用します。これは、ディスクアクセスを減らしてパフォーマンスを向上させるための正常な動作です。
freeの値が小さくても、すぐにメモリ不足というわけではありません。
available: アプリケーションが新しくメモリを要求したときに、すぐに割り当て可能なメモリの容量です。これは、freeのメモリだけでなく、バッファやキャッシュとして使われているメモリのうち、解放してアプリケーションに割り当てられるメモリも含まれた量です。メモリの空き状況を判断する上で、このavailableの値が最も重要です。 この値が大きいほど、まだ余裕があると言えます。
-
Swap: (スワップ領域)
total: 設定されているスワップ領域の合計容量です。この例では 2.0GByte です。used: 現在使用されているスワップ領域の容量です。この例では 0B (バイト) なので、スワップは全く使われていません。free: 空いているスワップ領域の容量です。
重要なポイント: free vs available
多くの初心者が混同しやすいのが、free と available の違いです。「空きメモリ」と聞くと free の値を見る人がいますが、Linuxシステムではバッファやキャッシュを積極的に利用するため、free の値は小さくなる傾向があります。システムは、必要に応じて buff/cache を解放してアプリケーションに割り当てます。そのため、本当にアプリケーションが利用できる空きメモリの目安は available の値となります。
free コマンドのその他のオプション
-b,-k,-m,-g: バイト、キロバイト、メガバイト、ギガバイト単位で表示します。-hがこれらの単位を自動的に判断してくれます。-
-t: 物理メモリとスワップ領域の合計行を追加表示します。bash
free -httotal used free shared buff/cache available
Mem: 7.8G 3.7G 530M 481M 3.5G 3.3G
Swap: 2.0G 0B 2.0G
Total: 9.8G 3.7G 2.6GTotal行のfreeは、物理メモリのfreeとスワップのfreeの合計です。
*-s <秒数>: 指定した秒数ごとに情報を更新して表示し続けます。例えば、5秒ごとに更新するにはfree -hs 5とします。終了するにはCtrl + Cを押します。これはメモリ使用量の変化をリアルタイムで追いたい場合に便利です。bash
free -hs 5
実践的な使い方: メモリ使用率の計算
free -h の出力を使って、現在のメモリ使用率を計算してみましょう。
最も一般的なメモリ使用率は、used を total で割った値として計算されますが、Linuxのメモリ管理の特性を考えると、available の値を考慮した方がより実態に近いと言えます。
方法1: used / total (厳密な使用率)
(used / total) * 100
例 (free -h の出力例から):
total = 7.8G, used = 3.7G
(3.7 / 7.8) * 100 ≈ 47.4%
これは実際に「使われている(使途が確定している)」メモリの割合ですが、これには buff/cache の一部も含まれている点に注意が必要です。
方法2: (total – available) / total (実質的な使用率)
( (total - available) / total ) * 100
この計算は、「すぐに利用できないメモリ」が全メモリに占める割合を示します。言い換えれば、システムが必要に応じて解放できないメモリの割合です。
例 (free -h の出力例から):
total = 7.8G, available = 3.3G
( (7.8 - 3.3) / 7.8 ) * 100 = (4.5 / 7.8) * 100 ≈ 57.7%
これは、available が3.3GByte残っていることを考慮すると、まだ42.3% (100% – 57.7%) のメモリがアプリケーションに割り当て可能である、と解釈できます。
どちらの計算方法を使うかは目的によりますが、Linuxシステムで「メモリが逼迫しているか?」を判断する際には、available の値が少ない(または used が total に近く、かつ buff/cache のほとんどが本当に使われているキャッシュである)かどうか、そしてスワップが使われているか、を確認するのが現実的です。
free コマンドはシンプルながら、システムのメモリ状況を大まかに把握するのに非常に役立ちます。まずはこのコマンドの使い方と出力の見方をマスターしましょう。
3.2. vmstat コマンド – 仮想メモリ統計情報
vmstat (virtual memory statistics) コマンドは、システム全体の仮想メモリ、プロセス、ページング、ブロックI/O、割り込み、CPUアクティビティなどの統計情報を表示します。メモリの使用状況だけでなく、メモリ関連のシステム的な活動(特にスワップの発生状況)を把握するのに役立ちます。
ターミナルに vmstat と入力して Enter キーを押してみましょう。
bash
vmstat
実行結果例:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 543540 121380 3589116 0 0 1 4 231 407 3 1 96 0 0
free と同じように、デフォルトでは数値がバイト単位などになり分かりにくいことがあります。vmstat にもオプションを付けることで、より分かりやすく表示できます。
vmstat のよく使うオプション
-
-s: メモリに関する詳細な統計情報を一覧で表示します。bash
vmstat -s実行結果例:
8131488 K total memory
3877452 K used memory
543540 K free memory
121380 K buffers
3589116 K cached
492664 K shared memory
3403960 K available memory
2097148 K total swap
0 K used swap
2097148 K free swap
2097148 total swap
100.000 percent swap used
... (他の情報も続く)この
-sオプションの出力の最初の部分は、freeコマンドの出力とほぼ同じ内容をより詳細な項目名で表示しています。キロバイト(K)単位である点に注意してください。available memoryもここで確認できます。 -
-w: 出力幅を広げて、項目の省略を防ぎます。最近のディスプレイサイズなら、このオプションを付けても十分表示できます。bash
vmstat -w -
<秒数> [<回数>]: 指定した秒数ごとに情報を更新し、指定した回数だけ表示します。回数を省略するとCtrl + Cを押すまで表示し続けます。これはシステムの状態を継続的に監視したい場合に非常に便利です。例えば、2秒ごとに3回表示するにはvmstat 2 3とします。bash
vmstat 2 3procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 543540 121380 3589116 0 0 1 4 231 407 3 1 96 0 0
1 0 0 542860 121400 3589116 0 0 0 128 1083 976 1 1 98 0 0
0 0 0 542860 121400 3589116 0 0 0 8 990 917 1 1 98 0 0
vmstat 出力の各項目の見方 (最初の行)
vmstat の定期更新出力の2行目以降が、直近の状況を示しています。
procs(プロセス):r: 実行待ちのプロセス数(CPU待ちのプロセス)b: スリープ中で、I/O完了を待っているプロセス数
memory:swpd: 使用中のスワップ容量 (キロバイト)。ここが 0 以外の値で、かつsiやsoの値が大きい場合は、メモリが不足してスワップが発生している可能性が高いです。free: 空いている物理メモリ容量 (キロバイト)。freeコマンドのfreeと同じです。buff: バッファとして使用中の物理メモリ容量 (キロバイト)。cache: キャッシュとして使用中の物理メモリ容量 (キロバイト)。
swap:si: スワップイン(スワップ領域から物理メモリへ)されたデータの量 (キロバイト/秒)。ここが大きい値の場合、システムが頻繁にスワップ領域からデータを読み出している、つまりメモリが不足しているサインです。so: スワップアウト(物理メモリからスワップ領域へ)されたデータの量 (キロバイト/秒)。ここが大きい値の場合、システムが頻繁にメモリ上のデータをスワップ領域に書き出している、これもメモリが不足しているサインです。
io(入出力):bi: ブロックデバイスからブロックを受信した量 (ブロック/秒)bo: ブロックデバイスへブロックを送信した量 (ブロック/秒)
system:in: 1秒あたりの割り込み数cs: 1秒あたりのコンテキストスイッチ数
cpu:us: ユーザーレベルのCPU使用率 (%)sy: システムレベルのCPU使用率 (%)id: アイドル(何もしていない)状態のCPU (%)wa: I/O待ちのCPU使用率 (%)st: スティール時間(仮想マシンがハイパーバイザーにCPU時間を奪われている時間) (%)
vmstat コマンドは、単なるメモリ容量だけでなく、システムがメモリをどのように扱っているか、特にスワップがどの程度発生しているかを知るのに適しています。定期更新 (vmstat <秒数>) を実行しながら、si や so の値が継続的に高い状態になっていないかを確認することで、メモリ不足によるパフォーマンス低下が発生しているかを判断できます。
3.3. top コマンド – リアルタイム監視とプロセス特定
top コマンドは、システム全体の状況をリアルタイムで監視するための強力なツールです。CPU使用率、メモリ使用率、スワップ使用率だけでなく、現在実行されているプロセスのリストとそれぞれのリソース使用状況を動的に表示します。メモリを大量に消費している特定のプロセスを特定したい場合に非常に役立ちます。
ターミナルに top と入力して Enter キーを押してみましょう。
bash
top
実行すると、以下のような画面が表示されます(画面内容は数秒ごとに自動で更新されます)。
“`
top – 14:00:00 up 1 day, 2:34, 1 user, load average: 0.10, 0.15, 0.20
Tasks: 250 total, 1 running, 249 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.0 us, 1.5 sy, 0.0 ni, 95.0 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7941.0 total, 529.9 free, 3797.5 used, 3613.5 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 user 20 0 456789 123456 67890 S 5.0 1.5 0:15.67 firefox
567 user 20 0 987654 234567 109876 S 2.0 2.9 0:20.34 gnome-shell
… (他のプロセスが続く)
“`
top コマンドの画面は、大きく分けて上部と下部の2つの領域に分かれています。
top コマンド出力の上部の見方
上部には、システムの全体的な状況サマリーが表示されます。
top - ...: 現在時刻、稼働時間 (up)、ログインユーザー数、ロードアベレージ(システムの負荷状況)Tasks: ...: プロセスの合計数、実行中 (running)、スリープ中 (sleeping)、停止中 (stopped)、ゾンビプロセス (zombie) の数%Cpu(s): ...: CPUの使用率(ユーザー、システム、アイドルなど)MiB Mem : ...: 物理メモリに関する情報。freeコマンドの-mオプションに近い表示です(MiB = メビバイト は MB とほぼ同じ)。total: 搭載されている物理メモリの合計容量free: 空いている物理メモリ容量used: 使用中の物理メモリ容量buff/cache: バッファとキャッシュとして使用中の物理メモリ容量- (バージョンによっては
availが表示される場合もあります。)
MiB Swap: ...: スワップ領域に関する情報。total: 設定されているスワップ領域の合計容量free: 空いているスワップ領域の容量used: 使用中のスワップ領域の容量
この上部のメモリに関する表示は、free -m の出力とほぼ同じ情報をリアルタイムで確認できるものです。
top コマンド出力の下部の見方 (プロセスリスト)
下部には、現在システム上で実行されている各プロセスのリストと、それぞれの詳細な情報が表示されます。このリストが、メモリを多く使っているプロセスを特定するのに非常に重要です。主な列の意味を見ていきましょう。
PID: プロセスID。システムが各プロセスに割り当てる一意の番号です。USER: プロセスを実行しているユーザー名。PR: プライオリティ(優先度)。プロセスの実行優先度を示します。NI: ナイス値 (Nice value)。プロセスの優先度を調整するためにユーザーが設定できる値 (-20から+19)。小さいほど優先度が高くなります。VIRT: 仮想メモリサイズ (Virtual Memory Size)。プロセスが使用している仮想メモリの合計容量です。これには、実際に物理メモリにロードされている部分(RES)、スワップアウトされた部分、共有ライブラリなどが含まれます。多くの場合は RES よりもかなり大きな値になります。RES: 常駐メモリサイズ (Resident Memory Size)。プロセスが実際に物理メモリ上にロードして使用している容量です。そのプロセスが物理メモリをどれだけ使っているかを知る上で、最も重要な値です。SHR: 共有メモリサイズ (Shared Memory Size)。プロセスが他のプロセスと共有している物理メモリの容量です。S: プロセスの状態 (Status)。R (Running: 実行中), S (Sleeping: スリープ中), T (Stopped: 停止中), Z (Zombie: ゾンビプロセス) などがあります。%CPU: プロセスが使用しているCPU時間の割合(直近の時間での平均)。%MEM: プロセスが使用している物理メモリ(RES)の割合。この列を見て、メモリを大量に消費しているプロセスを特定します。TIME+: プロセスが起動してから消費したCPU時間の合計。COMMAND: プロセスを実行しているコマンド名またはプログラム名。
top 画面での操作
top コマンドを実行中に、特定のキーを押すことで表示を操作したり、プロセスを操作したりできます。
M: プロセスリストをメモリ使用率 (%MEM) が高い順にソートします。メモリを大量に消費しているプロセスを探すときに非常に便利です。P: プロセスリストをCPU使用率 (%CPU) が高い順にソートします(デフォルト)。k: プロセスを終了させます。kを押すと、終了させたいプロセスのPIDの入力を求められます。Enterを押すと、そのプロセスにSIGTERMシグナル(安全な終了要求)を送ります。強制終了したい場合は、もう一度kを押して、シグナル番号9を入力します。注意:重要なシステムプロセスを終了させるとシステムが不安定になる可能性があるため、注意して使用してください。q:topコマンドを終了します。
top コマンドは、システム全体のメモリ使用状況を把握しつつ、どのプロセスがどれだけメモリを使っているのかをリアルタイムで確認できるため、メモリ関連の問題のトラブルシューティングにおいて非常に強力なツールです。特に M キーでメモリ使用率順にソートする機能は、メモリを食い潰している「犯人」を見つけるのに欠かせません。
3.4. htop コマンド – 見やすく高機能な top の代替
htop は top コマンドの代替として開発された、より高機能でインタラクティブなシステムモニターツールです。デフォルトではUbuntuにインストールされていないことが多いですが、非常に使いやすく視覚的にも優れているため、ぜひ導入をお勧めします。
htop のインストール
htop をインストールするには、ターミナルを開いて以下のコマンドを実行します。パスワードの入力が求められる場合があります。
bash
sudo apt update
sudo apt install htop
sudo apt update はパッケージリストを最新の状態にし、sudo apt install htop は htop パッケージをインストールします。
htop の使い方
インストールが完了したら、ターミナルに htop と入力して Enter キーを押します。
bash
htop
実行すると、以下のような画面が表示されます(表示内容は環境によって異なります)。
“`
CPU[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100%]
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 50.0%]
Swp[ 0.0%]
Tasks: 250, 1 running
Load average: 0.10 0.15 0.20
Uptime: 1 day, 2:34
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ COMMAND
1234 user 20 0 4456m 120m 654m S 5.0 1.5 0:15.67 firefox
567 user 20 0 1234m 200m 1000m S 2.0 2.9 0:20.34 gnome-shell
… (他のプロセスが続く)
“`
htop の画面構成は top と似ていますが、視覚的なバー表示が特徴です。
htop 出力の見方
- 上部: CPU、メモリ (Mem)、スワップ (Swp) の使用率がグラフィカルなバーで表示されます。バーの色分け(青:バッファ、緑:キャッシュ、赤:プロセス使用分など)により、どの部分が何に使われているかが一目で分かります。その下にタスク数、ロードアベレージ、稼働時間が表示されます。
- 下部: プロセスリストが表示されます。表示される列は
topとほぼ同じですが、VIRT,RES,SHRの値はデフォルトで人間が読みやすい単位 (m=MB, g=GB) で表示されます。また、プロセスの親子関係をツリー表示することも可能です (F5キー)。
htop の便利な機能
htop は画面下部にファンクションキー (F1〜F10) に対応する操作が表示されており、より直感的に操作できます。
F1(Help): ヘルプ画面を表示します。F2(Setup): 表示オプションや列のカスタマイズができます。F3(Filter): プロセスリストをコマンド名などでフィルタリングできます。特定のアプリだけを表示したい場合に便利です。F4(Search): プロセスリストを検索できます。F5(Tree): プロセスリストをツリー構造で表示します。どのプロセスがどのプロセスの子供として起動されたかなどが分かります。F6(SortBy): プロセスリストのソート順を変更できます。F6を押して、↑↓キーでソートしたい項目(MEM%を選択すればメモリ使用率順)を選び、Enterで決定します。F7(Nice-): プロセスの優先度(Nice値)を下げて、優先度を上げます。F8(Nice+): プロセスの優先度(Nice値)を上げて、優先度を下げます。F9(Kill): 選択中のプロセスを終了させます。シグナルを選択できます(SIGTERM, SIGKILLなど)。F10(Quit):htopを終了します。
特に、上部のメモリバー表示、F6 キーでのソート、F3/F4 キーでのフィルタリング・検索機能は、top よりも使いやすく、メモリを大量消費しているプロセスを素早く見つけ出すのに非常に有効です。htop は top に慣れてきたら、ぜひ乗り換えて試してみてほしいツールです。
3.5. /proc/meminfo ファイル – カーネルの生データ
Linuxシステムでは、/proc ファイルシステムという特殊な仮想ファイルシステムを通じて、カーネル(OSの中核部分)が管理している様々なシステム情報にアクセスできます。メモリに関する詳細な情報は、/proc/meminfo というファイルに格納されています。
このファイルの内容は、上で見てきた free, vmstat, top/htop といったコマンドが参照している元データです。コマンドの出力よりもさらに多くの項目が含まれています。
ファイルの内容を見るには、cat コマンドを使います。
bash
cat /proc/meminfo
実行結果例(一部抜粋):
MemTotal: 8131488 kB
MemFree: 543540 kB
MemAvailable: 3403960 kB
Buffers: 121380 kB
Cached: 3589116 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
SwapCached: 0 kB
Active: 4100316 kB
Inactive: 2769244 kB
Active(anon): 2089764 kB
Inactive(anon): 111904 kB
Active(file): 2010552 kB
Inactive(file): 2657340 kB
Unevictable: 0 kB
Mlocked: 0 kB
... (その他の項目も続く)
free -h の出力で見た total, free, available, buff/cache の元となる MemTotal, MemFree, MemAvailable, Buffers, Cached といった項目が確認できます。単位はデフォルトでキロバイト(kB)です。
cat /proc/meminfo はリアルタイムに更新されるわけではなく、実行した時点でのスナップショットが表示されます。しかし、他のコマンドでは表示されないような、メモリに関するさらに詳細な情報を確認したい場合に利用できます。
いくつかの追加項目の簡単な説明:
SwapCached: スワップ領域にあるページのうち、メモリ上にもキャッシュとして存在している容量。Active/Inactive: アクティブに使用されているメモリページと、使用されていない(解放候補となる)メモリページ。これらはファイルベース (Active(file),Inactive(file)) か、匿名(ファイルに対応しない、プログラムのデータなど) (Active(anon),Inactive(anon)) かに分かれます。Unevictable: スワップアウトできない(常に物理メモリ上に置かれる必要がある)メモリ容量。Mlocked:mlock()システムコールなどで物理メモリにロックされたページ容量。
/proc/meminfo はコマンドの裏側を知るためのものであり、普段のメモリ確認では free や top/htop を使うのが一般的です。しかし、システム管理者や上級者がより詳細なメモリの状態を調べたい場合に参照することがあります。
4. GUI(グラフィカルユーザーインターフェース)を使ったメモリ確認方法
コマンドラインに抵抗がある初心者の方や、視覚的に分かりやすくシステム状況を把握したい方には、GUIツールを使った方法がお勧めです。Ubuntuには標準で便利なGUIツールが用意されています。
4.1. システムモニター (System Monitor) – Ubuntu標準ツール
Ubuntuにデフォルトでインストールされている「システムモニター」は、GUIでシステムのリソース使用状況を確認できる非常に便利なツールです。CPU、メモリ、ネットワークなどの状態をグラフで確認したり、実行中のプロセスを一覧表示してリソース使用量を調べたりできます。
システムモニターの起動方法
- アプリケーションメニューから起動: 画面左上または左下にあるアプリケーションメニューアイコンをクリックし、「システムモニター」と検索して起動します。
- コマンドラインから起動: ターミナルを開き、
gnome-system-monitorと入力してEnterキーを押しても起動できます。
システムモニターの使い方
システムモニターを起動すると、通常は「プロセス」タブが表示されます。メモリを確認するには、「リソース」タブをクリックします。
「リソース」タブ
このタブでは、CPU、メモリとスワップ、ネットワーク履歴のグラフがリアルタイムで表示されます。
- メモリとスワップ履歴: ここに表示されるグラフが、物理メモリとスワップ領域の使用状況を示します。
- グラフの横軸は時間経過、縦軸は容量を示します。
- 通常、物理メモリの使用量は色分けされたバーで表示されます。例えば、青や緑の部分がバッファやキャッシュ、紫やオレンジなどの色がアクティブに使用されているメモリを示します(色の定義はUbuntuのテーマによって異なる場合があります。バーにマウスカーソルを合わせると詳細が表示されます)。
- スワップの使用量も別のバーやグラフで表示されます。スワップの使用量が継続的に高い状態になっている場合、メモリが不足していることを示唆します。
- グラフのすぐ下には、合計容量、空き容量、使用容量(アプリケーション、バッファ、キャッシュに分かれて表示されることが多い)、そして利用可能なメモリ容量(
freeコマンドのavailableに相当)などの数値が表示されます。
「リソース」タブは、メモリ使用量が時間とともにどのように変化しているかを視覚的に把握するのに適しています。特に、特定の作業を行ったときにメモリ使用量が急増したり、スワップが発生したりするかどうかを確認するのに役立ちます。
「プロセス」タブ
このタブには、現在システム上で実行されているすべてのプロセスが一覧表示されます。各プロセスのCPU使用率、メモリ使用量、PID、ユーザー名などを確認できます。
- メモリ使用量を確認: 表示されている列の中に「メモリ」または「メモリ (%)」といった項目があります。デフォルトで表示されていない場合は、列のヘッダー部分を右クリックして表示したい列を追加できます。
- ソート機能: 列のヘッダー(「メモリ」など)をクリックすると、その項目の値でプロセスリストをソートできます。メモリを大量に消費しているプロセスを見つけたい場合は、「メモリ」の列をクリックして降順にソートすると、最もメモリを使っているプロセスがリストの上部に表示されます。
- プロセスの終了: 怪しいプロセスや、大量にメモリを消費していて応答しないプロセスがあれば、そのプロセスを選択し、右クリックメニューから「プロセスの終了」または画面下部の「プロセスの終了」ボタンをクリックすることで、プロセスを終了させることができます。ただし、システムに必要なプロセスを誤って終了させるとシステムが不安定になる可能性があるため、十分に注意してください。
システムモニターの「プロセス」タブは、メモリを大量に消費している特定のアプリケーションやサービスを特定するのに非常に効果的です。GUIなので、マウス操作で直感的にリストを操作できるのも利点です。
システムモニターは、Ubuntu初心者がまず最初に試すべきメモリ確認ツールと言えるでしょう。コマンド入力なしで、システム全体の状況と個別のプロセス状況を同時に確認できるため、非常に便利です。
4.2. その他のGUIツール (簡単な紹介)
Ubuntuには、システムモニター以外にも様々なGUIベースのシステム情報表示・管理ツールが存在します。例えば、以下のようなものがあります。
- Stacer: システムのクリーンアップ、スタートアップアプリケーション管理、サービス管理、リソースモニター機能などを一つにまとめた多機能ツールです。リソースモニター機能でCPUやメモリ使用量をグラフで確認できます。別途インストールが必要です。
- Mission Center: macOSのActivity Monitorのような見た目の、比較的新しいリソースモニターツールです。CPU、GPU、メモリ、ディスク、ネットワークなどの詳細な情報を美しいUIで表示します。Flathubなどからインストールできます。
これらのツールはそれぞれ特徴がありますが、基本的なメモリ確認という目的であれば、Ubuntu標準のシステムモニターで十分でしょう。興味があれば、これらのツールも試してみるのも良いかもしれません。
5. メモリ確認結果の解釈とトラブルシューティング
さて、ここまで様々な方法でメモリの状態を確認する方法を見てきました。次に重要なのは、取得した情報をどのように解釈し、もしメモリ不足の兆候が見られた場合にどのように対処すれば良いかです。
5.1. 「メモリ使用率が高い」とはどういう状況か?
先述したように、Linuxシステムは空きメモリを積極的にバッファやキャッシュとして利用するため、free コマンドの free の値が小さくても、それが即座にメモリ不足を意味するわけではありません。
メモリ使用率が高い、あるいはメモリが逼迫している状況の主な兆候は以下の通りです。
free -hまたはvmstat -sのavailableの値が継続的に低い: アプリケーションが新しくメモリを要求しても、すぐに割り当てられる空きが少ない状態です。具体的な「低い」基準は搭載容量や用途によりますが、例えば搭載容量の10%以下が常に続いているような場合は注意が必要です。free -hまたはvmstat -sのSwap usedの値が 0 以外で、かつ増加傾向にある: スワップ領域が使われているということは、物理メモリだけでは足りなくなっていることを意味します。vmstatのsiまたはsoの値が継続的に高い: スワップイン・スワップアウトが頻繁に発生しています。これは物理メモリとスワップ領域の間でデータのやり取りが激しく行われていることを示しており、深刻なメモリ不足の兆候です。topまたはhtopの上部でSwap usedが高い: スワップが使われています。topまたはhtopのプロセスリストで、特定のプロセスまたは複数のプロセスの%MEMが非常に高い: 一つまたは複数のアプリケーションが大量のメモリを消費しています。- システムモニターの「リソース」タブで、メモリ使用量グラフが常に上限に張り付いている、またはスワップグラフが上昇している: 視覚的にメモリが逼迫していることが分かります。
これらの兆候が見られる場合、あなたのUbuntuシステムはメモリ不足に陥っている、または陥りつつある可能性が高いです。
5.2. メモリ使用率が高い原因
メモリ使用率が高い原因はいくつか考えられます。
- 多数またはメモリ消費の大きいアプリケーションの実行: Webブラウザで多数のタブを開いている、仮想マシンを実行している、動画編集ソフトや画像編集ソフト、ゲームなど、メモリを大量に消費するアプリケーションを同時に複数起動している場合。
- 常駐アプリケーションやバックグラウンドサービス: システム起動時から常に実行されているアプリケーションやサービス(チャットツール、クラウド同期ソフト、各種エージェントなど)が、知らず知らずのうちにメモリを消費している場合があります。
- メモリリーク: アプリケーションにバグがあり、使用済みのメモリを正しく解放しないために、徐々にメモリを消費し続けてしまう現象です。長時間起動している特定のアプリケーションが原因で発生することがあります。
- システムの設定: スワップ領域が小さすぎる、ファイルシステムキャッシュの設定など、システムレベルの設定がメモリ効率に影響している場合があります(ただし、これは通常、Ubuntuのデフォルト設定では大きな問題にならないことが多いです)。
5.3. メモリ不足が引き起こす問題
メモリ不足は、以下のような様々な問題を引き起こします。
- システムの動作が遅くなる: メモリとストレージ間のデータ移動(スワップ)が頻繁に発生し、CPUの待ち時間が増えるため、全体的に動作が遅くなります。
- アプリケーションの応答が遅くなる、フリーズする: メモリが不足すると、アプリケーションが必要なデータにすぐにアクセスできず、一時的に応答しなくなったり、完全にフリーズしたりすることがあります。
- アプリケーションの強制終了: メモリが完全に枯渇すると、OSがメモリを確保するために一部のアプリケーションを強制的に終了させることがあります(OOM Killer – Out Of Memory Killer)。
- ディスク(特にSSD)の劣化: 頻繁なスワップはストレージへの書き込み回数を増やし、特にSSDの寿命を縮める可能性があります。
5.4. メモリ不足の対処法
メモリ不足の兆候が見られた場合の対処法をいくつかご紹介します。
- 不要なアプリケーションを閉じる: 最も手軽で即効性のある方法です。
topやhtop、またはシステムモニターの「プロセス」タブでメモリ使用率の高いプロセスを確認し、現在使用していないアプリケーションがあれば終了させましょう。特に、Webブラウザの多数のタブはメモリを大量に消費することが多いです。 - 自動起動するアプリケーションを見直す: システム起動時に自動で実行されるアプリケーションが多いと、起動直後からメモリ使用量が高くなることがあります。システム設定やスタートアップアプリケーション設定ツールで、本当に必要なものだけが自動起動するように見直しましょう。
- メモリを多く消費するアプリケーションの使用を控える/代替を検討する: 仮想マシンや特定の重いアプリケーションの使用を一時的に控えたり、より軽量な代替アプリケーションを探したりすることを検討します。
- スワップ領域の設定を見直す (上級者向け): 現在のスワップ領域が小さすぎる場合、増設を検討します。ただし、スワップ領域の増設は物理メモリの速度には敵わないため、根本的な解決策ではなく、あくまで一時的な対処または保険と考えましょう。また、Linuxには
swappinessという、物理メモリがどれだけ空いているかに関わらずスワップアウトを始める積極性を調整する設定値がありますが、これも初心者が安易に変更するのはお勧めしません。 - 物理メモリ (RAM) の増設を検討する: これが最も効果的で根本的な解決策です。特に、搭載容量が4GB以下で頻繁にメモリ不足になるようなら、増設を強く検討しましょう。最近の多くのアプリケーションやWebサイトを快適に使うためには、8GB以上、可能であれば16GB以上のメモリが推奨されます。お使いのパソコン(マザーボード)が対応している最大容量やメモリスロットの空きを確認し、増設可能であれば実行しましょう。増設はパソコンの分解や部品の購入が必要になりますので、ご自身のスキルレベルや保証条件などを考慮して判断してください。
メモリ不足を感じたら、まずは不要なアプリケーションを閉じることから始め、それでも改善しない場合は、top や htop などを使ってメモリを大量消費しているプロセスを特定し、そのアプリケーションの使用を控えるなどの対処を行いましょう。最終手段、あるいは最も効果的な解決策として、物理メモリの増設を検討することになります。
6. まとめ
この記事では、Ubuntuでメモリの状態を確認するための様々な方法を、初心者向けに詳細に解説しました。
freeコマンド: 最も基本的なコマンドで、物理メモリとスワップの全体的な使用状況を把握できます。特にfree -hやfree -hs <秒数>が便利です。availableの値が重要であることを学びました。vmstatコマンド: 仮想メモリを含めたシステム統計情報を表示し、スワップの発生状況 (si,so) を確認するのに役立ちます。vmstat -sやvmstat <秒数>が便利です。topコマンド: リアルタイムでシステム全体の状況とプロセスごとのリソース使用状況を表示します。Mキーでメモリ使用率の高い順にソートし、メモリを消費しているプロセスを特定するのに非常に有効です。htopコマンド:topの高機能・対話型版で、視覚的に分かりやすいインターフェースを持っています。インストールが必要ですが、topよりも直感的に操作できます。F6でメモリ使用率ソート、F3/F4でフィルタリング・検索が便利です。/proc/meminfoファイル: カーネルが保持するメモリ情報の生データです。より詳細な情報が必要な場合に参照できますが、通常はコマンドで十分です。- システムモニター (GUI): Ubuntu標準のGUIツールで、グラフ表示でメモリ使用量の推移を確認したり、プロセスリストで個別のメモリ使用量を視覚的に確認・操作したりできます。コマンドラインに慣れていない方にお勧めです。
状況に応じてこれらのツールを使い分けることで、あなたのUbuntuシステムのメモリの状態を正確に把握し、パフォーマンスの問題が発生した際に原因を特定できるようになります。
- 素早く大まかな状況を知りたい:
free -h - リアルタイムで全体とプロセスの状況を見たい:
topまたはhtop - 特定のプロセスがどれだけ使っているか知りたい:
top(Mキー) またはhtop(F6キー、F3/F4キー) またはシステムモニター(プロセスリスト) - スワップの発生状況を詳しく知りたい:
vmstat(si,soの値) - メモリ使用量の推移を視覚的に見たい: システムモニター(リソースタブ)
メモリ確認は、OSを快適に使い続けるための第一歩です。これらの方法を参考に、あなたのUbuntuのメモリ状況をぜひチェックしてみてください。もしメモリ不足が慢性的な問題になっているようであれば、物理メモリの増設を検討することが、最も効果的な解決策となるでしょう。
この記事が、あなたのUbuntuライフをより快適にする手助けになれば幸いです。
付録:用語集
記事中で登場した、メモリ関連の主な用語を簡単に解説します。
- RAM (Random Access Memory): 物理メモリのこと。電源を切ると内容が消える、高速な一時記憶領域。
- ROM (Read Only Memory): 読み出し専用のメモリ。パソコンの起動に必要なBIOS/UEFIなどが格納されている。通常、ユーザーが直接操作することはない。
- Swap (スワップ): 物理メモリが不足した際に、ストレージの一部を一時的な記憶領域として利用する機能。
- Cache (キャッシュ): よく使うデータを一時的にメモリに保持しておくことで、ストレージなどへのアクセスを減らし高速化を図る仕組み。
- Buffer (バッファ): データの入出力(I/O)の際に、一時的にデータを貯めておく領域。I/Oの効率を高めるために使われる。
- Kernel (カーネル): OSの中核部分。ハードウェアとソフトウェアの橋渡し役を担う。メモリ管理もカーネルの重要な役割の一つ。
- Process (プロセス): 実行中のプログラムのインスタンス。一つのプログラムから複数のプロセスが起動することもある(例: ウェブブラウザの各タブなど)。
- PID (Process ID): 各プロセスに割り当てられる一意の識別番号。
- VIRT (Virtual Memory Size): プロセスが使用している仮想メモリの合計容量。物理メモリ上にある部分、スワップアウトされた部分、共有ライブラリなどが含まれる。
- RES (Resident Memory Size): プロセスが実際に物理メモリ上に存在し、使用している容量。そのプロセスが物理メモリをどれだけ使っているかを示す重要な値。
- SHR (Shared Memory Size): プロセスが他のプロセスと共有している物理メモリの容量。
- Swappiness: Linuxカーネルの設定値の一つ。物理メモリが空いている状態でも、どの程度積極的に使われていないページをスワップアウトするかを制御するパラメータ。値が大きいほど積極的にスワップアウトする。
- OOM Killer (Out Of Memory Killer): メモリが完全に枯渇した場合に、システムを安定させるために特定のプロセスを強制終了させるカーネルの機能。
これらの用語を理解することで、メモリ関連の情報がより深く読み解けるようになるでしょう。
これで記事は終了です。約5000語の詳細な解説となりました。Ubuntuのメモリ確認に役立てていただければ幸いです。