![Linux top -n 1 명령이 업데이트를 받지 못함](https://linux55.com/image/75917/Linux%20top%20-n%201%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%EB%A5%BC%20%EB%B0%9B%EC%A7%80%20%EB%AA%BB%ED%95%A8.png)
top -n 1 -b
유휴 CPU 비율을 얻기 위해 Qt 애플리케이션에서 Linux 명령을 호출하고 있습니다 . 앱이 3초마다 명령어를 호출하는데 CPU 사용량은 앱에서 명령어를 처음 호출할 때만 업데이트되는 것 같고 그 이후에는 그 값이 캐시에 저장되는 것 같습니다(CPU 사용량만, 다른 값은 모두 업데이트됩니다) 호출될 때마다). 콘솔에서 "top -n 2 -b" 명령을 수동으로 테스트하면 "라이브" CPU는 두 번째 반복 후에만 업데이트됩니다. CPU 값을 업데이트하기 위해 애플리케이션의 두 번째 반복을 기다릴 수 없으므로 첫 번째 반복에서 이 값을 업데이트하기 위해 수정할 수 있는 시스템 변수나 캐시가 있는지 궁금합니다.
답변1
각 top
반복에서는 /proc/stat
CPU 라인을 읽고 그 값을 이전에 읽은 값(첫 번째 반복에서 0이었던 값)과 비교합니다. 3초 전에 얻은 값과 비교하면 해당 3초 동안의 평균 CPU 상태 분포를 알 수 있습니다. 0과 비교하면 전체 시스템 가동 시간의 평균을 얻을 수 있습니다( 시스템이 시작될 때 모두 0임). 즉, /proc/stat
첫 번째 반복에서 top
유효한 백분율이 있지만 평균이 길어서 업데이트되지 않는 것 같습니다.
수동으로 구문 분석하는 경우에도 /proc/stat
서로 다른 시간에 두 번의 읽기가 필요합니다.