2012-03-11 2 views
2

우리 프로그램이 CPU에 얼마나 많은로드가 있는지 어떻게 알 수 있습니까?내 프로그램의 CPU로드

나는 htop을 사용하여 그것을 찾으려고 노력했다. 그러나 htop는 CPU 부하를주지 않을 것입니다. 그것은 실제로 내 프로그램의 CPU 사용률 (pid 사용)을 제공합니다.

저는 C 프로그래밍, Linux 환경을 사용하고 있습니다.

+2

top 또는 htop 모두 CPU로드를 제공합니다. – Nick

+2

'CPU 사용률'과 'CPU로드'의 차이점은 무엇입니까? – Konerak

+0

나는 두 개의 자식 프로세스를 포크하는 두 개의 자식 프로세스가 연속적으로 무한 루프를 실행하는 간단한 C 프로그램을 작성했다. 이제 htop의 출력을 관찰했을 때 두 프로세스 모두에 대해 cpu %가 99로 표시됩니다. 이것으로부터 나는 프로세스가 프로세서의 99 %를 얻고 있다는 것을 알게되었습니다. 하지만 그 프로세서에 의해 CPU에 부하가되지 않습니다 : ( – bobby

답변

2

아마도 찾고있는 기능은 getrusage입니다. 그것은 struct rusage을 채 웁니다. 구조체의 두 멤버는 당신이에 관심이 있습니다

  1. ru_utime - 사용되는 사용자 CPU 시간
  2. ru_stime - 당신은 시간의 규칙적인 간격으로 함수를 호출 할 수 있습니다

사용하는 시스템 CPU 시간과 결과에 따라 견적자신의 프로세스의 CPU 부하 (예 : 백분율). 당신은 시스템 레벨에서 그것을 얻고 싶은 경우에 /proc 디렉토리/합계 (또한 일정한 간격) 파일이 here를 참조

는, 당신은 읽기 (구문 분석)해야합니다.

+0

'/ proc/loadavg'를 읽고 파싱하여 평균 시스템 부하를 얻을 수 있으며, 프로세스 내에서'usleep' 또는'nanosleep'을 사용하여 약간의 지연 시간 동안 sleep 상태로 만들 수 있습니다 (시스템을 "낮추는"데 유용합니다) 하중). –

+0

예. 이것은 실제로 달성하고자하는 것에 따라 더 나은 해결책이 될 수도 있고 그렇지 않을 수도있는 또 다른 옵션입니다. – sirgeorge

관련 문제