Puedo adivinar en función de los nombres, pero ¿qué son específicamente time-clock-time, user-cpu-time y system-cpu-time en UNIX?
¿Es el tiempo de la CPU del usuario la cantidad de tiempo dedicado a ejecutar el código de usuario, mientras que el tiempo de la CPU del kernel es la cantidad de tiempo dedicado al núcleo debido a la necesidad de operaciones privilegiadas (como IO en el disco)?
¿En qué unidad de tiempo se encuentra esta medida?
¿Y es realmente el tiempo del reloj de pared la cantidad de segundos que el proceso ha pasado en la CPU o el nombre es engañoso?
unix
operating-system
John Humphreys - w00te
fuente
fuente
Respuestas:
El tiempo del reloj de pared es el tiempo que un reloj en la pared (o un cronómetro en la mano) mediría como si hubiera transcurrido entre el inicio del proceso y "ahora".
El tiempo de la CPU del usuario y el tiempo de la CPU del sistema son más o menos como usted dijo: la cantidad de tiempo dedicado al código del usuario y la cantidad de tiempo dedicado al código del núcleo.
Las unidades son segundos (y subsegundos, que pueden ser microsegundos o nanosegundos).
El tiempo del reloj de pared no es el número de segundos que el proceso ha pasado en la CPU; es el tiempo transcurrido, incluido el tiempo dedicado a esperar su turno en la CPU (mientras se ejecutan otros procesos).
fuente
CPUtime = #clock_cycles / clock_rate
no puede ser lo mismo que calcular el tiempo transcurrido. ¿Sabes si puedo obtener el tiempo transcurrido del tiempo de CPU?read()
ogetpid()
), el núcleo ejecuta el código en nombre de su programa. El kernel también maneja la multitarea preventiva para que otros programas tengan su turno de ejecución, y realiza un trabajo de limpieza general para mantener el sistema funcionando sin problemas. Este código se ejecuta en 'código de kernel' (también en 'modo de kernel'). Esto es distinto del código que escribió y las bibliotecas de usuario (incluida la biblioteca del sistema C) que ejecuta.Tiempo de reloj de pared: tiempo transcurrido de acuerdo con el reloj interno de la computadora, que debe coincidir con el tiempo en el mundo exterior. Esto no tiene nada que ver con el uso de la CPU; Se da como referencia.
Tiempo de CPU del usuario y tiempo del sistema: exactamente lo que piensas. Las llamadas al sistema, que incluyen I / O llama tales como
read
,write
, etc., están ejecutado por salto en código del núcleo y la ejecución de eso.Si el tiempo de reloj de pared <tiempo de CPU, entonces está ejecutando un programa en paralelo. Si el tiempo de reloj de pared> tiempo de CPU, está esperando el disco, la red u otros dispositivos.
Todos se miden en segundos, según el SI .
fuente
El tiempo del reloj de pared es exactamente lo que dice, el tiempo transcurrido medido por el reloj de su pared (o reloj de pulsera)
El tiempo de CPU del usuario es el tiempo que se pasa en la "tierra del usuario", es decir, el tiempo dedicado a procesos que no son del núcleo
El tiempo de CPU del sistema es el tiempo que se pasa en el núcleo, generalmente el tiempo dedicado a atender las llamadas del sistema.
fuente
real o reloj de pared
reales 7m2.444s
En un sistema con procesador de 24 núcleos, este cmd / proceso tardó más de 7 minutos en completarse. Eso utilizando el paralelismo más posible con todos los núcleos dados.
usuario
usuario 76m14.607s
El cmd / proceso ha utilizado esta cantidad de tiempo de CPU. En otras palabras, en una máquina con CPU de un solo núcleo, el real y el usuario serán casi iguales, por lo que el mismo comando tardará ~ 76 minutos en completarse.
sys
sys 2m29.432s
Este es el tiempo que tarda el núcleo en ejecutar todas las operaciones básicas / de nivel del sistema para ejecutar este cmd, incluida la conmutación de contexto, la asignación de recursos, etc.
fuente
(user + sys) / real
para representar eso.