Linuxのメモリとは?主記憶装置の仕組みと使用量の確認方法を初心者向けに解説
生徒
「Linuxのメモリって、HDDやSSDにデータを保存することとは違うんですか?」
先生
「違います。メモリは、Linuxやアプリケーションが動作するときに必要なデータを一時的に置いておく主記憶装置です。HDDやSSDより高速に読み書きできます。」
生徒
「メモリの使用量が多いと、すぐにパソコンが重くなるんですか?」
先生
「Linuxでは空いているメモリをキャッシュにも活用するため、使用量の数字だけでは判断できません。freeコマンドなどを使いながら、基本から順番に見ていきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. Linuxのメモリとは?
Linuxの読み方はLinux(リナックス)です。メモリは英語でmemory(メモリ)といい、パソコンが処理を行うときに、プログラムやデータを一時的に置いておくための記憶装置です。一般的にパソコンのメモリという場合はRAMを指すことが多く、RAMの読み方はRAM(ラム)です。
メモリは主記憶装置とも呼ばれます。主記憶装置の読み方は主記憶装置(シュキオクソウチ)です。CPUが処理するプログラムやデータを素早く利用できるように保持する役割があり、Linuxの動作速度にも深く関係します。
初心者の方は、メモリを作業机として考えるとわかりやすいでしょう。机が広ければ、複数の資料を広げたまま作業できます。机が狭いと、必要な資料を何度も入れ替える必要があり、作業効率が下がります。Linuxでもメモリ容量に余裕があると、複数のアプリケーションやサービスを動かしやすくなります。
ただし、メモリはHDDやSSDのような長期保存用のストレージとは役割が異なります。一般的なRAMは電源を切ると内容が失われるため、保存したいファイルはストレージへ書き込みます。
2. メモリとHDDやSSDの違い
HDDの読み方はHDD(エイチディーディー)、SSDの読み方はSSD(エスエスディー)です。HDDやSSDはストレージと呼ばれ、ファイル、画像、動画、プログラムなどを長期間保存するために使われます。一方、メモリは実行中の処理で必要なデータを一時的に置く場所です。
たとえば、SSDに保存されているアプリケーションを起動すると、必要なプログラムやデータの一部がメモリへ読み込まれます。CPUはメモリ上の情報を使いながら処理を進めます。そのため、ストレージは保管庫、メモリは作業机、CPUは作業を進める人というイメージで考えると理解しやすくなります。
メモリはストレージより高速ですが、容量はストレージより小さいことが一般的です。たとえばパソコンには数百ギガバイト以上のSSDが搭載されていても、メモリは数ギガバイトから数十ギガバイトという構成がよくあります。
Linuxのファイルシステムやストレージ管理を学ぶときは、メモリとストレージを混同しないことが大切です。メモリ不足とディスク容量不足は別の問題であり、確認するLinuxコマンドも異なります。
3. freeコマンドでLinuxのメモリ使用量を確認する
Linuxでメモリ容量や使用状況を確認するときに最も基本的なコマンドの一つがfreeです。freeの読み方はfree(フリー)です。物理メモリとスワップ領域の使用状況をまとめて確認できます。
-hオプションを付けると、ギガバイトやメガバイトなど、人が読みやすい単位で表示できます。
free -h
total used free shared buff/cache available
Mem: 15Gi 5.2Gi 1.8Gi 420Mi 8.0Gi 9.4Gi
Swap: 2.0Gi 0.0Gi 2.0Gi
totalは搭載されているメモリ容量の目安、usedは使用中の量、freeは完全に未使用の量を表します。buff/cacheにはLinuxがバッファやキャッシュとして活用しているメモリが含まれます。
初心者が特に注目したいのがavailableです。availableは、新しいアプリケーションなどが必要としたときに利用できると見込まれるメモリ量の目安です。Linuxでは空きメモリをキャッシュとして有効利用するため、freeの数字が小さいだけで直ちにメモリ不足とは限りません。
4. Linuxが空きメモリをキャッシュに使う理由
Linuxでは、使われていないメモリをできるだけ有効に利用する考え方があります。その代表例がページキャッシュです。キャッシュの読み方はcache(キャッシュ)です。一度読み込んだファイルのデータなどをメモリに残しておくことで、同じデータが再び必要になったときにストレージへ毎回アクセスする回数を減らせます。
そのため、Linuxでは長時間動作していると、見かけ上の使用メモリが増えることがあります。しかし、キャッシュに使われている領域の一部は、アプリケーションがメモリを必要としたときに再利用できます。
これが、Linuxのメモリ確認でfreeだけを見て「空きが少ないから危険」と判断してはいけない理由です。freeコマンドではavailableも確認し、実際に新しい処理へ使える余裕がどの程度あるかを見ることが大切です。
初心者の方は、空いている作業机に、よく使う資料を一時的に置いている状態を想像するとわかりやすいでしょう。別の作業で机が必要になれば、その資料を片付けて新しい作業に使えます。Linuxのキャッシュも、空き資源を無駄にせず高速化へ利用する仕組みです。
5. proc meminfoで詳しいメモリ情報を確認する
Linuxでは、カーネルが管理しているシステム情報を/procという特別な場所から確認できます。procの読み方はproc(プロック)です。メモリの詳しい情報は/proc/meminfoに表示されます。
たとえば、搭載メモリの総量に関係する情報だけを確認したい場合は、次のように実行できます。
grep MemTotal /proc/meminfo
MemTotal: 16310544 kB
MemTotalにはLinuxが利用できる物理メモリの総量に関係する値が表示されます。表示単位はキロバイトです。搭載したメモリ容量と完全に同じ数字にならない場合があるのは、ハードウェアなどのために予約される領域が存在することがあるためです。
/proc/meminfoにはMemAvailable、Cached、Buffers、SwapTotalなど、さまざまなメモリ情報があります。初心者の段階ですべてを暗記する必要はありませんが、Linuxにはメモリの状態を詳しく確認できる仕組みが用意されていることを覚えておきましょう。
6. topコマンドでメモリを使っているプロセスを確認する
Linuxでは複数のプログラムやサービスが同時に動作しており、それぞれがメモリを利用します。実行中のプログラムを管理する単位をプロセスといいます。プロセスの読み方はprocess(プロセス)です。
どのプロセスが動いているか、CPUやメモリをどの程度使用しているか確認するときはtopコマンドがよく使われます。topの読み方はtop(トップ)です。
top -b -n 1 | head -n 6
top - 08:40:12 up 2 days, 3:15, 1 user, load average: 0.12, 0.10, 0.08
Tasks: 218 total, 1 running, 217 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 96.5 id, 0.2 wa, 0.0 hi, 0.3 si, 0.0 st
MiB Mem : 15928.3 total, 1840.2 free, 5300.5 used, 8787.6 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used
topではシステム全体のCPUやメモリ使用状況に加えて、プロセスごとの情報も確認できます。実際の表示内容や数値はLinux環境によって変わります。
サーバーの動作が急に重くなった場合には、メモリ全体の余裕を確認したうえで、どのプロセスが多くのメモリを使っているのか調べることが問題発見の手がかりになります。
7. psコマンドでメモリ使用率の高いプロセスを調べる
psコマンドでもプロセスの情報を確認できます。psの読み方はps(ピーエス)です。表示項目や並び順を指定すると、メモリを多く使用しているプロセスを探すこともできます。
次の例では、プロセス番号、コマンド名、メモリ使用率を表示し、メモリ使用率が高い順に並べています。
ps -eo pid,comm,%mem --sort=-%mem | head -n 6
PID COMMAND %MEM
2451 java 8.4
1320 gnome-shell 3.2
2018 firefox 2.8
912 postgres 1.6
PIDの読み方はPID(ピーアイディー)です。プロセスを識別するための番号です。COMMANDには実行しているプログラム名、%MEMには物理メモリに対する使用割合の目安が表示されます。
メモリ使用率が高いプロセスが必ず異常というわけではありません。データベースやJavaアプリケーション、ブラウザなどは用途によって多くのメモリを使うことがあります。普段の状態と比較しながら、急激な増加や長時間続く異常な使用量がないかを見ることが大切です。
8. メモリ不足とスワップ領域の関係
物理メモリの余裕が少なくなったときに関係する仕組みの一つがスワップ領域です。スワップの読み方はswap(スワップ)です。スワップ領域は、必要に応じてメモリ上の一部のページをストレージ側へ退避するために利用されます。
スワップ領域があることで、物理メモリだけでは収まりにくい状況でも処理を続けられる場合があります。しかしHDDやSSDはRAMより遅いため、大量のスワップが頻繁に発生するとシステムの応答が遅くなることがあります。
free -hでは物理メモリとスワップを同時に確認できます。メモリ不足を調べるときは、usedだけではなくavailableやSwapの使用状況も合わせて見ると、現在の状態を判断しやすくなります。
さらにメモリ不足が深刻になり、必要なメモリを確保できない状態になると、Linuxカーネルがプロセスを終了させてメモリを確保しようとする場合があります。この仕組みに関係する言葉としてOOMがあります。OOMの読み方はOOM(オーオーエム)で、Out Of Memory(アウトオブメモリ)の略です。
メモリ使用量が高いときは、freeの数字一つだけで判断せず、available、スワップ使用量、プロセスごとの使用量などを合わせて確認することが大切です。
9. Linux初心者がメモリで覚えておきたいポイント
Linuxのメモリは、CPUが処理するプログラムやデータを一時的に置くための主記憶装置です。HDDやSSDのようにファイルを長期間保存するストレージとは役割が異なり、一般的なRAMは電源を切ると保持していた内容が失われます。
Linuxではメモリを単にアプリケーションへ割り当てるだけでなく、空いている領域をページキャッシュなどにも利用してシステム全体の動作を効率化します。そのため、メモリのfreeが少なくても、それだけで異常だとは判断できません。
メモリ状態を確認するLinuxコマンドとして最初に覚えたいのがfree -hです。total、used、free、buff/cache、availableなどを確認できます。特に初心者はavailableを見て、必要に応じて利用できると見込まれるメモリがどの程度残っているか確認するとよいでしょう。
より詳しい情報を確認したい場合は/proc/meminfoを参照できます。また、topではシステム全体と実行中プロセスの状況、psでは条件を指定してプロセスごとのメモリ使用量を調べることができます。
Linuxサーバーでは、Webサーバー、データベース、Javaアプリケーションなど複数のサービスが同時にメモリを使います。メモリ容量に余裕がなくなるとスワップの利用が増えたり、処理速度が低下したり、深刻な場合にはプロセスを継続できなくなったりすることがあります。
一方で、メモリをたくさん使用していること自体が悪いわけではありません。Linuxは利用できるメモリを性能向上のために積極的に使います。重要なのは、現在の用途に対して十分なavailableがあるか、スワップが急増していないか、特定のプロセスだけが異常に増えていないかなど、複数の情報を組み合わせて確認することです。
初心者は、メモリを作業机、ストレージを保管庫と考え、まず役割の違いを理解しましょう。そのうえでfree -h、top、psなどを実際に使って自分のLinux環境を観察すると、主記憶装置、キャッシュ、スワップ、プロセスといったLinuxメモリ管理の基本がつながって理解できるようになります。
Linuxのメモリは、実行中のプログラムやデータを一時的に保持する主記憶装置です。RAM、CPU、ストレージ、キャッシュ、スワップ、free、top、psの関係を理解すると、Linuxのメモリ使用量やシステムの状態を確認しやすくなります。