vmstat -s コマンド・フィールドの意味、特に「ページ・ページング」および「ページ交換」

vmstat -s コマンド・フィールドの意味、特に「ページ・ページング」および「ページ交換」

ほとんどのフィールドは理解できますが、「ページイン」と「ページイン」の違いを説明できる人はいますか?スワップは、プロセス全体がハードドライブのスワップ領域に移動することであり、ページングは​​特定のページがスワップ領域に移動されることを保証します。それでは、「ページイン」はメインメモリに移動されたプロセス部分に属するページであり、「ページイン」はメインメモリに移動されたプロセス全体に属するページを意味しますか?誰かがここで説明できますか?他の分野についても、より多くの情報があれば良いようです。ドキュメントを読みましたが、このコマンドと特定のオプションに関する有用な情報が見つかりませんでした。コマンド出力の例:

vmstat -s
       131072 K total memory
       125700 K used memory
        59836 K active memory
        49268 K inactive memory
         5372 K free memory
            0 K buffer memory
       101984 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
        18594 non-nice user cpu ticks
            0 nice user cpu ticks
        17990 system cpu ticks
    108464145 idle cpu ticks
         1121 IO-wait cpu ticks
            0 IRQ cpu ticks
            0 softirq cpu ticks
            0 stolen cpu ticks
       123672 pages paged in
       486324 pages paged out
            0 pages swapped in
            0 pages swapped out
            0 interrupts
      7439516 CPU context switches
   1457280256 boot time
       131927 forks

値を比較して理解しやすくするために、関連ファイルの出力は次のとおりです。以前のファイルと同時に撮影されました。

cat /proc/meminfo
MemTotal:         131072 kB
MemFree:            5404 kB
Cached:           101984 kB
Buffers:               0 kB
Active:            59820 kB
Inactive:          49268 kB
Active(anon):      11532 kB
Inactive(anon):    16920 kB
Active(file):      48288 kB
Inactive(file):    32348 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         28452 kB
Shmem:             21348 kB
Slab:              16544 kB
SReclaimable:      10580 kB
SUnreclaim:         5964 kB

答え1

プログラムを実行するには、プログラムをメモリにロードする必要があることを検討してください。特定の量の使用可能なアドレス空間があり、プログラムにはより多くのアドレス空間が必要です。使用可能なアドレス空間をページで除算します。これを仮想ページと呼びます。すべてのページをロードするのに十分な物理メモリがないと仮定し、これらの仮想ページを物理メモリにマップします。必要なページはすぐに読み込まれ、今すぐ不要なページは維持します。ただし、時が来たら、未使用のページをアンロードしてプログラムを実行するために必要なページをロードします。これは、ページングアルゴリズムが実行するアクションです。 「ページイン」と「ページアウト」が表示されます。

一方、スワップインまたはアウトは、プログラムを実行するのに必要なメモリ空間全体を処理します。プロセスが一部のリソースが利用可能になるのを待っている状態にあるとします。条件が満たされるまでメモリにロードする必要はありません。同時に、メモリの実行を待つ他のプロセスもあります。時が来ると、プロセス全体が交換され、再び交換されます。

大量の物理メモリを備えた最新のシステムを考えると、ほとんどのシステムでは、スワッピングは過去のものです。

もちろん、アルゴリズム(ページングおよび/またはスワッピング)もそれほど単純ではありません。これは唯一の足の概要です。ウェブ上の他の場所でこれについての詳細を読むことができます。

答え2

/proc/vmstat(Linux 2.6.0以降)

このファイルにはさまざまな仮想メモリ統計が表示されます。ファイルの各行には、スペースで区切られた名前と値のペアが含まれています。 ...詳細はカーネルソースコードで確認できます。 パスワード。 )

もちろん批判は安いですman 5 procが、いくつかのガイドライン/概要は歓迎されます。

mm/vmstat.c:

#ifdef CONFIG_VM_EVENT_COUNTERS
        /* enum vm_event_item counters */
        "pgpgin",
        "pgpgout",
        "pswpin",
        "pswpout",
         ...

(このセクションの前には、/* Node-based counters */他の設定(zone、Numa、writeback)と一緒にリストされていました。)

これらはすべてイベントカウンター、特定の瞬間にメモリ内のページ数ではありません

/proc/vmstat私が見たものの値を含む3つの主なイベントは次のとおりです(フォーマットされた数値を含む)。

    pgpgin           2'023'720
    pgpgout         32'622'399
    pswpin                   0
    pswpout                  0
    ...
    pgalloc_normal 753'397'448

銀行口座とは異なり、次のように言うことはできません。

money_now = money_in - money_out

MMは非常に複雑なためです。

私はスワップがプロセス全体をスワップ空間に移すことを意味すると確信しています。

ソースを確認する前にWikipediaも確認する必要があります。これはもともとの意図です。交換半世紀前。


Petrは、SuperUserに関する2016年の記事で、次のように書きました。

簡単に言うと:

pgpgin, pgpgout- ディスクから読み取ってメモリに書き込んだページ数、一般的にこの数字にあまり気にする必要はありません。

pswピン、pswpout- Prometheusなどの一部の監視では、毎回この数字を追跡したい場合があります。スパイクがあると、システムが大量に交換され、問題があることを意味します。

vmstat 1 5また監視:毎秒5秒、合計値sisoページ合計ではないバイト差))

ピーター:古すぎる質問なので、今まで正解はありません。

関連情報