![まとめ:](https://rvso.com/image/36008/%E3%81%BE%E3%81%A8%E3%82%81%EF%BC%9A.png)
質問: 実際のメモリ使用量をどのように報告するか(それなしキャッシュ)を使用してンモンまたはvmstatまたはsvmonAIX 6 では?
いや:
vmstat:
svmon:
Linux と同様に、free コマンドを使用できますが、AIX では使用できません。
[user@notebook ~]$ free -m
total used free shared buffers cached
Mem: 7797 4344 3453 0 219 2745
-/+ buffers/cache: 1379 6417
Swap: 2047 0 2047
[user@notebook ~]$ free -m | grep cache: | awk '{print $3}'
1379
[user@notebook ~]$
答え1
短縮版:すべてのファイル キャッシュを知りたい場合は、出力のin use clnt
+ pers
pages (単位は 4k ページ) を確認します。または、実行可能ファイルを除いたファイル キャッシュの場合は、「file pages」 (単位は同じ) を確認します。svmon -G
vmstat -v
何が起こっているのか概要を知りたい場合は、次の記事を参照してください。AIX ページ置換の概要。
非常に簡単にまとめると、AIX のメモリは次の 2 つの方法で分類されます。
作業記憶と永続記憶
作業メモリは、プロセス (スタック、ヒープ、共有メモリ) とカーネル メモリです。この種類のメモリをページ アウトする必要がある場合は、スワップに送られます。
永続メモリはファイル キャッシュです。ページ アウトする必要がある場合は、元のファイル システムに戻されます (ダーティ ページの場合、クリーン ページはリサイクルされます)。これは、JFS ファイル システムの非クライアント (または永続) ページと、JFS2、NFS、その他のクライアント ページに分割されます。
計算ページと非計算ページ。
計算ページは、プロセスとカーネルのデータ、およびプロセス テキスト データ (つまり、実行可能ファイル/コードをキャッシュするページ) です。
非計算的なものとしては、実行可能ではないファイル キャッシュ (または共有ライブラリ) などがあります。
svmon -G
(ちなみに、svmon -G -O unit=MB
こちらの方が少しわかりやすいです) 作業ページと永続ページを比較できます。列は、作業メモリです。永続メモリは、(JFS) 列と(JFS2) 列work
を合計すると得られます。pers
clnt
あなたの場合、ファイルシステムによってバックアップされた約 730 MB の永続ページ (186151 * 4k ページ) があります。
topas
右上の「ウィジェット」にはFileSystemCache (numperm)
若干異なるものが表示され、 で同じデータを取得できますvmstat -v
。これは非計算用の永続ページのみです。つまり、上記と同じですが、実行可能ファイルのページは除外されます。
あなたの場合、それは約 350MB (16G の 2.2%) になります。
いずれにせよ、それは実際には大したキャッシュではありません。
答え2
あなたが探しているコマンドは(私見ですが)次のとおりです。
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
ここでの主なオプションは次のとおりです。
- 'filtertype=working' # つまり、キャッシュなし。
- 'segment=off' # -O 使用時のデフォルト
- 'filtercat=exclusive' # 共有メモリやカーネルのATMは含めない
- 'unit=MB' # ページ数から計算したい人はいますか??
また、-C(コマンド名関連、以下にいくつかの例)や-U(ユーザー関連)などの他のオプションも確認する必要があります。
++++ コメント開始 ++++
あなたの質問に対するコメントとして入力したはずの内容を挿入しますが、ここでは新規ユーザーとして評判が足りません。
vmstat の出力は、現在の状況だけでなく、単一行の出力であるため履歴も示しています。pi/po (ページング スペース ページイン/ページング スペース ページアウト) の履歴が示されているため、メモリの問題が発生していると思われます。
他に興味深い列は fr/sr 列です。
- fr: lrud (最も最近使われていないデーモン、別名ページ スティーラー) によって解放されたページ
- sr: lrud が「古い」ページを探してスキャン/検索したページ
- sr/fr: 1を解放するために何ページを「スキャン」する必要があるかを表す比率
私が問題だと考えているのは、ここで示されている pi/po 値です。これは他のコマンドのデータとはまったく一致していません。また、ここでは稼働時間もないため、何のために「テスト」でこれらの数値が生成されたかを知るのは困難です。
- pi: ページング スペースのページイン (つまり、ページング スペースからアプリケーション メモリを読み取る)
- po: メモリを盗み、アプリケーション(作業)メモリをページング スペースに書き込みます。ページ スペースとの間でやり取りされるのは作業メモリのみです。
プレゼンテーションでは、pi=22 および po=7 を示しています。これは、平均して、システムがページング スペースから (書き込まれた後に) 情報を読み取っていた回数が、データを書き込んだ回数の 3 倍だったことを意味します。これは、データが読み込まれ (pi)、その後、アクセス (参照、つまり使用) される前に再び盗まれ (sr/fr)、または、それを「待機」しているアプリケーションがアクセスする機会を得る前に再び読み込まれ、削除されるため、システムが不足していることを示しています。
つまり、提示されたデータは「苦痛」の瞬間と「同期」していません。ただし、メモリの 2.2% のみがキャッシュに使用されている理由を説明できるかもしれません (「計算、つまりロードされたプログラム」である可能性もあります)。
の限りvmstatまた、フラグ -I (大文字の i で、'fi' と 'fo' (fileIn と fileOut アクティビティ) を追加) と -w (ワイド) も提案します。これにより、数字がテキスト ヘッダーの下により適切に配置されます。
++++ コメント終了
それでは、-P(プロセスビュー)を使用して抜粋を見てみましょう。
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB | head -15
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
14614630 httpd 21.5 0.06 0 21.5
11272246 httpd 21.4 0.06 0 21.4
12779758 httpd 21.2 0.06 0 21.2
17760476 httpd 20.9 0.06 0 20.9
11796712 httpd 20.8 0.06 0 20.8
17039454 httpd 20.6 0.06 0 20.6
11862240 httpd 20.6 0.06 0 20.6
14680090 httpd 20.5 0.06 0 20.5
10747970 httpd 20.5 0.06 0 20.5
11141286 httpd 20.5 0.06 0 20.5
4718766 mysqld 13.6 0.02 0 13.6
root でない場合は、自分の環境内のコマンドのみが表示されます。
$ svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
5505172 svmon 10.7 0.19 0.44 11.4
6553826 ksh 0.57 0.02 0 0.57
9175288 ksh 0.55 0.02 0 0.55
12910710 sshd 0.55 0.02 0 0.55
15204356 sshd 0.52 0.02 0 0.52
12779760 head 0.18 0.02 0 0.18
特定のコマンドを確認したい場合、ルートに戻ってhttpdを確認します。
まとめ:
svmon -C httpd -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 227.44 0.69 0 227.44
詳細: 抜粋
# svmon -C httpd -O filtertype=working,segment=category,filtercat=exclusive,unit=MB >
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 230.62 0.81 0 230.62
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
230.62 0.81 0 230.62
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
81a203 3 work working storage m 24.6 0 0 24.6
parent=883990
8b82d7 3 work working storage m 18.8 0 0 18.8
parent=834226
8b9d37 3 work working storage m 18.2 0 0 18.2
parent=884fb0
8915f2 f work shared library data m 2.00 0 0 2.00
parent=898373
89abb3 f work shared library data m 2.00 0 0 2.00
parent=84b9a9
824ea4 f work shared library data m 2.00 0 0 2.00
これでは「セグメント=カテゴリ」がうまく表示されないので、より簡単なコマンド(tail)を使用して、各メモリ「セグメント」タイプの概要と詳細を表示しますが、依然として「作業」メモリのみです(つまり、キャッシュはありません)。
# svmon -C tail -O filtertype=working,segment=category,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
tail 82.5 52.6 5.12 90.6
...............................................................................
SYSTEM segments Inuse Pin Pgsp Virtual
34.1 33.1 2.38 35.8
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 34.1 33.1 2.38 35.8
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
0.18 0.02 0 0.18
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
88b4f1 f work working storage sm 0.09 0 0 0.09
82d005 2 work process private sm 0.07 0.02 0 0.07
8e0c9c 3 work working storage sm 0.02 0 0 0.02
...............................................................................
SHARED segments Inuse Pin Pgsp Virtual
48.2 19.5 2.75 54.6
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
9000 d work shared library text m 48.2 19.5 2.75 54.6
答え3
nmon と入力して「m」を押すと、メモリの大きな使用方法がいくつか表示されます。
ipcs -am
DB2 や Oracle などの多くのアプリケーションによって使用される共有メモリ - コマンドから SEGSZ のサイズを確認しますipcs -am
。通常、Owner 列には、SGA の oracle ユーザーや DB2 バッファ キャッシュの db2inst1 など、メモリが何に使用されているかが示されます。
次にプロセスについてですが、これは複雑になります。同じプログラム ファイルを実行するすべてのプロセスは、読み取り専用としてコード ページを共有します。また、RDBMS や Apache などのように、プロセスが共通のプロセスによって開始され、その後分岐した場合は、データ ページと sack ページの一部またはほぼすべてを共有することもあります。これは、プロセスが必要とし、私たちにはほとんど見えない多数のライブラリにも当てはまります。
この未知の共有により、すべてのプロセスのメモリをすべて合計すると、明らかにメモリよりもはるかに大きくなることがよくあります。
最上位プロセスに「t」を使用しnmon
、プロセス サイズの順序に「4」を使用すると、プロセス メモリが表示されます。
- サイズ KB = ディスク上のプログラム ファイルにあるサイズ。
- 常駐セット サイズ = メモリ内でのサイズ (ファイル システム内に残っているページ (コードなど) とページング ディスク上の一部は除く)"。
- ResText列はResident Setのコードページです
- ResData列は、Resident Setのデータとスタックページです。
答え4
このtopas
コマンドは、実際のメモリとコンピュータのメモリの割合を表示します。これは AIX ではデフォルトで使用可能であり、top
Linux の場合と似ていますが、より多くの情報を提供します。
起動すると、topas
デフォルトで多くの情報 (CPU を使用している上位のプロセス、メモリ使用量の概要など) が表示され、押すと、h他のキーとその機能を含むインライン ヘルプ テキストが表示されます (たとえば、c数回押すと、CPU 使用量を表示するさまざまな方法が切り替わります)。