formato etc cuál comando archivo r time

etc - ¿Qué mide el tiempo de ''usuario'' y ''sistema'' en la salida R system.time(exp)?



cuál es el formato del archivo/etc/passwd (5)

Estoy usando system.time(expression) para medir el tiempo de ejecución para una función R.

La salida que recibo para la llamada

system.time(myfunction())

es:

user system elapsed 117.36 5.65 127.86

¿Qué mide ''usuario'' y ''sistema''?


Aquí hay algunas explicaciones simples:

El tiempo transcurrido es el tiempo cargado a la (s) CPU (s) para la expresión.

El tiempo del usuario es el tiempo del reloj de pared. El tiempo que usted, como usuario, experimentó.

Por lo general, ambos tiempos son relativamente cercanos. Pero pueden variar en algunas otras situaciones. Por ejemplo:

  • Si el tiempo transcurrido es> tiempo de usuario , esto significa que la CPU está esperando que se realicen otras operaciones (pueden ser externas).
  • Si el tiempo transcurrido <tiempo de usuario , esto significa que su máquina tiene múltiples núcleos y puede usarlos

Como esas variables de tiempo están definidas por su sistema operativo, puede recuperar información sobre cómo se calculan al ejecutar man time en su shell (en Unix):

... Estas estadísticas consisten en (i) el tiempo real transcurrido entre la invocación y la terminación, (ii) el tiempo de la CPU del usuario (la suma de los valores tms_utime y tms_cutime en una estructura tms devuelta por los tiempos (2)) y ( iii) el tiempo de CPU del sistema (la suma de los valores tms_stime y tms_cstime en una estructura tms como se devuelve por los tiempos (2)).

La definición de las variables de tiempo mencionadas se puede encontrar aquí :

tms_utime de CPU del usuario.

tms_stime CPU del sistema.

tms_cutime de CPU de usuario de procesos secundarios finalizados.

tms_cstime CPU del sistema de procesos secundarios finalizados.

Una aclaración de las diferencias entre el usuario y la hora del sistema se describe en la respuesta de daroczig y en otros lugares en SO :

El elemento tms_utime es la cantidad de tiempo dedicado a la ejecución de su código, o el código en la biblioteca C. El elemento tms_stime es la cantidad de tiempo invertido en el kernel que ejecuta el código en su nombre.


Dado que estos son genéricos de todos modos, de Wikipedia:

El término ''tiempo de CPU del usuario'' puede ser un poco engañoso al principio. Para que quede claro, el tiempo total (tiempo de CPU real) es la combinación de la cantidad de tiempo que la CPU dedica a realizar alguna acción para un programa y la cantidad de tiempo que la CPU gasta en realizar llamadas al kernel en nombre del programa. Cuando un programa recorre una matriz, está acumulando tiempo de CPU del usuario. Por el contrario, cuando un programa ejecuta una llamada al sistema, como exec o fork, está acumulando tiempo de CPU del sistema.

en.wikipedia.org/wiki/Time_(Unix)#User_Time_vs_System_Time


Esto se discute en ?proc.time ( system.time() devuelve un objeto de clase "proc.time" ):

Details: ‘proc.time’ returns five elements for backwards compatibility, but its ‘print’ method prints a named vector of length 3. The first two entries are the total user and system CPU times of the current R process and any child processes on which it has waited, and the third entry is the ‘real’ elapsed time since the process was started.

....y

Value: .... The definition of ‘user’ and ‘system’ times is from your OS. Typically it is something like _The ‘user time’ is the CPU time charged for the execution of user instructions of the calling process. The ‘system time’ is the CPU time charged for execution by the system on behalf of the calling process._


La explicación más clara que he leído sobre la diferencia entre el user y el tiempo transcurrido del system fue proporcionada por William Dunlap en [R-help] :

El "tiempo de CPU del usuario" da tiempo de CPU al proceso actual (es decir, la sesión R actual) y el "tiempo de CPU del sistema" proporciona el tiempo de CPU gastado por el kernel (el sistema operativo) en nombre del proceso actual. El sistema operativo se utiliza para cosas como abrir archivos, hacer entrada o salida, iniciar otros procesos y mirar el reloj del sistema: operaciones que involucran recursos que muchos procesos deben compartir.

Aunque ?proc.time devuelve algo similar, esta descripción fue mucho más fácil de entender para mí.