GETRUSAGE(2)

명칭
getrusage - 리소스 이용에 대한 정보를 얻는다

프로그램 라이브러리
libc

서식
<sys/types.h> <sys/time.h> <sys/resource.h> #define RUSAGE_SELF 0 #define RUSAGE_CHILDREN -1 int getrusage(int who, struct rusage *rusage)

해설
getrusage() (은)는, 현재의 프로세스, 또는 그 프로세스가 생성해, 종료가 끝난 상태이다 모든 child process가 사용한 리소스를 자세하게 설명하는 정보를 돌려줍니다. who 파라미터는 RUSAGE_SELF 또는 RUSAGE_CHILDREN 의 어느 쪽인지입니다. rusage 하지만 가리키는 버퍼에는 다음의 구조체가 넣을 수 있습니다.

    struct rusage {
            struct timeval ru_utime; /* 사용된 유저 시간 */
            struct timeval ru_stime; /* 사용된 시스템 시간 */
            long ru_maxrss;          /* 최대 상주 세트의 사이즈 */
            long ru_ixrss;           /* 공유 테키스트메모리총사이즈 */
            long ru_idrss;           /* 비공유 데이터총사이즈 */
            long ru_isrss;           /* 비공유 스택총사이즈 */
            long ru_minflt;          /* 페이지 재생수 */
            long ru_majflt;          /* 페이지 폴트 */
            long ru_nswap;           /* 스왑 */
            long ru_inblock;         /* 블록 입력 조작 */
            long ru_oublock;         /* 블록 출력 조작 */
            long ru_msgsnd;          /* 송신이 끝난 메세지 */
            long ru_msgrcv;          /* 수신이 끝난 메세지 */
            long ru_nsignals;        /* 수신이 끝난 시그널 */
            long ru_nvcsw;           /* 자발적인 콘텍스트 스위칭 */
            long ru_nivcsw;          /* 비자발적인 콘텍스트 스위칭 */
    };

필드는 다음과 같이 해석됩니다.

ru_utime
    유저 모드로 처리를 실행하는데 소비한 시간의 합계

ru_stime
    (1 개(살) 이상의) 프로세스를 위해서(때문에) 시스템이 처리를 실행하는데 소비한 시간의 합계

ru_maxrss
    사용된 상주 세트 사이즈의 최대치 (킬로바이트 단위)

ru_ixrss
    다른 프로세스와의 사이라도 공유되고 있던 텍스트 세그먼트(segment) 에 의해 사용된 메모리량의 “합계” 치. 이 값은 「킬로바이트 * 실행의 틱수」의 단위로 표현됩니다. 틱은 통계용의 클럭틱입니다. 통계용 클락의 주파수는 sysconf(_SC_CLOCK_TCK) 틱 / 초입니다.

ru_idrss
    프로세스의 데이터 세그먼트에 상주하고 있는 비공유 메모리량의 합계치 ( 「킬로바이트 * 실행의 틱수」의 단위로 표현됩니다).

ru_isrss
    프로세스의 스택 세그먼트에 상주하고 있는 비공유 메모리량의 합계치 ( 「킬로바이트 * 실행의 틱수」의 단위로 표현됩니다).

ru_minflt
    입출력 액티버티없이 서비스를 받은 페이지 폴트의 수. 여기서, 입출력 액티버티는, 재할인 맞히고를 기다리고 있는 페이지의 리스트로부터 페이지 프레임을 “재생” 하는 것으로 회피됩니다.

ru_majflt
    입출력 액티버티를 필요로 한 서비스를 받은 페이지 폴트의 수

ru_nswap
    프로세스가 메인 메모리로부터 “스왑” 된 회수

ru_inblock
    파일 시스템이 입력을 실행할 필요가 있던 회수

ru_oublock
    파일 시스템이 출력을 실행할 필요가 있던 회수

ru_msgsnd
    송신된 IPC 메세지의 수

ru_msgrcv
    수신한 IPC 메세지의 수

ru_nsignals
    전달된 시그널의 수

ru_nvcsw
    타임 슬라이스가 완료하기 전에, 프로세스가 자발적으로 프로세서를 방폐한 결과적으로 발생한 콘텍스트 스위칭의 회수 (통상은 리소스의 취득 대기를 하기 (위해)때문입니다).

ru_nivcsw
    보다 높은 우선 순위 프로세스가 실행 가능하게 되었기 때문에, 또는 현재의 프로세스가 그 타임 슬라이스를 초과했기 때문에, 결과적으로 발생한 콘텍스트 스위칭의 회수.

주
ru_inblock (와)과 ru_oublock 의 값은 실제의 입출력 만에 관한 것입니다. 캐쉬 메카니즘에 의해 제공되는 데이터는, 데이터를 읽기 또는 기록을 실시하는 최초의 프로세스에 대한 보고 카운트 됩니다.

반환값

에러
getrusage() 함수는 다음의 경우에 처리를 실패합니다.

[EINVAL]
    who 파라미터가 유효한 값이 아닙니다.

[EFAULT]
    rusage 파라미터에 의해 지정되는 주소는, 프로세스 address 공간의 유효한 부분내에 없습니다.

관련 항목
gettimeofday(2), wait(2), clocks(7)

버그
아직 종료하고 있지 않는 child process에 관한 정보를 얻는 방법은 없습니다.

역사
getrusage() 함수는 4.2BSD 그리고 등장했습니다.