getrusage, getrusage64, times 또는 vtimes 서브루틴

용도

리소스 사용에 대한 정보를 표시합니다.

라이브러리

getrusage, getrusage64, times: 표준 C 라이브러리libc.a

항목 설명
vtimes: Berkeley 호환성 라이브러리(libbsd.a)

구문

#include <sys/times.h>
#include <sys/resource.h>
int getrusage ( Who,  RUsage)
int Who;
struct rusage *RUsage;
int getrusage64 ( Who,  RUsage)
int Who;
struct rusage64 *RUsage;
#include <sys/types.h>
#include <sys/times.h>
clock_t times ( Buffer)
struct tms *Buffer;
#include <sys/times.h>
vtimes ( ParentVM,  ChildVM)
struct vtimes *ParentVm, ChildVm;

설명

Getrusage 하위 루틴은 현재 프로세스 또는 완료된 모든 하위 프로세스에서 리소스를 사용하는 방식에 대한 정보를 표시합니다.

64비트 모드로 컴파일할 경우 러지 카운터는 64비트입니다. ' getrusage '이 32비트 모드로 컴파일된 경우 ' rusage ' 카운터는 32비트입니다. 커널의 사용량 카운터 값이 반환되는 해당 32비트 사용량 값의 용량을 초과한 경우 사용량 값은 INT_MAX로 설정됩니다.

getrusage64 서브루틴을 호출하여 32비트 환경에서 64비트 러시지 카운터를 명시적으로 사용할 수 있도록 만들 수 있습니다.

64비트 수량은 구조체 rusage의 ru_utime 및 ru_stime 필드에 있는 getrusage() 인터페이스를 통해서도 64비트 애플리케이션에서 사용할 수 있습니다.

Times 서브루틴은 Buffer 파라미터가 가리키는 구조를 시간 계산 정보로 채웁니다. 시간 서브루틴이 보고하는 모든 시간 값은 사용된 시계 틱 수로 측정됩니다. 애플리케이션은 sysconf(_SC_CLK_TCK)를 사용하여 초당 클럭 틱 수를 결정해야 합니다.

/usr/include/sys/times.h 파일에 정의된 tms 구조에는 다음 필드가 포함되어 있습니다:

time_t   tms_utime;
time_t   tms_stime;
time_t   tms_cutime;
time_t   tms_cstime;

이 정보는 호출 프로세스는 물론 호출 프로세스가 대기 서브루틴을 실행한 완료된 각 하위 프로세스에서 읽습니다.

항목 설명
tms_utime 호출 프로세스의 사용자 공간에서 명령어를 실행하는 데 사용되는 CPU 시간입니다
tms_stime 호출 프로세스를 대신하여 시스템에서 사용하는 CPU 시간입니다.
tms_cutime 의 합계는tms_utimetms_cutime값을 설정합니다.
tms_cstime 의 합계는tms_stimetms_cstime값을 설정합니다.
참고: 시스템은 시계 인터럽트를 카운트하여 시간을 측정합니다. 시간 서브루틴이 보고하는 값의 정밀도는 클럭 인터럽트가 발생하는 속도에 따라 달라집니다.

이전 프로그램과의 호환성을 제공하기 위해 vtimes 하위 루틴이 지원됩니다.

Vtimes 하위 루틴은 현재 프로세스 및 현재 프로세스의 완료된 하위 프로세스에 대한 계정 정보를 반환합니다. ParentVm 매개변수, ChildVm 매개변수 또는 둘 다 0일 수 있습니다. 이 경우 0이 아닌 포인터에 대한 정보만 반환됩니다.

Vtimes 하위 루틴을 호출한 후 각 버퍼에는 /usr/include/sys/vtimes.h 파일의 내용에 정의된 대로 정보가 포함됩니다.

매개변수

