어떤 응용 프로그램/프로세스가 스왑을 사용하고 있는지 확인하는 가장 좋은 방법은 무엇입니까?

어떤 응용 프로그램/프로세스가 스왑을 사용하고 있는지 확인하는 가장 좋은 방법은 무엇입니까?

16G RAM과 8G 스왑 파티션이 있습니다. 저는 유니티 17.04를 실행하고 있습니다. buff/cache11M으로 가고 약 3500으로 가는 문제가 있습니다 swap used. 이전에는 스왑 공간을 거의 사용하지 않았고 버프/캐시를 모니터링한 적이 없습니다.

나는 그것이 메모리 누수가 있는 응용 프로그램이라고 생각하지만 틀릴 수도 있습니다.

간단한 질문입니다. 애플리케이션/프로세스가 스왑을 사용하고 있거나 사용하고 있는지 쉽게 확인할 수 있는 방법이 있습니까?

여기에 이미지 설명을 입력하세요

답변1

다음 명령을 통해 특수 프로세스가 스왑 파티션을 얼마나 많이 사용하는지 확인할 수 있습니다.

cat /proc/"PID"/status | grep "^VmSwap"

PID그리고 다음 명령으로 찾을 수 있습니다 .

ps -A | grep "Application_name"

그러나 스왑 파티션을 사용하는 프로세스를 찾으려면 다음 스크립트를 사용할 수 있습니다.

#!/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

그런 다음 스크립트에서 반환된 PID에서 애플리케이션 이름을 찾을 수 있습니다.

업데이트: 이 스크립트를 10초마다 로그 파일을 생성하도록 변경했으며(시간 변경 가능) 해당 파일에서 이 스크립트를 실행한 순간부터 지금까지 많은 프로세스를 볼 수 있습니다.

#!/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

그리고 이 스크립트가 다음에서 실행되도록 설정할 수 있습니다.시작그래서 매번 로그를 생성합니다.

관련 정보