Was ist der genaue Unterschied zwischen den Parametern (pgpgin, pswpin) und (pswpout, pgpgout) in /proc/vmstat?

Was ist der genaue Unterschied zwischen den Parametern (pgpgin, pswpin) und (pswpout, pgpgout) in /proc/vmstat?

Bitte beachten Sie, dass sich diese Frage nur auf bezieht linux. Und mit swap spacemeine ich die dedizierten swap partition.

Ich habe googleein bisschen daran herumgebastelt und Folgendes gefunden definitions:

Paging refers to writing portions, termed pages, of a process’ memory to disk.
Swapping, strictly speaking, refers to writing the entire process, not just part, to disk.
In Linux, true swapping is exceedingly rare, but the terms paging and swapping
often are used interchangeably.

Und

page-out: The system's free memory is less than a threshold "lotsfree" and unnused / least used pages are moved to the swap area.
page-in: One process which is running requested for a page that is not in the current memory (page-fault), it's pages are being brought back to memory.
swap-out: System is thrashing and has deactivated a process and it's memory pages are moved into the swap area.
swap-in: A deactivated process is back to work and it's pages are being brought into the memory.

Nun möchten Sie diese Frage vielleicht mit denen duplizieren, die nach den Unterschieden zwischen Paging und Swapping fragen. Aber ich möchte noch etwas mehr wissen. Schließen sich diese Zähler zu irgendeinem Zeitpunkt /proc/vmstatgegenseitig aus? Damit meine ich, enthält der Parameter pswpineinige Zählungen von pgpginoder umgekehrt? Was genau passiert, wenn ein Prozess ist deactivated? Wenn alle seine Seiten in den swapSpeicherplatz verschoben werden, worin besteht dann der genaue Unterschied zu mehreren pageouts? Und wenn pageinimmer ein Seitenfehler auftritt, was kann man dann über die beiden anderen Parameter pgmajfaultund pgfaultin Bezug auf dieses Ereignis sagen? Ist es so, dass immer, wenn ein pagefault (major? minor?)auftritt, auch ein Entsprechendes pageinauftritt?

Es wäre hilfreich, wenn einige Beispielprogramme/Benchmarks zum Testen dieser einzelnen Parameter vorgeschlagen würden.

PS: Ich werde vielleicht noch weitere Fragen hinzufügen/bearbeiten :)

Antwort1

Also eine alte Frage und bisher keine richtige Antwort.

Zunächst wird der Speicher von CPU und Kernel in sogenannte Seiten segmentiert. Die Seitengröße wird durch die CPU-Architektur vorgegeben. Viele Architekturen unterstützen mehrere verschiedene Seitengrößen, aber die gängigste Seitengröße in der x86_64-Architektur beträgt 4 KB. Die Parameter, von denen Sie sprechen, zeigen, wie viele Speicherseiten gelesen/auf die Festplatte geschrieben wurden und wie viele davon Swap-Seiten sind.

Denk daran, dassSeite inist eine normale Aktivität im Linux-Kernel. Es passiert fast jedes Mal, wenn Sie eine Binärdatei von der Festplatte (die nicht zwischengespeichert ist) in den Arbeitsspeicher laden – also jedes Mal, wenn Sie eine Anwendung starten.

Da Sie sich nicht immer um Pgin- und Pgout-Operationen kümmern müssen, wurden zusätzliche Zähler erstellt, die nur Informationen für den Swap enthalten – die Zähler pswpin und pswpout. Sie werden erhöht, wenn eine Speicherseite entweder in den Swap geschrieben oder aus dem Swap gelesen wird.

Auch dies ist kein Hinweis auf ein Problem, sondern weist nur unter bestimmten Umständen auf ein Problem hin, z. B. wenn Sie feststellen, dass sich diese Zahlen in kurzer Zeit stark ändern (normalerweise dann, wenn Ihr System nicht genügend Arbeitsspeicher hat).

Also kurz gesagt:

  • pgpgin, pgpgout - Anzahl der Seiten, die von der Festplatte gelesen und in den Speicher geschrieben werden. Normalerweise brauchen Sie sich nicht so sehr um diese Zahlen zu kümmern.
  • pswpin, pswpout - Sie möchten diese Zahlen möglicherweise zeitweise verfolgen (über ein Monitoring wie Prometheus). Wenn es Spitzen gibt, bedeutet dies, dass das System stark swapt und Sie ein Problem haben.

Antwort2

  1. pgpgin – Anzahl der Kilobyte, die das System pro Sekunde von der Festplatte ausgelagert hat.
  2. pgpgout – Anzahl der Kilobyte, die das System pro Sekunde auf die Festplatte ausgelagert hat.
  3. pswpin – Anzahl der Kilobyte, die das System pro Sekunde von der Festplatte ausgelagert hat.
  4. pswpout – Anzahl der Kilobyte, die das System pro Sekunde auf die Festplatte ausgelagert hat.

verwandte Informationen