5

procstat 出力の平和は次のとおりです。

  PID              START                END PRT  RES PRES REF SHD FL TP PATH
36502           0x400000           0x45d000 r-x   77    0  23  11 CN vn /usr/local/sbin/httpd
36502           0x65c000           0x660000 rw-    3    3   2   1 CN vn /usr/local/sbin/httpd
36502           0x660000           0x800000 rw-    5    4   2   1 CN sw
36502        0x80065c000        0x800693000 r-x   25    0  83  32 CN vn /libexec/ld-elf.so.1

RES (常駐ページ) とPRES (非公開常駐ページ)の主な違いは何ですか? 共有メモリとプライベートメモリに関するものですか?

そして、いわゆるマッピング フラグ(CN) があります。私が理解しているように、これらのフラグは、セグメントではなくコピーオンライトとしてマークされているページであるため、メモリセグメント全体ではなく、ページごとの基本に適用されます..では、なぜprocstatはセグメント全体に対してそれを表示したのですか?

もう 1 つの質問は 、この出力から、(Copy-On-Write プロセス中に) 実際にコピーされたページの量と、親プロセスに残っているページの量を把握できますか?

このすべてを理解するのを手伝ってくれませんか?私は非常に感謝します、ありがとう

4

1 に答える 1

0

procstat(1)詳細なプロセス情報を取得するための FreeBSD ユーティリティです。Linux 用の同様のツールが存在しますが、質問の出力とは異なる Linux 固有のフィールドがあります。Linux VM サブシステムのコンテキストではフィールドが意味をなさないため、この出力は FreeBSD システムから取得する必要があります。

特定の質問に答えるには:

  1. RES は常駐ページ数で、PRES はプロセスのプライベート シャドウ オブジェクトの常駐ページ数です [1]。シャドウ オブジェクトは、VM オブジェクトが複製されるときに作成されます [2]。プロセスは、ファイルをマップする他のプロセスやファイル自体に変更が表示されないように、プライベート コピーの作成を要求する場合があります [3]。
  2. マッピング フラグは、ページに直接ではなく、マップされたメモリ オブジェクトに適用されます。一部のオブジェクト タイプはコピー オン ライトではない場合がありますが、vnode とスワップ (出力に表示) はコピー オン ライトです。[1]
  3. あなたが求めているのは、「親と共有されているページの数と、ページの変更されたコピーがあるページの数は何ですか?」ということだと思います。この出力では、23 個の他の mmap オブジェクトが httpd テキストを参照していることがわかります。これらは子の httpd プロセスであり、このプロセスのデータ セグメントである可能性があります。[1]

参考文献

[1] http://freebsd.1045724.n5.nabble.com/proc-filesystem-td5719455.html

[2] https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KernelProgramming/vm/vm.html

[3] http://www.freebsd.org/cgi/man.cgi?query=mmap&sektion=2

于 2014-02-14T02:38:17.767 に答える