"최상위"명령이 어떤 프로세스에서 사용하는 CPU 백분율을 계산하는지 어떻게 알고 싶습니다."최상위"명령으로 유닉스에서 단일 프로세스에 의한 CPU 비율 계산
"psinfo"이진 파일을/proc 디렉토리에서 읽으려고 시도했지만 결과를 찾는 데 도움이되지 않았습니다.
수행 방법에 대한 정보를 제공해주십시오.
미리 감사드립니다.
"최상위"명령이 어떤 프로세스에서 사용하는 CPU 백분율을 계산하는지 어떻게 알고 싶습니다."최상위"명령으로 유닉스에서 단일 프로세스에 의한 CPU 비율 계산
"psinfo"이진 파일을/proc 디렉토리에서 읽으려고 시도했지만 결과를 찾는 데 도움이되지 않았습니다.
수행 방법에 대한 정보를 제공해주십시오.
미리 감사드립니다.
top
명령은 proc file system의 데이터를 사용하여 CPU 사용량을 계산합니다. CPU 사용 데이터가 포함 된 실제 파일은 플랫폼마다 다를 수 있습니다. 예를 들어, Linux에서는 /proc/<pid>/stat
, Solaris에서는 /proc/<pid>/psinfo
에서 찾을 수 있습니다. CPU 사용은 프로세스의 누적 CPU 시간의 차이를 업데이트 간 측정 된 시간으로 나눈 값으로 계산됩니다.
리눅스의 경우, http://procps.sourceforge.net에서 procpsps
, top
을 포함 소스 및 기타 프로세스 툴을 검사 할 수 있습니다. 특히 readproc.c 파일에는 데이터를 검색하는 기능이 있습니다.
Solaris의 경우, 당신은 https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/lib/libproc에서 libproc 소스를 검사 할 수 있습니다. prog_get_info.c 파일에는 데이터를 검색하고 구조체 psinfo_t
에 저장하는 기능이 있습니다.
machine
디렉토리 내의 플 '폼 특정 소스 파일에는 데이터를 검색하는 기능이 들어 있습니다.
업데이트
프로세스에 대한 CPU 시간을 검색하기위한 또 다른 방법은 방법 (Solaris 전용) ioctl()
시스템 호출에 PIOCPSINFO
또는 PIOCSTATUS
옵션으로 통과 할 수있다. PIOCPSINFO
옵션은 prpsinfo_t
구조체에 기타 프로세스 정보를 반환합니다. PIOCSTATUS
옵션은 prstatus_t
구조체에있는 프로세스의 상태 정보를 반환합니다.
int main(int argc, char* argv[])
{
int fd;
prpsinfo_t info;
prstatus_t status;
char procbuf[50];
sprintf(procbuf, "/proc/%d", getpid());
fd = open(procbuf, O_RDONLY);
ioctl(fd, PIOCPSINFO, &info);
printf("Process user+sys time = %ld sec %ld nsec\n"
"Reaped children user+sys time = %ld sec %ld nsec\n",
info.pr_time.tv_sec, info.pr_time.tv_nsec,
info.pr_ctime.tv_sec, info.pr_ctime.tv_nsec);
ioctl(fd, PIOCSTATUS, &status);
printf("Process user+sys time = %ld sec %ld nsec\n"
"Sum of children's user+sys time = %ld sec %ld nsec\n",
status.pr_utime.tv_sec+status.pr_stime.tv_sec,
status.pr_utime.tv_nsec+status.pr_stime.tv_nsec,
status.pr_cutime.tv_sec+status.pr_cstime.tv_sec,
status.pr_cutime.tv_nsec+status.pr_cstime.tv_nsec);
close(fd);
exit(0);
}
주 :이 코드 안된 및 간략화를 위해 에러 체크를 생략.
감사합니다. 나는 psinfo가 나에게 일찍 나에게 도움이되지 않았지만 나는 당신에 의해 주어진 모든 옵션을 점검하고있다. – Arunmu
하지만 관련 중복되지 않음 - http://stackoverflow.com/questions/552976/top-commands-cpu-usage-calculation 입력에 대한 – DumbCoder