-
14.08.2021, 18:03 #1
Hi! Ich möchte herausfinden, wie viel RAM/Arbeitsspeicher ein Prozess auf meinem Linux wirklich verbraucht. Als Beispiel der Chromium Browser. Mein erster Versuch war über ps. Die Ergebnisse waren unrealistisch.
Code:ps -u $USER -o rss,comm | awk '$NF~/^chromium/ {sum+=$1} END {printf "%.1f MB\n",sum/1024}' 628.1 MB
Code:free -h total used free shared buff/cache available Mem: 3,7Gi 297Mi 3,0Gi 102Mi 472Mi 3,2Gi
Je nachdem, wie man es betrachtet, meldet ps nicht den tatsächlichen Speicherverbrauch von Prozessen. Vielmehr zeigt es an, wie viel Speicher jeder Prozess tatsächlich beanspruchen würde, wenn er der einzige laufende Prozess wäre. Natürlich laufen auf einem typischen Linux-Rechner zu jeder Zeit mehrere Dutzend Prozesse, was bedeutet, dass die von ps gemeldeten VSZ- und RSS-Zahlen mit ziemlicher Sicherheit falsch sind.
Mit ps oder ähnlichen Tools erhalten Sie nur die Anzahl der von diesem Prozess belegten Speicherseiten. Diese Zahl ist korrekt, aber:
- spiegelt nicht die tatsächliche Menge des von der Anwendung verwendeten Speichers wider, sondern nur die Menge des für sie reservierten Speichers
- kann irreführend sein, wenn Seiten gemeinsam genutzt werden, z. B. von mehreren Threads oder durch die Verwendung dynamisch verknüpfter Bibliotheken
Code:#!/bin/bash #for pid in $(ps -ax | grep chromium-browser | awk '{print $1}'); do sudo pmap $pid | grep total | awk '{print $2}' | sed 's/K//g'; done totalMem=0 for pid in $(ps -ax | grep chromium-browser | awk '{print $1}') do mem=$(sudo pmap $pid | grep total | awk '{print $2}' | sed 's/K//g') if [ ! -z "$mem" ]; then totalMem=$(expr $totalMem + $mem) echo "$pid: $mem = $(expr $mem / 1024) MB" else echo "No memory found for pid $pid" fi done echo "Total: $totalMem = $(expr $totalMem / 1024) MB"
Code:3926: 461088 = 450 MB 3954: 215924 = 210 MB 3955: 215924 = 210 MB 3959: 215924 = 210 MB 3993: 284300 = 277 MB 4009: 257288 = 251 MB 4038: 307336 = 300 MB 4048: 231076 = 225 MB 4294: 351736 = 343 MB 4511: 339664 = 331 MB 4512: 262728 = 256 MB 4527: 319212 = 311 MB No memory found for pid 14262 Total: 3462200 = 3381 MB
Langsam bin ich mit meinen Latein am Ende, könnt ihr mir helfen wie ich den echten belegten Speicher eines Prozesses rausfinden kann?
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.