Bitte beachten Sie, dass sich diese Frage nur auf bezieht linux
. Und mit swap space
meine ich die dedizierten swap partition
.
Ich habe google
ein 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/vmstat
gegenseitig aus? Damit meine ich, enthält der Parameter pswpin
einige Zählungen von pgpgin
oder umgekehrt? Was genau passiert, wenn ein Prozess ist deactivated
? Wenn alle seine Seiten in den swap
Speicherplatz verschoben werden, worin besteht dann der genaue Unterschied zu mehreren pageouts
? Und wenn pagein
immer ein Seitenfehler auftritt, was kann man dann über die beiden anderen Parameter pgmajfault
und pgfault
in Bezug auf dieses Ereignis sagen? Ist es so, dass immer, wenn ein pagefault (major? minor?)
auftritt, auch ein Entsprechendes pagein
auftritt?
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
- pgpgin – Anzahl der Kilobyte, die das System pro Sekunde von der Festplatte ausgelagert hat.
- pgpgout – Anzahl der Kilobyte, die das System pro Sekunde auf die Festplatte ausgelagert hat.
- pswpin – Anzahl der Kilobyte, die das System pro Sekunde von der Festplatte ausgelagert hat.
- pswpout – Anzahl der Kilobyte, die das System pro Sekunde auf die Festplatte ausgelagert hat.