ホームページ  >  記事  >  運用・保守  >  Linux メモリの表示と管理

Linux メモリの表示と管理

巴扎黑
巴扎黑オリジナル
2017-08-02 16:07:211673ブラウズ

システムメンテナンスのプロセス中、CPU使用率を随時確認し、対応する情報に基づいてシステムの状態を分析する必要がある場合があります。 CentOS では、top コマンドを使用して CPU 使用率を表示できます。 top コマンドを実行すると、CPU 使用状況が全画面表示および会話モードで表示されます。top ベースのコマンドを使用して、表示モードなどを制御できます。 top を終了するコマンドは q です (top の実行中に q キーを 1 回押します)。

top コマンドは、Linux で一般的に使用されるパフォーマンス分析ツールです。システム内の各プロセスのリソース使用状況をリアルタイムで表示できます。これは、Windows のタスク マネージャーに似ています

。top コマンドを使用して直接表示できます。 %MEMの内容。 oracle ユーザーのプロセス メモリ使用量を表示する場合は、次のコマンドを使用できます。
$ top -u oracle

内容の説明:

PID: ID。プロセス
USER: プロセスの所有者
PR: プロセスの優先レベル、小さいほど優先的に実行されます
NInice: 値
VIRT: プロセスが占有する仮想メモリ
RES: プロセスが占有する物理メモリプロセス
SHR: プロセスによって使用される共有メモリ
S: プロセスのステータス。 Sはスリープ状態、Rは実行中、Zはゾンビ状態、Nはプロセスの優先度の値が負の値であることを意味します
%CPU: プロセスが占有しているCPUの使用率
%MEM: 物理メモリと合計の割合プロセスが使用するメモリ
TIME+: プロセスが起動してからそのプロセスが占有するCPU時間の合計、つまりCPU使用時間の累積値。
コマンド: プロセス起動コマンド名

操作例:

コマンドラインに「top」と入力

to 起動します

top の全画面ダイアログモードは、システム情報バー、コマンドの 3 つの部分に分けることができます入力バー、プロセスリストバー。

最初の部分 - 上部のシステム情報バー:

最初の行 (上部):

「00:11:04」はシステムの現在時刻です

「3:35」はシステムの現在の時刻です。システムの起動時間、これまでの操作時間

「2 ユーザー」とは、現在システムにログインしているユーザー、より正確には、ユーザーがログインしている端末の数、つまり同じユーザーがシステム内の複数の端末に同時に接続していることを指します。時間はシステムへの複数のユーザーの接続とみなされ、ここでのユーザーの数も端末の数として表されます

「負荷平均」は現在のシステム負荷の平均であり、次の 3 つの値は1 分前、5 分前、15 分前のプロセスの平均値。一般に、この値が CPU の数を超えると、現在のシステムに含まれるプロセスを CPU がロードするのが困難になると考えられます。 ;

2行目(タスク):

「合計59」は現在のシステム内のプロセスの総数です。

「1 running」は現在実行中のプロセスの数です。待機状態; 「0 停止」は停止されたシステムプロセスの数; 「0 ゾンビ」は復元されたシステムプロセスの数

3行目(Cpus):

を表します。 CPU の現在の使用量:

4 行目 (Mem):

合計メモリ、現在の使用量、空きメモリ、およびバッファーによって使用されているメモリの量を表します。カテゴリは4行目(Mem)と同じですが、ここではスワップパーティション(Swap)の使用状況を反映しています。通常、スワップ パーティション (Swap) の頻繁な使用は、物理メモリの不足が原因であると考えられます。

2 番目の部分 - 中央部分の内部コマンド プロンプト バー:

top の実行中、top の内部コマンドを通じてプロセスの表示モードを制御できます。内部コマンドは次のとおりです。

s

- 画面更新頻度を変更します

l - 最初の部分の最初の行の先頭情報の表示をオフまたは有効にします

t - 2番目の部分をオフまたは有効にします最初の部分のTasksの行と3行目のCpus情報の表現

m - 最初の部分の4行目のMemとSwap情報の表現をオフまたは有効にします

N - プロセスリストを次の順序で並べますPID サイズ (第 3 部で後述) P - CPU 使用率を使用 プロセス リストをメモリ使用率の順に並べます (第 3 部で後述)

M - プロセス リストをメモリ使用量の順に並べます (第 3 部で後述)第三部)

h - ヘルプを表示

n - プロセスリストに設定 プロセス数を表示

q - トップ終了

s -

画面更新周期の変更

第三弾 - プロセスリスト下部のバー:

