LINUX.ORG.RU

getrusage usage


0

0

/tmp> ./res ixrss 0, idrss 0, isrss 0 /tmp> cat res.c #include <sys/resource.h> #include <stdio.h> #include <stdlib.h>

int main() { struct rusage usage; calloc(1, 1000000); getrusage(RUSAGE_SELF, &usage); printf("ixrss %d, idrss %d, isrss %d\n", usage.ru_ixrss, usage.ru_idrss, usage.ru_isrss); exit(0); }

Ядро 2.6.11, система FC4.

Хочется понять, почему выводятся нули, хотя кое-какая память процессом явно используется.

Вся структура usage выглядит так (gdb) print usage $1 = {ru_utime = {tv_sec = 0, tv_usec = 1999}, ru_stime = {tv_sec = 0, tv_usec = 2999}, ru_maxrss = 0, ru_ixrss = 0, ru_idrss = 0, ru_isrss = 0, ru_minflt = 617, ru_majflt = 0, ru_nswap = 0, ru_inblock = 0, ru_oublock = 0, ru_msgsnd = 0, ru_msgrcv = 0, ru_nsignals = 0, ru_nvcsw = 18, ru_nivcsw = 5}

Похоже, что я не понимаю чего-то принципиального относительно смысла полей про использованную память. Буду признателен за разъяснения.

anonymous

Извиняюсь за наступание на форматированные грабли.


/tmp> ./res
ixrss 0, idrss 0, isrss 0
/tmp> cat res.c
#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h> 

int main()
{
    struct rusage usage;
    calloc(1, 1000000);
    getrusage(RUSAGE_SELF, &usage);
    printf("ixrss %d, idrss %d, isrss %d\n", usage.ru_ixrss, usage.ru_idrss, usage.ru_isrss);
    exit(0);
}

Ядро 2.6.11,  система FC4.

Хочется понять, почему выводятся нули, хотя кое-какая память процессом явно используется. 

Вся структура usage выглядит так
(gdb) print usage
$1 = {ru_utime = {tv_sec = 0, tv_usec = 1999}, ru_stime = {tv_sec = 0, tv_usec = 2999}, 
  ru_maxrss = 0, ru_ixrss = 0, ru_idrss = 0, ru_isrss = 0, ru_minflt = 617, ru_majflt = 0, 
  ru_nswap = 0, ru_inblock = 0, ru_oublock = 0, ru_msgsnd = 0, ru_msgrcv = 0, ru_nsignals = 0, 
  ru_nvcsw = 18, ru_nivcsw = 5}

Похоже, что я не понимаю чего-то принципиального относительно смысла  полей про использованную память. Буду признателен за разъяснения.

anonymous
()

Тоже выводит нули на RHEL4 с ядром 2.6.9-5.EL.

P.S. Кстати, ты не подключил unistd.h и sys/time.h (который не обязателен, но желателен). Также поля структуры rusage имеют тип long, а не int, так что надо для них использовать идентификатор %ld.

php-coder ★★★★★
()
Ответ на: комментарий от legk

>Not all fields are meaningful under Linux.

:DDD Мдаа... (ман я проглядел, но не столь внимательно...)

php-coder ★★★★★
()
Ответ на: комментарий от legk

Спасибо.

Не хватило меня на последний абзац в man ;(.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.