getrusage()에 대해...

eminency의 이미지

어떤 함수가 실행되는 시점에 스택과 데이타 영역을 얼마나 잡아먹는지 알아보고 싶어서 getrusage()를 썼는데요... 어떻게 해도 계속 0으로 나오네요...-_-;;

다음은 그 코드입니다.

    struct rusage a;

    if(getrusage(RUSAGE_SELF,&a) == -1)
    {
        printf("%d\n",errno);
        return ;
    }

    printf("stack size : %d\n",a.ru_isrss);
    printf("data size : %d\n",a.ru_idrss);

errno는 errno.h안에 선언되어 있는 그거구요...
위 코드를 메인에서도 실행해 보고 함수 안에 집어넣어서 실행도 해보고 했는데 계속 0이 나오네요...ㅡ.ㅡ;;

제가 뭔가 빠뜨린건가요...

mushim의 이미지

아직까지 linux 에서는 getrusage 의 모든 기능이 다 구현되지 않은걸로 알고 있습니다.

찾아보니, RUSAGE_SELF 인 경우 다음 자료만 값을 돌려주는 군요.

ru_utime
ru_stime
ru_minflt
ru_majflt
ru_nswap

자세한 것은 리눅스커널/kernel/sys.c 를 참고하세요.