PIDで区別されるプロセスリストは設定画面に基づきます 更新時間は定期的に更新されます。ここでの表示方法は、次のように、上部の内部コマンド

pmap

によって制御できます (プロセス番号は ps を通じて確認できます)。 $ pmap -d 5647

ps

次の例に示すように:
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' ここで、rszは実際のメモリです
$ ps -e -o 'pid, comm, args,pcpu,rsz,vsz,stime,user,uid' | grep oracle sort -nrk

rsz が実際のメモリである場合、上記の例は、大きいものから小さいものへのメモリによるソートを実装します

Linux の free コマンドでメモリを表示します:
[root@scs-2 tmp]# free
52 2668236
-/+ バッファ/キャッシュ: 471116 2795064
スワップ: 2048276 80160 1968116

これらの値の説明は次のとおりです:

total : 物理メモリの合計サイズ。
used: 使用されたサイズ。
無料: 利用可能な数だけ。
共有: 複数のプロセスによって共有されるメモリの合計量。
Buffers/cached: ディスク キャッシュのサイズ。
3 行目 (-/+ バッファー/キャッシュ):
used: 使用された量。
無料: 利用可能な数だけ。
4行目については、あまり説明する必要はありません。
違い: 2 行目の使用/空き (mem) と 3 行目の使用/空き (-/+ バッファー/キャッシュ) の違い。 2 つの違いは使用量の観点にあります。最初の行は OS の観点からのもので、OS ではバッファー/キャッシュがすべて使用されるため、使用可能なメモリは 16176KB であり、使用済みメモリは 32​​50004KB です。 +buffers+cached は、+Application (X、oracle など) を使用してカーネル (OS) によって使用されます。3 行目は、アプリケーションの観点からは、buffers/cached は、Available と同じです。ファイル読み取りのパフォーマンスを向上させるため、アプリケーションがメモリを使用する必要がある場合、バッファ/キャッシュがすぐにリサイクルされます。
つまり、アプリケーションの観点から見ると、利用可能なメモリ = システムの空きメモリ + バッファ + キャッシュとなります。
上記の例のように:
2795064=16176+110652+2668236

次のステップは、メモリがいつ、どのような方法でスワップされるかを説明することです。 使用可能なメモリが定格値より少ない場合、スワップが発生します。 how評価の見方:

cat /proc /meminfo


[root@scs-2 tmp] SwapCached: 0 kB
アクティブ: 467236 kB

非アクティブ: 2644928 kB

HighTotal: 0 kB
HighFree: 0 kB
LowTotal : 3266 180 kB
LowFree: 17456 kB
SwapTotal: 2048276 kB
SwapFree: 1968116 kB
Dirty: 8 kB
ライトバック: 0 kB
マップ済み: 345360 kB
スラブ: 112344 kB
Committed_AS: 535292 kB
PageTables: 2340 kB
VmallocTotal: 53687 0911 kB
Vmallocused: 272696 kB
VmallocChunk: 536598175 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB

free -m を使用した結果:
[root@scs-2 tmp]# free -m
キャッシュされた使用済みバッファーの合計
Mem: 3189 3173 16 0 107 2605
-/+ バッファー/キャッシュ: 460 2729
スワップ: 2000 78 1921


/proc/kcore ファイル (メモリ イメージ) のサイズを表示します:
[root@scs-2 tmp]# ll -h /proc/kcore
-r-------- 1 root root 4.1G 6 月 12 日 12:04 /proc/kcore

備考:

メモリ占有量の測定

プロセスが占有しているメモリ量を測定するには、/proc ディレクトリが非常に便利な方法を提供します。 top などのツールもこれを使用して、対応する情報を取得します。

/proc/meminfo マシンのメモリ使用量情報

/proc/pid/maps pid はプロセス番号で、現在のプロセスが占有している仮想アドレスを示します。

/proc/pid/statm プロセスによって占有されているメモリ

[root@localhost ~]# cat /proc/self/statm

654 57 44 0 0 334 0

出力の説明

CPU と CPU0。 。 。各行の各パラメータの意味(最初の行を例にします)は次のとおりです。

パラメータの説明/proc//status

Size (pages) タスクの仮想アドレス空間のサイズ VmSize/4

Resident (pages) ) アプリケーションが実行されている 使用されている物理メモリのサイズ VmRSS/4

Shared(pages) 共有ページの数 0

Trs(pages) プログラムが所有する実行可能仮想メモリのサイズ VmExe/4

Lrs (pages) タスクにマッピングされた仮想メモリ メモリ空間ライブラリのサイズ VmLib/4

