Estoy tratando de usar /usr/bin/time para recopilar el tamaño promedio de los programas residentes. Probé este comando con varios programas, pero el tamaño promedio del conjunto residente siempre es cero. Por ejemplo:

Mi sistema operativo es ubuntu 10.04.
¿Podría decirme cuál es la razón o cómo puedo solucionarlo? ¡Muchos gracias!
Mire, /usr/bin/time no calcula estos datos por sí mismo. Utiliza wait4 para obtener estos datos de Linux. Esta es una descripción de wait4:
>man wait4 pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage); El problema es que no se mantienen todos los campos en struct ruusage :
Not all fields are completed; unmaintained fields are set to zero by the kernel. (The unmaintained fields are provided for compatibility with other systems, and because they may one day be supported on Linux.) The fields are interpreted as follows:
Mientras maxrss se mantiene, otros campos sobre rss no se mantienen. Entonces simplemente devuelve 0 y /usr/bin/time también imprime 0.
Además, si echa un vistazo a los archivos fuente de GNU time, verá este código:
/* FMT is the format string, interpreted as described above. */ static void summarize (fp, fmt, command, resp) FILE *fp; const char *fmt; const char **command; RESUSE *resp; { while (*fmt) { switch (*fmt) { case 'M': /* Maximum resident set size. */ fprintf (fp, "%lu", ptok ((UL) resp->ru.ru_maxrss)); break; case 't': /* Average resident set size. */ fprintf (fp, "%lu", MSEC_TO_TICKS (v) == 0 ? 0 : ptok ((UL) resp->ru.ru_idrss) / MSEC_TO_TICKS (v));Dado que Linux devuelve ru_idrss como 0, el tamaño promedio del conjunto residente es 0.
Enlaces útiles: