리눅스/Performance

리눅스에서 각 프로세스별 swap 사용량 확인하기

G. Hong 2020. 3. 12. 14:11
728x90
반응형

리눅스에서 swap의 사용률이 높을 경우 어떤 프로세스에 의해서 swap이 높은지 확인할 수 있는 커맨드입니다. 복사 후 붙여넣기 하면 됩니다.

 

우선 기본적으로 swap의 전체 사용량은 top이나 /proc/meminfo를 통해서 확인이 가능합니다.

# top
# cat /proc/meminfo | grep Swap
SwapCached:       168744 kB
SwapTotal:       4194300 kB
SwapFree:         111668 kB

 

각 프로세스들의 swap 사용량 확인

# find /proc -maxdepth 2 -path "/proc/[0-9]*/status" -readable -exec awk -v FS=":" '{process[$1]=$2;sub(/^[ \t]+/,"",process[$1]);} END {if(process["VmSwap"] && process["VmSwap"] != "0 kB") printf "%10s %-30s %20s\n",process["Pid"],process["Name"],process["VmSwap"]}' '{}' \;

 

각 프로세스들을 swap 사용량 순서대로 정렬하여 출력

# find /proc -maxdepth 2 -path "/proc/[0-9]*/status" -readable -exec awk -v FS=":" '{process[$1]=$2;sub(/^[ \t]+/,"",process[$1]);} END {if(process["VmSwap"] && process["VmSwap"] != "0 kB") printf "%10s %-30s %20s\n",process["Pid"],process["Name"],process["VmSwap"]}' '{}' \; | awk '{print $(NF-1),$0}' | sort -h | cut -d " " -f2-

 

swap사용량 높은 10개만 순서대로 정렬하기

# find /proc -maxdepth 2 -path "/proc/[0-9]*/status" -readable -exec awk -v FS=":" '{process[$1]=$2;sub(/^[ \t]+/,"",process[$1]);} END {if(process["VmSwap"] && process["VmSwap"] != "0 kB") printf "%10s %-30s %20s\n",process["Pid"],process["Name"],process["VmSwap"]}' '{}' \; | awk '{print $(NF-1),$0}' | sort -hr | head | cut -d " " -f2-

 

swap사용량(용량,퍼센트) 높은 10개만 순서대로 정렬하기

# find /proc -maxdepth 2 -path "/proc/[0-9]*/status" -readable -exec awk -v FS=":" -v TOTSWP="$(cat /proc/meminfo | sed  -n -e "s/^SwapTotal:[ ]*\([0-9]*\) kB/\1/p")" '{process[$1]=$2;sub(/^[ \t]+/,"",process[$1]);} END {if(process["VmSwap"] && process["VmSwap"] != "0 kB") {used_swap=process["VmSwap"];sub(/[ a-zA-Z]+/,"",used_swap);percent=(used_swap/TOTSWP*100); printf "%10s %-30s %20s %6.2f%\n",process["Pid"],process["Name"],process["VmSwap"],percent} }' '{}' \;  | awk '{print $(NF-2),$0}' | sort -hr | head | cut -d " " -f2-

 

swap 사용량 top10을 사용량 순서대로 정렬하여서 표시

 

이렇게 확인된 사용량이 높은 pid는 ps커맨드를 통해서 자세한 정보를 확인한 뒤에 해당 프로세스를 종료하거나 수정을 하면 됩니다.

ps -ef | grep <pid>

 

728x90
반응형