12月 17, 2021

Linuxでメモリ使用率を確認する方法

すべてのGNU/Linux関連のFAQを参照してください

コマンドラインと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

linuxでメモリ使用率をチェックする方法
/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
linux proc meminfo file

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
VMモード(メモリおよびスワップ)のフィールドの説明)
フィールド 説明
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を保護する方法
  • ドメインが電子メールを送信していない場合は、スプーフィングやフィッシング

Patreonに参加⇒

  • ハードウェアと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)の使用率を見つける方法を学習しました。

🐧 Linux、オープンソース&DevOpsに関する最新のチュートリアルを
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

コメントを残す

メールアドレスが公開されることはありません。