it-swarm.com.de

Woher weiß ich, welcher Prozess Swap verwendet?

In meiner Fedora-Box ist viel Speicher verfügbar (ca. 4 GB), aber Swap wird verwendet (200 + M).

Ich frage mich, welcher Prozess Swap verwendet. Woher soll ich das wissen?.

ps und top zeigen nur die Speichernutzung an.

Danke im Voraus.

9
Wiky L

Von hier :

[a]/proc/meminfo - Diese Datei meldet statistische Daten zur Speichernutzung auf dem System . Es wird von free verwendet, um den freien und verwendeten Arbeitsspeicher (sowohl physisch als auch Swap) auf dem System sowie den gemeinsam genutzten Arbeitsspeicher und die vom Kernel verwendeten Puffer zu melden. Sie können auch free, vmstat Und andere Tools verwenden, um dieselben Informationen herauszufinden. 

[b] /proc/$ {PID}/smaps,/proc/$ {PID}/status und/proc/$ {PID}/stat : Verwenden Sie [.____. In diesen Dateien finden Sie Informationen zu Arbeitsspeicher, Seiten und Auslagerungen, die von für jeden Prozess unter Verwendung seiner PID verwendet werden.

[c] smem - Dieser Befehl (Python-Skript) meldet die Speichernutzung mit gemeinsam genutzten Speicher, der proportional aufgeteilt ist.

Sie können sich auch aufbeziehen, um herauszufinden, was mit Ihrem Swapverwendet wird.

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0

done
echo "Overall swap used: $OVERALL"
8
Rahul Tripathi

Verbesserung des Befehls cyberciti.biz, um eine präzisere Antwort zu zeigen:

(echo "COMM PID SWAP"; for file in /proc/*/status ; do awk '/^Pid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | grep -wv "0 kB" | sort -k 3 -n -r) | column -t

Eine Beispielausgabe:

COMM             PID    SWAP  
dockerd          662    2736  kB
skypeforlinux    26865  1320  kB
NetworkManager   303    1112  kB
slim             392    1028  kB
redis-server     350    204   kB
23
adrianlzt

Im /proc/'processPID'/status finden Sie diese Informationen im Feld VmSwap.

Mit diesem Befehl können Sie alle Prozesse auflisten, die Swap verwenden.

for file in /proc/*/status ; 
do 
awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; 
done

Referenz: http://www.cyberciti.biz/faq/linux-which-process-isusing-swap/

2
user2336876

Meine Verwendung von awk zur Ausgabe einer Nice-Tabelle nach Swap-Verwendung:

  awk 'function pr(){if (s ~ /^[1-9]/) print p,n,s;n="";p="";s=""}BEGIN{FS="\t *";OFS="\t"}/^Name:/{pr();n=$2}/^VmSwap:/{s=$2}/^Pid:/{p=$2}END{pr()}' /proc/*/status | sort -t $'\t' -k3 -n -r | column -t -s $'\t'

Basierend auf adrianlzt Antwort.

0
h0tw1r3