Drs(pages) プログラムデータセグメントとユーザーステートスタックのサイズ (VmData+VmStk) 4

dt(pages) 04

マシンの利用可能なメモリを表示します

/proc/28248/ >free

キャッシュされた使用済みの空き共有バッファの合計

Mem: 1023788 926400 97388 0 134668 503688

-/+ バッファ/キャッシュ: 288044 735744

スワップ: 1959920 8 9608 1870312

free コマンドでマシンの空きメモリを確認すると、free の値が非常に小さいことがわかります。これは主に、Linux ではメモリが無駄に使用されないという考えがあり、次回の利用を容易にするために、可能な限り一部のデータをキャッシュおよびバッファリングするためです。しかし実際には、これらの記憶はすぐに使用できます。

そのため、freememory=free+buffers+cached=total-used

topコマンドは、Windowsと同様に、システム内の各プロセスのリソース使用量をリアルタイムで表示できる、Linuxでよく使用されるパフォーマンス分析ツールです。タスクマネージャー。以下に詳しい使い方を説明します。

トップ - 16 日の 02:53:32、6:34、17 ユーザー、負荷平均: 0.24、0.21、0.24
タスク: 合計 481、実行中 3、スリープ 474、停止 0、ゾンビ 4
CPU : 10.3%us、1.8%sy、0.0%ni、86.6%id、0.5%wa、0.2%hi、0.6%si、0.0%st
Mem: 合計 4042764k、使用済み 4001096k、空き 41668k、バッファー 383536k
スワップ: 2k合計、7900k 使用、2096572k 空き、1557040k キャッシュ

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32497 jacky 20 0 669m 222m 3 1m R 10 5.6 29:27.62 firefox
4788 イーウィング 20 0 257m 18m 13m S 5 0.5 5:42.44 コンソール
5657 Liuxiaof 20 0 585m 159m 30m S 4 4.0 5:25.06 firefox
4455 xiefc 20 0 5 42m 124m 30m R 4 3.1 7:23.03 firefox
6188 リウシャオブ 20 0 191m 17m 13m S 4 0.5 0 :01.16 konsole


統計情報エリアの最初の 5 行は、システム全体の統計情報です。 1行目はタスクキューの情報で、uptimeコマンドの実行結果と同じです。内容は次のとおりです:

01:06:48 現在時刻
up 1:22 時:分形式のシステム実行時間
1 ユーザー 現在ログインしているユーザー数
負荷平均: 0.06、0.60、0.48 システム負荷、つまりタスクキューの平均長です。
3つの値は1分、5分、15分前から現在までの平均値です。


2行目と3行目はプロセスとCPUの情報です。複数の CPU がある場合、2 行以上かかる場合があります。内容は以下の通りです:

タスク: 合計 29 プロセスの総数
1 running 実行中のプロセスの数
28 sleep スリープ中のプロセスの数
0 stop 停止したプロセスの数
0 ゾンビ ゾンビ プロセスの数
Cpu(s): 0.3% us ユーザー空間の CPU 占有率
1.0% sy カーネル空間が占有する CPU パーセント
0.0% ni ユーザープロセス空間で優先順位が変更されたプロセスが占有する CPU パーセント
98.7% id アイドル CPU パーセント
0.0% wa CPU 待機時間の割合入力と出力用
0.0% こんにちは
0.0% si


最後の2行は記憶情報です。内容は以下の通りです:

Mem: 191272k total 合計物理メモリ
173656k used 合計物理メモリ使用量
17616k free 合計空きメモリ
22052k バッファ カーネルキャッシュとして使用されるメモリ
Swap: 192772k total 合計スワップ領域
0k used 合計量使用済みスワップ領域
192772k free 空きスワップ領域の合計量
123988k キャッシュ済み バッファリングされたスワップ領域の合計量。换 メモリの内容は交換領域に置き換えられ、その後メモリに置き換えられますが、使用時に使用される交換はまだカバーされていません
この値は、メモリ内に既に存在するこれらの内容のサイズです。 。
該当メモリを再度スワップアウトする場合、スワップ領域への書き込みは必要ありません。

プロセス情報エリアの統計情報エリアの下に、各プロセスの詳細情報が表示されます。まずは各列の意味を理解しましょう。

シリアル番号 カラム名 意味

