![Zusammenfassung:](https://rvso.com/image/36008/Zusammenfassung%3A.png)
Frage: Wie können wir die tatsächliche Speichernutzung melden (ohneden Cache!) mitnmonodervmstatodersvmonauf AIX 6?
nmon:
vmstat:
svmon:
Wie unter Linux können wir den Befehl „free“ verwenden, aber er ist unter AIX nicht verfügbar:
[user@notebook ~]$ free -m
total used free shared buffers cached
Mem: 7797 4344 3453 0 219 2745
-/+ buffers/cache: 1379 6417
Swap: 2047 0 2047
[user@notebook ~]$ free -m | grep cache: | awk '{print $3}'
1379
[user@notebook ~]$
Antwort1
Kurzfassung: Sehen Sie sich die verwendeten clnt
+ pers
Seiten in der svmon -G
Ausgabe an (die Einheit besteht aus 4.000 Seiten), wenn Sie den gesamten Dateicache wissen möchten, oder sehen Sie sich die vmstat -v
„Dateiseiten“ für den Dateicache ohne ausführbare Dateien an (dieselbe Einheit).
Wenn Sie einen guten Überblick über die aktuellen Geschehnisse haben möchten, sollten Sie sich den folgenden Artikel ansehen:Übersicht über den AIX-Seitenersatz.
Um es ganz kurz zusammenzufassen: Der Speicher in AIX wird auf zwei Arten klassifiziert:
Arbeitsgedächtnis vs. permanentes Gedächtnis
Der Arbeitsspeicher besteht aus Prozessspeicher (Stack, Heap, gemeinsam genutzter Speicher) und Kernelspeicher. Wenn dieser Speichertyp ausgelagert werden muss, wird er in den Swap-Speicher verschoben.
Permanenter Speicher ist der Dateicache. Wenn dieser ausgelagert werden muss, wird er in das Dateisystem zurückgesendet, aus dem er stammt (bei schmutzigen Seiten werden saubere Seiten einfach recycelt). Dies ist in Nicht-Client-Seiten (oder persistente Seiten) für JFS-Dateisysteme und Client-Seiten für JFS2, NFS und möglicherweise andere unterteilt.
Rechnerische vs. nicht-rechnerische Seiten.
Berechnungsseiten sind wiederum Prozess- und Kerneldaten sowie Prozesstextdaten (d. h. Seiten, die die ausführbare Datei/den Code zwischenspeichern).
Nicht rechnergestützt sind die anderen: Dateicache, der nicht ausführbar ist (oder gemeinsam genutzte Bibliothek).
svmon -G
( svmon -G -O unit=MB
ist übrigens etwas benutzerfreundlicher) zeigt Ihnen die Arbeits- und Dauerspeicherseiten. Die work
Spalte ist, nun ja, der Arbeitsspeicher. Den Dauerspeicher erhalten Sie, indem Sie die Spalten pers
(JFS) und clnt
(JFS2) addieren.
In Ihrem Fall verfügen Sie über etwa 730 MB permanente Seiten, die von Ihren Dateisystemen unterstützt werden (186151*4k Seiten).
Jetzt zeigt das topas
„Widget“ oben rechts FileSystemCache (numperm)
etwas leicht anderes an, und Sie würden dieselben Daten mit erhalten vmstat -v
: das sind nur nicht rechnerische permanente Seiten. Also dasselbe wie oben, aber ohne Seiten für ausführbare Dateien.
In Ihrem Fall sind das etwa 350 MB (2,2 % von 16 G).
So oder so, das ist wirklich nicht viel Cache.
Antwort2
Der Befehl, nach dem Sie suchen, ist (meiner Meinung nach):
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Die wichtigsten Optionen sind hier:
- „Filtertyp=funktioniert“ # auch bekannt als „kein Cache“;
- 'segment=off' # eigentlich Standard bei Verwendung von -O
- 'filtercat=exclusive' # schließt derzeit keinen gemeinsam genutzten Speicher oder Kernel ein
- 'Einheit=MB' # wer möchte anhand der Seitenanzahl berechnen??
Und Sie sollten sich andere Optionen wie -C (bezogen auf den Befehlsnamen, einige Beispiele unten) und vielleicht -U (bezogen auf den Benutzer) ansehen.
++++ Beginn des Kommentars ++++
Einfügen, was ich als Kommentar zu Ihrer Frage eingegeben hätte, aber mir fehlt der Ruf – als neuer Benutzer hier.
Ihre vmstat-Ausgabe verrät mir mehr als nur Ihre aktuelle Situation – da es sich um eine einzeilige Ausgabe handelt, ist sie historisch – und ich vermute, dass Sie Speicherprobleme hatten, da sie einen Verlauf von pi/po (Paging Space Page In/ Paging Space Pageout) anzeigt.
Andere interessante Spalten sind die fr/sr-Spalten:
- fr: von lrud (least recently used daemon, auch bekannt als Page Stealer) freigegebene Seiten
- sr: Seiten von lrud gescannt/durchsucht auf der Suche nach einer „alten“ Seite
- sr/fr: Verhältnis, das ausdrückt, wie viele Seiten "gescannt" werden müssen, um 1 freizugeben
Was ich als problematisch erachte, sind die hier angegebenen Pi/Po-Werte, die überhaupt nicht mit den Daten aus den anderen Befehlen übereinstimmen. Zudem gibt es hier keine Betriebszeit, sodass schwer zu sagen ist, was für ein „Test“ diese Zahlen generiert hat.
- pi: Paging-Bereich einlesen (d. h. Anwendungsspeicher aus Paging-Bereich lesen)
- po: Speicher stehlen und Anwendungsspeicher (auch Arbeitsspeicher genannt) in den Paging-Bereich schreiben – nur der Arbeitsspeicher geht in den/aus dem Page-Bereich
In Ihrer Präsentation zeigen Sie pi=22 und po=7. Das bedeutet, dass das System im Durchschnitt dreimal häufiger Informationen aus dem Paging-Speicher gelesen hat (nachdem sie geschrieben worden waren), als es Daten geschrieben hat. Das ist ein Hinweis auf ein ausgehungertes System, weil Daten eingelesen (pi) und dann wieder gestohlen (sr/fr) werden, bevor sie überhaupt berührt (referenziert, d. h. verwendet) werden – oder eingelesen und wieder entfernt, bevor die darauf „wartende“ Anwendung überhaupt die Möglichkeit hat, darauf zuzugreifen.
Kurz gesagt, die angezeigten Daten sind nicht mit den „schmerzhaften“ Momenten „synchronisiert“, obwohl dies erklären könnte, warum derzeit nur 2,2 % Ihres Speichers für das Caching verwendet werden (es kann sogar „rechnerisch bedingt sein, d. h. die geladenen Programme“).
So weit wievmstatIch schlage auch die Flags -I (großgeschrieben:i, das ‚fi‘ und ‚fo‘ hinzufügt – FileIn- und FileOut-Aktivität) und -w (wide) vor, damit die Zahlen besser unter den Textüberschriften positioniert sind.
++++ Ende des 'Kommentars'
Sehen wir uns also einen Auszug mit -P (Prozessansicht) an.
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB | head -15
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
14614630 httpd 21.5 0.06 0 21.5
11272246 httpd 21.4 0.06 0 21.4
12779758 httpd 21.2 0.06 0 21.2
17760476 httpd 20.9 0.06 0 20.9
11796712 httpd 20.8 0.06 0 20.8
17039454 httpd 20.6 0.06 0 20.6
11862240 httpd 20.6 0.06 0 20.6
14680090 httpd 20.5 0.06 0 20.5
10747970 httpd 20.5 0.06 0 20.5
11141286 httpd 20.5 0.06 0 20.5
4718766 mysqld 13.6 0.02 0 13.6
Wenn Sie kein Root sind, sehen Sie nur die Befehle in Ihrer Umgebung.
$ svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
5505172 svmon 10.7 0.19 0.44 11.4
6553826 ksh 0.57 0.02 0 0.57
9175288 ksh 0.55 0.02 0 0.55
12910710 sshd 0.55 0.02 0 0.55
15204356 sshd 0.52 0.02 0 0.52
12779760 head 0.18 0.02 0 0.18
Möglicherweise möchten Sie sich einen bestimmten Befehl ansehen. Wechseln Sie daher zurück zu root, um httpd anzusehen.
Zusammenfassung:
svmon -C httpd -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 227.44 0.69 0 227.44
Details: Auszug
# svmon -C httpd -O filtertype=working,segment=category,filtercat=exclusive,unit=MB >
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 230.62 0.81 0 230.62
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
230.62 0.81 0 230.62
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
81a203 3 work working storage m 24.6 0 0 24.6
parent=883990
8b82d7 3 work working storage m 18.8 0 0 18.8
parent=834226
8b9d37 3 work working storage m 18.2 0 0 18.2
parent=884fb0
8915f2 f work shared library data m 2.00 0 0 2.00
parent=898373
89abb3 f work shared library data m 2.00 0 0 2.00
parent=84b9a9
824ea4 f work shared library data m 2.00 0 0 2.00
Dies stellt das „Segment=Kategorie“ nicht gut dar, daher verwenden wir jetzt einen einfacheren Befehl – tail – und zeigen eine Zusammenfassung und Einzelheiten zu jedem Speichersegmenttyp an – aber immer noch nur den „Arbeitsspeicher“ (also kein Caching).
# svmon -C tail -O filtertype=working,segment=category,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
tail 82.5 52.6 5.12 90.6
...............................................................................
SYSTEM segments Inuse Pin Pgsp Virtual
34.1 33.1 2.38 35.8
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 34.1 33.1 2.38 35.8
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
0.18 0.02 0 0.18
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
88b4f1 f work working storage sm 0.09 0 0 0.09
82d005 2 work process private sm 0.07 0.02 0 0.07
8e0c9c 3 work working storage sm 0.02 0 0 0.02
...............................................................................
SHARED segments Inuse Pin Pgsp Virtual
48.2 19.5 2.75 54.6
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
9000 d work shared library text m 48.2 19.5 2.75 54.6
Antwort3
nmon und dann "m" drücken zeigt Ihnen schnell ein paar großartige Verwendungsmöglichkeiten des Speichers
ipcs -am
Der gemeinsam genutzte Speicher, der von vielen Anwendungen wie DB2 und Oracle verwendet wird – überprüfen Sie die SEGSZ auf die Größe des ipcs -am
Befehls. Die Spalte „Eigentümer“ gibt normalerweise an, wofür der Speicher verwendet wird, z. B. der Oracle-Benutzer für den SGA oder db2inst1 für den DB2-Puffercache.
Dann liegt es an den Prozessen, und das wird knifflig. Alle Prozesse, die dieselbe Programmdatei ausführen, teilen sich die Codeseiten als schreibgeschützt. Sie teilen sich möglicherweise auch einige oder fast alle Daten- und Sack-Seiten, wenn die Prozesse von einem gemeinsamen Prozess gestartet wurden, der sich dann aufgespalten hat, wie zum Beispiel RDBMS und Dinge wie Apache. Dies gilt auch für die Dutzenden von Bibliotheken, die Prozesse ebenfalls benötigen und die für uns weitgehend unsichtbar sind.
Aufgrund dieser unbekannten gemeinsamen Nutzung kommt es häufig vor, dass die Summe des Speichers aller Prozesse offensichtlich viel größer ist als der tatsächliche Arbeitsspeicher.
Wenn Sie nmon
dann „t“ für Top-Prozesse und dann „4“ zum Sortieren nach Prozessgröße verwenden, wird der Prozessspeicher angezeigt.
- Größe KB = die Größe der Programmdatei auf der Festplatte.
- Resident Set Size = wie groß es im Speicher ist (ausschließlich der Seiten, die sich noch im Dateisystem befinden (wie Code) und einiger Teile auf Auslagerungsfestplatten).“
- Spalte ResText enthält die Codepages des Resident Set
- Die Spalte ResData enthält die Daten- und Stapelseiten des Resident Set
Antwort4
Der topas
Befehl zeigt den realen Arbeitsspeicher und den Prozentsatz des Computerspeichers an. Er sollte unter AIX standardmäßig verfügbar sein und ähnelt dem top
unter Linux (bietet aber viel mehr Informationen).
Beim Starten topas
werden standardmäßig zahlreiche Informationen angezeigt (Prozesse mit der höchsten CPU-Auslastung, Übersicht über die Speicherauslastung usw.) und beim Drücken hwird ein Inline-Hilfetext mit anderen Tasten und deren Funktion angezeigt (wenn Sie beispielsweise cmehrmaliges Drücken ausführen, werden verschiedene Möglichkeiten zur Anzeige der CPU-Auslastung durchlaufen).