Questo post mostra come controllare l'utilizzo dello scambio di ogni processo, rispondendo "Come posso sapere quale processo consumerebbe lo spazio di scambio più grande?"
Per tutti i kernel
L'utilizzo dello scambio viene visualizzato come "Scambio ” colonne in /proc/[PID]/smaps . Questo indica la dimensione della memoria scambiata di ciascun intervallo di memoria, quindi la somma di tutti questi valori mostra l'utilizzo totale dello scambio del processo.
Ad esempio, il semplice script seguente calcola l'utilizzo totale dello scambio del processo che PID =1027:
# echo $((`grep Swap /proc/1027/smaps | awk '{ print $2; }' | tr '\n' '+'`0))
Per UEK2(2.6.39) o kernel successivi
È più semplice controllare l'utilizzo dello scambio di un processo specifico, basta selezionare "VmSwap colonna ” in /proc/[PID]/status . Ciò indica l'utilizzo totale dello spazio di scambio come un valore. Questa colonna non esiste in /proc/[PID]/status con kernel <2.6.39. Ad esempio, per ordinare i processi con l'utilizzo dello scambio da più grandi, esegui uno script di seguito:
# for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | more
Il valore mostrato/calcolato in questo post non indica una dimensione precisa dello spazio di swap utilizzato, ma ne indica solo uno approssimativo. Alcuni (come la libreria condivisa) potrebbero essere contati due volte e altri (come la cache di scambio) non vengono realmente scambiati.