a PID プロセスID
b PPID 親プロセスID
c RUSER 実ユーザー名
d UID プロセス所有者のユーザーID
e USER プロセス所有者のユーザー名
f GROUP プロセスのグループ名owner
g TTY 起動プロセスの端末名。ターミナルから開始されていないプロセスは、?
h PR priority
i NI nice value として表示されます。負の値は優先度が高いことを表し、正の値は優先度が低いことを表します
j P 最後に使用された CPU、マルチ CPU 環境でのみ意味があります
k %CPU 最後の更新以降に占有された CPU 時間の割合
l TIME CPUプロセスが使用する合計時間、単位は秒
m TIME+ プロセスが使用する合計 CPU 時間、単位は 1/100 秒
n %MEM プロセスが使用する物理メモリの割合
o VIRT プロセスが使用する合計仮想メモリ、単位は kb 。 VIRT=SWAP+RES
p SWAP スワップアウトされるプロセスによって使用される仮想メモリのサイズ (kb 単位)。
q RES プロセスによって使用され、スワップアウトされなかった物理メモリのサイズ (kb 単位)。 RES=CODE+DATA
r CODE 実行可能コードが占有する物理メモリのサイズ、単位 kb
s DATA 実行可能コード以外の部分(データセグメント + スタック)が占有する物理メモリのサイズ、単位 kb
t SHR のサイズ共有メモリ、単位 kb
u nFLT ページフォールトの数
v nDRT 最後の書き込み以降に変更されたページの数。
w S プロセスのステータス。
WCHAN プロセスがスリープ状態の場合、スリープ状態のシステムを表示します 関数名
z Flags タスクのフラグ、sched.h を参照


デフォルトでは、より重要な PID、USER、PR、NI、VIRT、RES、SHR、 S、%CPU、%MEM、TIME+、COMMAND 列が表示されます。表示内容は以下のショートカットキーで変更できます。
表示内容の変更 fキーを押すことで表示内容を選択できます。 f キーを押すと、列のリストが表示されます。a ~ z を押して、対応する列を表示または非表示にします。最後に Enter キーを押して確認します。
oキーを押して列の表示順序を変更します。小文字の a ~ z を押すと、対応する列が右に移動し、大文字の A ~ Z を押すと、対応する列が左に移動します。最後に Enter キーを押して確定します。
大文字の F または O キーを押してから、a ~ z を押して、対応する列でプロセスを並べ替えます。大文字の R キーは、現在の並べ替えを逆にします。


================================

トップコマンドの使用中に、次のコマンドを使用することもできます。いくつかの対話型コマンドは、他のパラメータの機能を完了します。これらのコマンドはショートカット キーを使用して起動します。
<スペース>:すぐに更新します。

P: CPU 使用率で並べ替えます。

T: 時間と累計時間に従って並べ替えます。

q: トップコマンドを終了します。

m: メモリ情報の表示を切り替えます。

t: プロセスと CPU ステータス情報の表示に切り替えます。

c: コマンド名と完全なコマンドラインの表示を切り替えます。
M: 使用されているメモリ サイズに応じて並べ替えます。
W: 現在の設定を ~/.toprc ファイルに書き込みます。これは、最上位の構成ファイルを作成する場合に推奨される方法です。

ご覧のとおり、top コマンドはシステムを監視するための非常に強力なツールであり、システム管理者にとって特に重要です。ただし、システム リソースを大量に消費するという欠点があります。

アプリケーション例
指定したユーザーを監視するには、top コマンドを使用します。デフォルトでは、すべてのユーザーのプロセスを監視します。指定したユーザーのステータスを確認したい場合は、ターミナルで「U」キーを押してユーザー名を入力すると、システムは指定したユーザーのプロセス実行インターフェイスに切り替わります。
a. Function
free コマンドはメモリ使用量を表示するために使用され、使用権限はすべてのユーザーに与えられます。
b.フォーマット
free [-b -k -m] [-o] [-s late] [-t] [-V]
c. 主要パラメータ
-b -k -m: それぞれバイト単位(KB、 MB) はメモリ使用量を単位で表示します。
-s 遅延: メモリ使用量を表示する秒数を表示します。
-t: メモリ合計列を表示します。
-o: バッファ調整欄を表示しません。
d.応用例
freeコマンドはメモリ使用量を確認するためのメインコマンドです。 top コマンドと比較して、このコマンドの利点は、使用が簡単で、使用するシステム リソースが非常に少ないことです。 -S パラメーターを使用すると、free コマンドを使用してメモリの使用量を継続的に監視できるため、便利なリアルタイム モニターとして使用できます。
#free -b -s5
このコマンドを使用すると、ターミナルはメモリ使用量 (バイト単位) を継続的に報告し、5 秒ごとに更新されます。

以上がLinux メモリの表示と管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。