19

からのデータを解析し/proc/[pid]/statmて、特定のプロセスのメモリ使用量についての手がかりを得ます。常駐セットのサイズ(「ページ」で測定) は、 の VmRSS (KB??) と同じであると述べていman procます。価値観が違うので、価値観のつながりを知りたいです。どこかで読める要素のようなものはありますか(VmPTEのことを考えましたが、それ以外...)?特定のプロセスで使用されているメモリのサイズを取得するには、どちらを解析する必要がありますか?/proc/[pid]/status/proc

#ex 1782 = firefox

~$ cat /proc/1782/statm
  224621 46703 9317 11 0 98637 0
#          \--- resident set size

~$ cat /proc/1782/status | grep Vm
  VmPeak:     935584 kB
  VmSize:     898484 kB
  VmLck:           0 kB
  VmHWM:      257608 kB
  VmRSS:      186812 kB
  VmData:     394328 kB
  VmStk:         220 kB
  VmExe:          44 kB
  VmLib:       61544 kB
  VmPTE:        1224 kB
  VmSwap:          0 kB
4

3 に答える 3

43

の RSS 値は/proc/<pid>/statページ数ですが、 の VmRSS 値は/proc/<pid>/statuskB 単位です。

あなたの場合、46703 * 4kB (ページサイズ) = 186812 kB です。

于 2013-06-19T09:07:40.623 に答える
21

私の理解では、VMは仮想メモリの量であり、RSSはその量がメモリに常駐していることです。それで、

仮想メモリ=物理メモリの一部+ディスクの一部

物理メモリの一部はRSSです。したがって、VSSはRSSよりも大きくする必要があります。それらがほぼ等しい場合、それはあなたのプロセスが記憶に快適に座っていることを意味します。VSSがはるかに大きい場合は、十分なメモリがなく、その一部をディスクにスワップアウトする必要があることを意味します(つまり、競合するプロセスなどのため)。

私のシステムでは、「man proc」を実行でき、次のように表示されます。

          * VmPeak: Peak virtual memory size.

          * VmSize: Virtual memory size.

          * VmLck: Locked memory size (see mlock(3)).

          * VmHWM: Peak resident set size ("high water mark").

          * VmRSS: Resident set size.

          * VmData, VmStk, VmExe: Size of data, stack, and text segments.

ピークメモリ使用量を報告する場合は、VmPeakのような仮想メモリが必要になる可能性があります。

お役に立てれば!

于 2012-05-01T16:32:17.473 に答える
11

状況に応じたproc状態のman ページstatm

/proc/[pid]/statm  
 Provides information about memory usage, measured in pages.  The columns are:  

  size       (1) total program size  
             (same as VmSize in /proc/[pid]/status)  
  resident   (2) resident set size  
             (same as VmRSS in /proc/[pid]/status)  
  share      (3) shared pages (i.e., backed by a file)  
  text       (4) text (code)  
  lib        (5) library (unused in Linux 2.6)  
  data       (6) data + stack  
  dt         (7) dirty pages (unused in Linux 2.6)  

しかし、それが述べられていないのは、ページ数で表されているsizeということです。resident

~$ cat /proc/1782/statm
  224621 46703 9317 11 0 98637 0
#          \--- resident set size

したがって、46703常駐セット サイズはページ数で 224621表され、仮想メモリ サイズもページ数で表されます。

これらを KB 単位で取得するには、ページ サイズを掛けます。(unistd.h で定義されている)を呼び出して、getconf PAGESIZEコマンドまたはプログラムでページ サイズを取得できます。これにより、ページサイズがバイト単位で表示されます。これを 1024 で割ると、ページ サイズが KB になります。C/C++sysconf(_SC_PAGE_SIZE)

例 :

$getconf PAGESIZE
4096

4096/1024 = 4KB

したがって、常駐セットのサイズ (KB) は 46703 x 4 = 186812 kB (VmRSS) です。
プログラムの合計サイズ (KB) は 224621 x 4 = 898484 kB (VmSize)

于 2016-12-07T19:18:29.317 に答える