5 votos

salida del comando de tiempo

Tengo un archivo bash script llamado readspeed .

Estoy tratando de encontrar cuánto tiempo se tarda en ejecutar un bash script archivo.

Cuando corro time readspeed El resultado es el siguiente.

$ time readspeed                       
6
readspeed  174.19s user 286.30s system 99% cpu 7:40.50 total

No estoy seguro de lo que indicaban usuario, sistema, cpu y total.

¿Cuáles son las diferencias entre user , system y total ?

$ type time
time is a reserved word

$ echo $SHELL
/bin/zsh

4voto

Jose Chavez Puntos 645

La salida de echo $SHELL muestra que está ejecutando zsh - no bash . zsh es el shell por defecto en las versiones recientes de MacOS. La dirección time es ejecutado por el shell en lugar de ejecutar un comando separado time (pero, curiosamente, no aparece como un programa integrado en el shell). La documentación, bastante escueta, está disponible ejecutando man zshmisc :

tiempo [ pipeline ] El pipeline se ejecuta, y las estadísticas de tiempo se reportan en el error estándar en la forma especificada por el parámetro TIMEFMT . Si se omite pipeline, se imprimen estadísticas sobre el proceso shell y sus hijos.

El significado del parámetro TIMEFMT puede averiguarse ejecutando man zshparam :

   TIMEFMT
          The format of process time reports with the time keyword.  The default is `%J  %U user %S system %P cpu %*E total'. 

Reconoce las siguientes secuencias de escape, aunque no todas pueden ser disponibles en todos los sistemas, y algunas disponibles pueden no ser útiles:

          %%     A `%'.
          %U     CPU seconds spent in user mode.
          %S     CPU seconds spent in kernel mode.
          %E     Elapsed time in seconds.
          %P     The CPU percentage, computed as 100*(%U+%S)/%E.
          %W     Number of times the process was swapped.
          %X     The average amount in (shared) text space used in kilobytes.
          %D     The average amount in (unshared) data/stack space used in kilobytes.
          %K     The total space used (%X+%D) in kilobytes.
          %M     The  maximum memory the process had in use at any time in kilobytes.
          %F     The number of major page faults (page needed to be brought from disk).
          %R     The number of minor page faults.
          %I     The number of input operations.
          %O     The number of output operations.
          %r     The number of socket messages received.
          %s     The number of socket messages sent.
          %k     The number of signals received.
          %w     Number of voluntary context switches (waits).
          %c     Number of involuntary context switches.
          %J     The name of this job.

          A  star may be inserted between the percent sign and flags printing time (e.g., `%*E'); this causes the time to be printed

en hh:mm:ss.ttt' format (hours and minutes are only printed if they are not zero). Alternatively, m' o u' may be used (e.g., %mE') para producir la salida de tiempo en milisegundos o microsegundos, respectivamente.

De esto se pueden aprender varias cosas:

Las mediciones de tiempo realizadas por time cubre tanto el tiempo utilizado por zsh (para interpretar su script de shell) así como el tiempo utilizado por cualquier comando generado por el script de shell para hacer el trabajo real.

Las mediciones de tiempo se dividen en una parte de "usuario" y otra de "sistema". Se considera que un programa consume tiempo de "usuario" cuando se está ejecutando por sí solo (es decir, haciendo cálculos, moviendo datos por la RAM, etc.). Consume tiempo de "sistema" cuando ha pedido al sistema operativo que haga algo en su nombre (por ejemplo, leer datos de un archivo, enviar datos por una red, etc.).

Además de lo anterior, verás que la última parte de la salida es el tiempo total. Esto se entiende como un tiempo de "reloj de pared". Es decir, la cantidad de tiempo transcurrido en modo "usuario" y "sistema" se determina como la cantidad de tiempo que el programa está de alguna manera consumiendo tiempo del procesador, mientras que el tiempo total es la cantidad de tiempo transcurrido en el mundo real - incluyendo el tiempo en el que el programa no está haciendo nada activamente y el sistema tampoco está haciendo nada en nombre del programa.

Por último, la parte "99% cpu" indica la relación entre el consumo combinado de tiempo del usuario y del sistema y el tiempo total del reloj de pared. Para ti, la medida "99%" significa que tu programa estuvo de alguna forma utilizando activamente la CPU casi todo el tiempo. Un número bajo indicaría que el sistema estuvo ocupado con otras cosas, y tu programa tuvo periodos de tiempo ocioso.

1voto

En man bash

If the time reserved word precedes a pipeline, the elapsed as  well  as
user  and  system  time consumed by its execution are reported when the
pipeline terminates.

De este modo, puede ver el tiempo empleado en el espacio de usuario, el tiempo empleado en el sistema/núcleo y el tiempo total que tardó el comando.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X