단일 프로세스의 CPU 사용량을 주기적으로 가져옵니다.

단일 프로세스의 CPU 사용량을 주기적으로 가져옵니다.

kswapd0프로세스(pid 52)가 때때로 CPU의 25%(전체 코어 1개)를 사용하기 시작하는 문제에 직면했습니다 . 나는 보통 다음 명령을 사용하여 이를 중지합니다 sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"(이 문제에 대한 IBM 페이지 참조,여기).

kswapd0이 3초 이상 22% 이상의 CPU를 계속 사용할 때마다 이 명령을 실행하는 감시 장치를 설정하고 싶습니다. 그래서 kswapd0 CPU 사용량을 주기적으로 효율적으로 얻고 싶습니다.


다음은 현재 즉각적인 CPU 사용량을 얻기 위해 사용하는 명령입니다.

위에서 얻은 정보는 다음과 같습니다.

top -bn1 -p $(pgrep kswapd0)

마지막 줄에서 %CPU 값을 추출하기 위해 출력을 sed로 파이프했습니다.

... | tail -n1 | sed -r 's/^ *([^ ]+ +){8}([^ ]+)( +[^ ]+){3}/\2/'

대화형 모드에서 표시된 CPU 사용량은 top새로 고침 사이의 평균 CPU 사용량이라는 것을 알고 있지만 상단에 대한 단일 호출에 대한 것이 무엇인지는 알 수 없습니다.

ps -p $PID -o %CPU인쇄되는 평균 CPU 사용량은 (마지막 몇 초가 아닌) 전체 프로세스 수명 동안 수행되기 때문에 이는 내 문제에 적합하지 않습니다.

더 간단한 기술을 사용하여 CPU 사용량을 얻는 방법은 무엇입니까? (더 적절한 것)

관련 정보