上部のVSIZEの値が、psのVSZ(仮想セットサイズ)の値と異なるのはなぜですか?


9

VSZ in psはアプリに割り当てられた合計アドレススペース用であり、vsize(pslinuxのmanページで説明されている)としてエイリアスされることもありますが、VSIZE inの定義は何topですか?iPhoneからのこのトップ出力は、Linuxのトップ出力とは異なります。

 PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS  RPRVT  RSHRD  RSIZE  VSIZE
 1875 emma         0.0%  0:30.83   7   139    932 17868K  5328K    29M   181M

root# ps -eo pid,rss,vsz|grep 1875
 1875  29324   441324

私のダーウィンマシンではこれを再現できません。彼らがiPhoneに設定したシェルに奇妙なブロックサイズが設定されていると思いますか?
多項式

彼らは同じ方法でRSIZE / rssを計算しているように見えますが、psは、topによって報告されたものよりも2.5倍大きいvszを報告しています。たぶんtopIOSではvsizeなどに共有オブジェクトが含まれていません。
Tim Kennedy、

「iPhoneのこのトップ出力はLinuxのトップ出力とは異なります」—驚きではありませんか?
2013年

回答:


5

Linuxメモリシステムは、メモリ最適化ユーティリティとメモリ共有の多くのルーチンで満たされているため、メモリがどのように共有および消費されているかという非常にわかりやすいアプローチをとっています.psおよびその他のps関連コマンドの出力はすべて、データからの出力を処理します/procファイルシステムの下。特にps、RSS(常駐メモリ)とVSIZE(仮想メモリサイズ)はどちらも重要ですが、VSIZEはメモリの正確な使用状況を表示せず、VSIZEとrssの違いは初期化中に実際に意図され、プログラムに割り当てられるものですが、まだ参照されていない可能性があります。プログラムと同様に、多くのライブラリがリンクされている可能性がありますが、実際のプログラムランタイムではまだ参照されていないため、まだ読み込まれていません。RSSは、プログラムによって実際に使用される合計メモリを提供しますが、割り当てられたメモリのほとんどは、同じプロセスまたは他のプロセスの他のインスタンスと共有される可能性があるため、メモリ消費の正確な状況を提供しない場合があります。下を見ると/proc/<processid>/maps、メモリがどのように使用されたかがおおまかにわかりますが、静かな場合は誤解を招くことがあります。使用するpmap -x <pid> コマンドラインから、広がりを確認するのに便利です。

多くの場合、より優れたユーティリティがあるfreevmstatfree全体的な現在のメモリ消費量の詳細が表示され、vmstatを使用して更新頻度を確認できます。


psが正しいプロセスメモリ使用量を提供していると見なすべきではない別の理由または慎重な説明。でこれを読んでvirtualthreads.blogspot.com/2006/02/...
ニキルMulley

2
この回答の投稿者が述べようとしていることは、使用されるメモリの定義は複雑で多様であるということです。追跡および報告されるカーネル内の単一の場所はありません。ユーティリティは、カーネルによって報告される多数の統計を独自に解釈します。
ヨハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.