항목 설명
누가 RUSAGE_THREAD, RUSAGE_SELF 또는 RUSAGE_CHILDREN 값을 지정합니다.
RUsage /usr/include/sys/resource.h 파일에 설명된 버퍼를 가리킵니다. 필드는 다음과 같이 해석됩니다:
ru_utime
사용자 모드에서 실행한 총 시간입니다.
ru_stime
시스템에서 프로세스를 대신 실행하는 데 소요된 총 시간입니다.
ru_maxrss
사용된 레지던트 세트 크기의 최대 크기(킬로바이트)입니다.
ru_ixrss
다른 프로세스에서도 공유된 텍스트 세그먼트가 사용한 메모리 양을 나타내는 정수 값입니다. 이 값은 킬로바이트 * 실행 시간(초) 단위로 표시되며, 내부 시스템 시계가 틱할 때마다 사용 중인 공유 메모리 페이지 수를 더한 다음 1초 간격으로 평균을 내어 계산합니다.
ru_idrss
프로세스의 데이터 세그먼트에서 공유되지 않은 메모리 양(킬로바이트 * 실행 시간 단위로 표시)의 정수 값입니다.
ru_minflt
I/O 활동 없이 서비스된 페이지 오류의 수입니다. 이 경우 재할당을 기다리는 페이지 목록에서 페이지 프레임을 회수하여 I/O 활동을 피할 수 있습니다.
ru_majflt
I/O 작업이 필요한 페이지 오류를 서비스한 건수입니다.
ru_nswap
프로세스가 주 메모리에서 스왑된 횟수입니다.
ru_inblock
파일 시스템이 입력을 수행한 횟수입니다.
ru_oublock
파일 시스템이 출력을 수행한 횟수입니다.
참고 ru_inblockru_oublock필드에는 실제 I/O에 대한 계정만 표시되며, 캐싱 메커니즘에 의해 제공된 데이터는 데이터를 읽거나 쓰는 첫 번째 프로세스에만 청구됩니다.
ru_msgsnd
전송된 IPC 메시지 수입니다.
ru_msgrcv
수신한 IPC 메시지 수입니다.
ru_nsignals
전달된 신호의 수입니다.
ru_nvcsw
프로세스가 타임 슬라이스가 완료되기 전에 프로세서를 자발적으로 포기하여 컨텍스트 전환이 발생한 횟수입니다. 이는 일반적으로 프로세스가 리소스의 가용성을 기다리는 동안 발생합니다.
ru_nivcsw
우선 순위가 더 높은 프로세스가 실행되었거나 현재 프로세스가 해당 시간 조각을 초과하여 컨텍스트 전환이 발생한 횟수입니다.
버퍼 Tms 구조를 가리킵니다
ParentVm 현재 프로세스에 대한 회계 정보가 포함된 vtimes 구조를 가리킵니다.
ChildVm 현재 프로세스의 종료된 하위 프로세스에 대한 계정 정보가 포함된 vtimes 구조를 가리킵니다.

리턴 값

성공적으로 완료되면 getrusagegetrusage64 서브루틴은 0 값을 반환합니다. 그렇지 않으면 -1 값이 반환되고 errno 전역 변수가 오류를 나타내도록 설정됩니다.

성공적으로 완료되면 시간 서브루틴은 프로파일링 활성화 여부에 관계없이 경과된 실시간 시간을 틱 단위로 반환합니다. 이 기준 시간은 시간 서브루틴을 호출할 때마다 변경되지 않습니다. Times 서브루틴이 실패하면 -1 값을 반환하고 errno 전역 변수를 설정하여 오류를 표시합니다.

오류 코드

다음 중 하나에 해당하는 경우 getrusagegetrusage64 하위 루틴이 성공적으로 실행되지 않습니다:
항목 설명
EINVAL Who 매개 변수는 유효한 값이 아닙니다.
기본값 RUsage에 지정한 주소가 유효하지 않습니다.
다음과 같은 경우 times 서브루틴이 성공적으로 실행되지 않습니다:
항목 설명
기본값 버퍼 매개변수로 지정한 주소가 유효하지 않습니다.