web-dev-qa-db-ja.com

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

psのVSZはアプリに割り当てられた合計アドレス空間用であり、vsizeとしてエイリアスされる場合があることを知っています(Linuxのpsのmanページに記載されています)。topのVSIZEの定義は何ですか? 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
9
Ralph Wen

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

しばしばより良いユーティリティはfreevmstatです。 freeは、現在の全体的なメモリ消費量の詳細を提供し、vmstatを使用して、更新されている頻度を確認できます。

5
Nikhil Mulley