Wie misst man den Speicherverbrauch einer Anwendung oder eines Prozesses in Linux?
In dem Blog-Artikel von Understanding memory usage on Linux ist ps
kein genau richtiges Tool für diesen Zweck.
Warum
ps
"falsch" istJe nachdem, wie man es betrachtet, meldet
ps
nicht den tatsächlichen Speicherverbrauch von Prozessen. Was es wirklich tut, ist zu zeigen, wie viel echten Speicher jeder Prozess einnehmen würde, wenn er der einzige laufende Prozess wäre. Natürlich hat eine typische Linux-Maschine zu jedem beliebigen Zeitpunkt mehrere Dutzend Prozesse laufen, was bedeutet, dass die vonps
gemeldeten VSZ- und RSS-Zahlen fast sicher falsch sind.
(Hinweis: Diese Frage wird <a href="https://stackoverflow.com/q/63166/15161">hier</a> sehr ausführlich behandelt.)
11 Stimmen
Diese Frage gehört wahrscheinlich heutzutage eher auf serverfault.com, obwohl es mir sagt, dass sie "zu alt zum Migrieren" ist. Möchte es allerdings nicht wirklich scließen...
0 Stimmen
Beziehen Sie sich auf diese Frage. stackoverflow.com/questions/669438/…
4 Stimmen
Tatsächlich zeigt
ps
nicht einmal das - es zeigt virtuelle und residente Speicherzahlen, wobei virtuelle die maximale Menge an Speicher ist, die der Prozess theoretisch nutzen könnte, wenn er der einzige Prozess wäre (niemals so), jede einzelne Seite, die er allokiert hat, verwendet (nie passiert) und keine Seiten abbildet oder abbildet oder entmappen (unwahrscheinlich). Während residente anzeigt, wie viel virtueller Speicher gerade physisch zugeordnet ist. Normalerweisevirt > Nutzung > res
jedoch auf einem 64-Bit-Systemvirt ~= res*10
ist es eine sehr große Bandbreite.9 Stimmen
Der Auszug aus dem verlinkten Artikel ist totaler Unsinn. Der RSS ist der tatsächlich verwendete physische Speicher, und der VSZ übersetzt möglicherweise nicht in die Verwendung von physischem Speicher, auch wenn der Prozess der einzige war, der lief.