Ich habe einen Ubuntu 8.04-Server, auf dem eine Datenbank und eine Reihe von Java-Anwendungsservern ausgeführt werden. Die Speicherkonfiguration und -nutzung ist:
total used free shared buffers cached
Mem: 16456176 15930028 526148 0 81372 9674196
-/+ buffers/cache: 6174460 10281716
Swap: 1951888 366100 1585788
Mir ist aufgefallen, dass der Swap jeden Nachmittag steigt und irgendwann nachts wieder freigegeben wird. Die Nachfrage ist nicht an allen Tagen gleich und beginnt zu unterschiedlichen Zeiten. Es ist also ziemlich zufällig, abgesehen von der unscharfen Grenze zwischen Nachmittag und Nacht.
Die Belastung dieser Maschine variiert im Laufe des Tages. Es ist sehr niedrig zwischen Mitternacht und 6-7 Uhr, viel höher (aber stabil) bis 6-8 Uhr und fällt dann allmählich ab.
Jetzt habe ich folgende Fragen:
- Wie kann ich sehen, welche Prozesse Swap verwenden?
- Warum wird es vorgezogen, Speicher aus dem Cache zu entfernen, anstatt ihn auszutauschen?
NSWAP
Spalte finden (Ubuntu 16.04: /).Auf StackOverflow gibt es bereits eine hervorragende Antwort auf Ihre erste Frage ("Welcher Prozess verwendet tatsächlich Swap?").
https://stackoverflow.com/a/7180078/1442301
Kurz gesagt, Tools wie
top
oderhtop
liefern überhaupt keine genauen Informationen zur Auslagerungsnutzung. Sie sollten in den/proc
Ordner (in der Pseudodatei/proc/$PID/smaps
) eintauchen , um genauere Informationen zu erhalten.Der oben erwähnte Beitrag enthält ein kurzes Shell-Skript, um diese Informationen auf nette Weise wiederzugeben.
quelle
Mit
htop v1.01
drückte ich „S“ hinzufügenNSWAP
Spalte statt „F2“ (wie Gilles vorgeschlagen), dannColumns
>Available Columns
> undF5
es hinzuzufügen.quelle
Ohne Polling und Analysieren der Ausgänge von Werkzeugen wie
vmstat
,free
undtop
der beste Ort , um aussehen könnte crontabs des Root - Benutzer oder andere Benutzer auf dem System. Wenn die allgemeine Systemlast zu einem bestimmten Zeitpunkt zuverlässig ansteigt, besteht die Möglichkeit, dass ein Prozess in cron den Bedarf an Ressourcen verursacht. Andernfalls können Sie mit demscript
Dienstprogramm immer ein Ghetto-Wegwerfprotokoll erstellen , das nur alles aufzeichnet, was an das STDOUT gesendet wird.Wenn ich also ein einmaliges Wegwerfskript ausführen müsste, um die Ausgabe für eine spätere Überprüfung aufzufangen, würde ich in einem Terminal Folgendes eingeben:
und dann
und in einem anderen Terminal
und dann
und dann töte am nächsten Morgen beide
script
Aufrufe und passe die Ausgabe vontop
und anfree
Auch dies ist ein Ghetto-Ansatz, aber es klingt so, als ob Sie nur ein einziges Mal brauchen
Vielleicht möchten Sie auch die Ubuntu-Tauschanleitung lesen
quelle