c linux linux-kernel getrusage

Se rompe la getrificación en Linux(2.6.30)



linux-kernel getrusage (1)

Sí, está parcialmente roto. No todos los campos están llenos por kernel. http://www.kernel.org/doc/man-pages/online/pages/man2/getrusage.2.html

Campos de trabajo:

ru_utime ru_stime ru_maxrss (since Linux 2.6.32) ru_minflt ru_majflt ru_inblock (since Linux 2.6.22) ru_oublock (since Linux 2.6.22) ru_nvcsw (since Linux 2.6) ru_nivcsw (since Linux 2.6)

Campos no utilizados:

ru_ixrss (unmaintained) ru_idrss (unmaintained) ru_isrss (unmaintained) ru_nswap (unmaintained) ru_msgsnd (unmaintained) ru_msgrcv (unmaintained) ru_nsignals (unmaintained)

Este código

void print_usage(char * msg) { struct rusage usage; getrusage(RUSAGE_SELF, &usage); printf("Limits: %s/n", msg); printf(" %s, %li/n", " maximum resident set size " , usage.ru_maxrss ); printf(" %s, %li/n", " integral shared memory size " , usage.ru_ixrss ); printf(" %s, %li/n", " integral unshared data size " , usage.ru_idrss ); printf(" %s, %li/n", " integral unshared stack size " , usage.ru_isrss ); printf(" %s, %li/n", " page reclaims " , usage.ru_minflt ); printf(" %s, %li/n", " page faults " , usage.ru_majflt ); printf(" %s, %li/n", " swaps " , usage.ru_nswap ); printf(" %s, %li/n", " block input operations " , usage.ru_inblock ); printf(" %s, %li/n", " block output operations " , usage.ru_oublock ); printf(" %s, %li/n", " messages sent " , usage.ru_msgsnd ); printf(" %s, %li/n", " messages received " , usage.ru_msgrcv ); printf(" %s, %li/n", " signals received " , usage.ru_nsignals); printf(" %s, %li/n", " voluntary context switches " , usage.ru_nvcsw ); printf(" %s, %li/n", " involuntary context switches " , usage.ru_nivcsw ); }

informa solo ceros para muchos campos, incluso si lo uso en un programa bastante grande (después de jvm start)

maximum resident set size , 0 integral shared memory size , 0 integral unshared data size , 0 integral unshared stack size , 0 page reclaims , 2514 page faults , 0 swaps , 0 block input operations , 0 block output operations , 0 messages sent , 0 messages received , 0 signals received , 0 voluntary context switches , 137 involuntary context switches , 1

Los campos distintos de cero son " *vcsw ", " *flt ".

Todas las *signals *rss , *swap , msg* , *block , *signals son cero.

¿Hay algo roto?

Linux es x86 2.6.30.