Linuxでメモリ使用率を確認する方法
コマンドラインとGUIオプ
16GBなどの物理RAMとスワップメモリを持っています。 スワップメモリは、システムメモリ(RAM)に収まるよりも、Linuxコンピュータが同時により多くのアプリケーションを実行することを可能にするデ このページでは、コマンドラインとGUIツールを使用して、Linuxでメモリ使用量と使用率を確認するためのさまざまなコマンドを説明します。
Linuxでメモリ使用率をチェックするコマンド
Linuxシステムは最適なレベルで実行する必要があります。 メモリは、Linuxシステムで重要な役割を果たしています。 開発者または経験豊富なsysadminは、サーバー内のスワップメモリを含む、空きおよび使用されている物理の合計量を知っている必要があります。 カーネルで使用されているバッファやキャッシュにも注意を払っておくのが最善です。
/proc/meminfoファイル
/proc/meminfoファイルは、Linuxでのメモリ使用量に関する統計情報を報告します。 Linuxボックスでは、次のようにcatコマンド|lessコマンドまたはgrepコマンド|egrepコマンドを使用します:cat /proc/meminfo
more /proc/meminfo
/proc/meminfoファイルの各行は、パラメータ名の後にコロン、パラメータ値、およびオプション測定単位で構成されます。 たとえば、”kB”です。
メモリ使用率パラメータについて
パラメータ | 説明 |
---|---|
MemTotal | 使用可能なRAMの合計(つまり、物理RAMマイナスいくつかの予約ビットとカーネルバイナリコード)。 |
MemFree | LowFree+HighFreeの合計。 |
MemAvailable | (Linux3.14以降)スワップせずに、新しいアプリケーションを起動するために利用可能なメモリ量の推定値。 |
バッファ | 途方もなく大きくなるべきではない生のディスクブロックのための比較的一時的な記憶域(20MB程度)。 |
キャッシュされた | ディスクから読み込まれたファイルのインメモリキャッシュ(ページキャッシュ)。 SwapCachedは含まれません。 |
SwapCached | 一度スワップアウトされたメモリは、スワップバックされますが、スワップファイルにも含まれています。 |
アクティブな | メモリは、より最近使用されており、通常は絶対に必要でない限り再利用されません。 |
最近使用されていない非アクティブな | メモリ。 それは他の目的のために開拓されるためにより資格があります。 |
HighTotal | highmemの合計金額。 Highmemは、〜860MB以上の物理メモリです。 Highmem領域は、ユーザー空間プログラムまたはページキャッシュで使用するためのものです。 カーネルはこのメモリにアクセスするためにトリックを使用する必要があり、lowmemよりもアクセスが遅くなります。 |
HighFree | 無料のhighmemの量。 |
LowFree | 無料のlowmemの量。 |
SwapTotal | 使用可能なスワップ領域の合計量。 |
SwapFree | 現在使用されていないスワップ領域の量。 |
ディスクに書き戻されるのを待っているDirty | メモリ。 |
書き込みバック | ディスクにアクティブに書き戻されているメモリ。 |
AnonPages | ユーザー空間のページ-テーブルにマップされたファイルではないバックページ。 |
(mmap(2)を使って)メモリにマップされた | ファイルを、ライブラリなどのようにマップしました。 |
Shmem | tmpfs(5)ファイルシステムで消費されるメモリの量。 |
KReclaimable | カーネルがメモリの圧力の下で再利用しようとするカーネル割り当て。 SReclaimable(以下)、およびshrinkerを使用したその他の直接割り当てが含まれています。 |
スラブ | カーネル内のデータ構造キャッシュ。 (Slabinfo(5)を参照)。) |
SReclaimable | キャッシュなど、再利用される可能性のあるスラブの一部。 |
SUnreclaim | メモリ圧力で再利用できないスラブの一部。 |
kernelstack | カーネルスタックに割り当てられたメモリの量。 |
PageTables | 最低レベルのページテーブル専用のメモリ量。 |
Nfs_Unstable | サーバーに送信されたNFSページですが、まだ安定したストレージにコミットされていません。 |
Bounce | ブロックデバイス”bounce buffers”に使用されるメモリ。 |
writebacktmp | FUSEが一時的な書き戻しバッファに使用するメモリ。 |
CommitLimit | これは、システムに割り当てられる現在使用可能なメモリの合計量です。 この制限は、厳密なovercommitアカウンティングが有効になっている場合にのみ適用されます(/proc/sys/vm/overcommit_memoryのモード2)。 この制限は、/proc/sys/vm/overcommit_memoryで説明されている式に従って計算されます。 |
Committed_As | システムに現在割り当てられているメモリの量。 コミットされたメモリは、まだプロセスによって”使用”されていなくても、プロセスによって割り当てられたすべてのメモリの合計です。 1GBのメモリを割り当てるプロセス(malloc(3)などを使用)が、そのメモリの300MBのみに触れるプロセスは、1GB全体に割り当てられたアドレス空間があっても、300MBのメモリのみを使用しているように表示されます。 この1GBは、VMによって「コミット」されたメモリであり、割り当てアプリケーションによっていつでも使用できます。 システムでstrict overcommitが有効になっている場合(/proc/sys/vm/overcommit_memoryのモード2)、CommitLimitを超える割り当ては許可されません。 これは、メモリが正常に割り当てられた後にメモリ不足のためにプロセスが失敗しないことを保証する必要がある場合に便利です。 |
VmallocTotal | vmallocメモリ領域の合計サイズ。 |
VmallocUsed | 使用されるvmalloc領域の量。 Linux4.4以降では、このフィールドは計算されなくなり、0としてハードコードされている。 /Proc/vmallocinfoを参照してください。 |
VmallocChunk | 空きであるvmalloc領域の最大の連続したブロック。 Linux4.4以降では、このフィールドは計算されなくなり、0としてハードコードされます。 /Proc/vmallocinfoを参照してください。 |
LazyFree | は、madvise(2)MADV_FREEでマークされたメモリの量を示します。 |
AnonHugePages | ユーザー空間のページ-テーブルにマップされたファイルではないバックアップされたhugeページ。 |
shmemhugepages | huge pagesで割り当てられた共有メモリー(shmem)およびtmpfs(5)によって使用されるメモリー |
ShmemPmdMapped | 共有メモリは、hugeページを持つユーザー空間にマップされます。 |
CmaTotal | 合計CMA(連続したメモリアロケータ)ページ。 |
CmaFree | 無料のCMA(連続したメモリアロケータ)ページ。 |
hugepages_Total | hugeページのプールのサイズ。 |
Hugepages_Free | プール内でまだ割り当てられていないhugeページの数。 |
hugepages_Rsvd | これは、プールから割り当てるためのコミットメントが行われているが、まだ割り当てが行われていないhugeページの数です。 これらの予約されたhugeページは、アプリケーションが障害時にhugeページのプールからhugeページを割り当てることができることを保証します。 |
hugepages_Surap | プール内のhugeページの数が、/proc/sys/vm/nr_hugepagesの値を上回っています。 余剰hugeページの最大数は、/proc/sys/vm/nr_overcommit_hugepagesによって制御されます。 |
hugepagesize | hugeページのサイズ。 |
Directmap4K | カーネルによって線形にマップされたRAMのバイト数4kbページ。 |
Directmap4M | カーネルによって線形にマップされたRAMのバイト数4MBページ。 |
Directmap2M | カーネルによって線形にマップされたRAMのバイト数2MBページ。 |
Directmap1G | X86でCONFIG_X86_64およびCONFIG_X86_DIRECT_GBPAGESが有効になっています。 |
次のように、grepコマンドまたはegrepコマンドを使用してファイルを除外できます:grep -E --color 'Mem|Cache|Swap' /proc/meminfo
freeコマンドを使用して使用されているメモリ使用率と空きメモリ使用率を確認する
/proc/meminfoの出力は強力ですが、ユーザーフレンドリーではありません。 したがって、freeコマンドを使用する必要があります。 Freeコマンドは、Linuxシステム内の空きメモリと使用済みメモリの量を示します。 例えば:free
人間が読める出力を見たいですか? 試してみてください:free -h
free --human
サンプル出力:
total used free shared buff/cache availableMem: 94Gi 15Gi 672Mi 428Mi 78Gi 77GiSwap: 0B 0B 0B
列 | 説明 |
---|---|
合計 | 実装メモリの合計 |
使用済み | 使用済みメモリ(total–free–buffers–cacheとして計算されます) |
空きメモリ | 未使用メモリ(/proc/meminfoのMemFreeとSwapFree) |
共有 | 主にtmpfsによって使用されるメモリ(/proc/meminfoのShmem) |
buffers | カーネルバッファーで使用されるメモリ(/proc/meminfoのバッファ) |
キャッシュ | ページキャッシュで使用されるメモリ とslabs(キャッシュされ、/proc/meminfoでSReclaimable) |
buff/cache | バッファとキャッシュの合計 |
available | スワップなしで、新しいアプリケーションを起動するために使用可能なメモリ量の推定。 |
私達は自由な命令出力を印刷することをn秒毎に繰り返してもいいです。 たとえば、5秒ごとに出力を印刷し、画面上のそのような繰り返し(カウント)の後に終了します:free -s 5 -c 10
私達は次の通り自由な命令の出力を制御してもいいです:free
free -k
free -g
free -m
オプション | 出力を表示する | |
---|---|---|
-b,–bytes | ||
–キロ | キロバイト | |
–メガ | メガバイト | |
–ギガ | ギガバイト | |
–テラ | テラバイト | |
–ペタ | ペタバイト | |
-k、–吉備 | 吉備 | |
-m,–メビ | メビバイト | |
-g, –ギビ | ギビバイト | |
–テビ | テビビ | テビビ |
–ペビ | ペビ | ペビ |
vmstatコマンド
vmstatコマンドは強力で、次のようなLinuxハードウェアに関する情報を表示します:
- プロセス
- メモリ
- ページング
- ブロックIO
- トラップ
- ディスク
- CPUアクティビティ
端末を開き、次のコマンドを入力します:vmstat
私のUbuntu Linuxデスクトップからのサンプルセッション:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 11434840 2567516 10238916 0 0 26 75 142 55 13 5 82 0 0
-wを渡すと、画面上の広い出力が表示されます:vmstat -w
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu-------- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 11405404 2567988 10324528 0 0 26 75 142 58 13 5 82 0 0
フィールド | 説明 |
---|---|
swpd | 使用されている仮想メモリの量。 |
空き | アイドル状態のメモリの量。 |
buff | バッファとして使用されるメモリの量。 |
cache | キャッシュとして使用されるメモリの量。 |
inact | 非アクティブなメモリの量。 (-aオプション) |
active | アクティブなメモリの量。 (-aオプション) |
si | ディスクからスワップされたメモリの量(/s)。 |
したがって、 | ディスクにスワップされたメモリの量(/s)。 |
topおよびhtopコマンド
topおよびhtopコマンドは、実行中のLinuxシステムの動的なリアルタイムビューを提供します。 これには、以下の情報が含まれます:
- 広告なしとトラッキング
- Opensourceflareの開発者とシステム管理者のための詳細なガイド♥
- 独立したコンテンツクリエイターをサポートし、最新のガイドを読み始:UbuntuまたはDebian LinuxでRedis sentinelクラスターを設定する方法
- yubikeyを2要素認証(U2F/FIDO2)としてSSHキーを設定する方法
- UbuntuまたはDebian LinuxでMariadb Galeraクラスターを設定する方法
- 初心者のためのpodmanチュートリアル-パートI(DockerなしでLinuxコンテナを実行し、LINUXコンテナを実行します)
- デーモンレスモード)
- usbguardを使用して不正なUsbデバイスからlinuxを保護する方法
- ドメインが電子メールを送信していない場合は、スプーフィングやフィッシング
- ハードウェアとCPU使用率
- Linuxの稼働時間
- メモリとスワップ使用率
- システムプロセスとその他
htopはデフォルトではインストールされていません。 しかし、CentOS、Debian、Ubuntu、およびその他のオペレーティングシステムに簡単にインストールできます。
次のコマンドを実行します:top
htop
共有メモリを比例的に分割したメモリ使用量を報告する
smemツールが報告します:
- 共有メモリページを考慮した物理メモリ使用量。 非共有メモリは、USS(Unique Set Size)として報告されます。
- 共有メモリは、そのメモリを共有するプロセス間で均等に分割されます。
- 非共有メモリ(USS)にプロセスの共有メモリの割合を加えたものがPSS(Proportional Set Size)として報告されます。
- USSとPSSには物理メモリ使用量のみが含まれます。 これらには、ディスクにスワップアウトされたメモリは含まれません。
- メモリは、プロセス、ユーザー、マッピング、またはシステム全体によって報告できます。 テキストモードとグラフィカル出力の両方が利用可能です。
Debian/Ubuntu Linuxでaptコマンド/apt-getコマンドを使用してsmemをインストールすることができます:sudo apt install smem
次のように実行します:smem
# show whole system #
smem -w
# show meme usage about specifc user #
smem -u vivek
smem -u nginx
# get help #
man smem
smem --help
User Count Swap USS PSS RSS vivek 139 0 7593240 8210344 13017360
GUI
System Monitorを使用したLinuxでのメモリ使用率の確認は、実行中のプログラムと、使用されているプロセッサ時間、メモリ、ディスク容量を示すGUI Linuxアプリで アクティビティの概要からシステムモニタを開くことができます。 キーボードのSuperキーを押します。 概要でウィンドウとアプリケーションを確認できます。 また、単にそのようなシステムモニタなどのアプリケーションを検索するために入力を開始することができます。 [リソース]タブには、使用されているコンピュータのメモリ(RAM)の量が表示されます。 どのプロセスが最も多くのメモリを使用しているかを確認するには:[プロセス]タブをクリックします。 メモリの列ヘッダーをクリックして、メモリ使用量に応じてプロセスをソートします。
詳細はドキュメントを参照してください。
まとめ
GUIおよびCLIツールを使用して、LinuxでLinuxメモリ(RAM)の使用率を見つける方法を学習しました。
RSSフィード経由で入手してください。➔
カテゴリ | UnixおよびLinuxコマンドのリスト |
---|---|
ダウンロードマネージャ | wget |
ドキュメント | ヘルプ*mandb*man*pinfo |
ディスク領域アナライザ | df*duf•ncdu•pydf |
ファイル管理 | cat*cp*less *mkdir*more*tree |
ファイアウォール | Alpine Awall*CentOS8•OpenSUSE•RHEL8*Ubuntu16.04•Ubuntu18.04•Ubuntu20.04 |
Linuxデスクトップアプリ | Skype•Spotify•VLC3 |
現代のユーティリティ | バット*エクサ |
ネットワークユーティリティ | NetHogs*dig*ホスト*ip•nmap |
OpenVPN | CentOS7•CentOS8•Debian10•Debian8/9•Ubuntu18.04•Ubuntu20.04 |
パッケージマネージャ | apk•apt |
プロセス管理 | bg•chroot•cron•disown•fg•glances•gtop•iotop•jobs•killall•kill•pidof•pstree*pwdx•time*vtop |
検索 | ag•grep*whereis*which |
シェルビルトイン | compgen*echo*printf |
テキスト処理 | カット*rev |
ユーザー情報 | グループ*id•lastcomm • 最後の*lid/libuser-lid*logname*メンバー*ユーザー*whoami*who•w |
WireGuard VPN | Alpine*CentOS8•Debian10•ファイアウォール•Ubuntu20.04 |