Ich habe 16 GB RAM und eine 8 GB Swap-Partition. Ich verwende Unity 17.04. Ich habe ein Problem, bei dem mein buff/cache
Swap-Speicher auf 11 MB und mein swap used
Swap-Speicher auf etwa 3500 MB sinkt. Bisher habe ich fast nie Swap-Speicher verwendet und den Buff/Cache nie überwacht.
Ich glaube, dass es sich um eine Anwendung mit einem Speicherleck handelt, aber ich könnte mich irren.
Einfache Frage. Gibt es eine einfache Möglichkeit, festzustellen, welche Anwendung/welcher Prozess Swap verwendet oder verwendet hat?
Antwort1
Mit diesem Befehl können Sie ermitteln, in welchem Umfang ein spezieller Prozess die Swap-Partition nutzt:
cat /proc/"PID"/status | grep "^VmSwap"
PID
Und Sie können es mit diesem Befehl finden :
ps -A | grep "Application_name"
Wenn Sie jedoch herausfinden möchten, welche Prozesse die Swap-Partition verwenden, können Sie dieses Skript verwenden:
#!/bin/bash
for i in /proc/*/status ; do
vmswap=$(cat $i | grep "^VmSwap")
echo "$vmswap" | grep -qv ' 0 kB'
if [ $? == 0 ] && [ "$vmswap" != "" ] ; then
echo "$i : $vmswap"
fi
done
Anschließend können Sie den Anwendungsnamen anhand der vom Skript zurückgegebenen PID ermitteln.
Aktualisieren: Ich habe dieses Skript geändert, um alle 10 Sekunden eine Protokolldatei zu erstellen (Sie können die Zeit ändern) und in dieser Datei können Sie viele Prozesse vom Moment der Ausführung dieses Skripts bis jetzt sehen:
#!/bin/bash
counter=1
touch ~/swap_process_usage.log
while true ; do
echo -e "************************************\nSwap's process in count $counter " >> ~/swap_process_usage.log
for i in /proc/*/status ; do
vmswap=$(cat $i | grep "^VmSwap")
echo "$vmswap" | grep -qv ' 0 kB'
if [ $? == 0 ] && [ "$vmswap" != "" ] ; then
pid=$(echo "$i" | tr -d /proc/ | tr -d status)
proc_name=$(ps -p $pid -o comm=)
echo "$proc_name : $pid : $vmswap" >> ~/swap_process_usage.log
fi
done
sleep 10s
counter=$((counter+1))
done
Sie können das Skript so einstellen, dass es ausgeführt wird beiStart-updaher wird jedes Mal ein Protokoll erstellt.