2011-09-07 18 views
84

Puedo adivinar en función de los nombres, pero ¿qué es específicamente la hora del reloj de pared, la hora de la CPU del usuario y la hora de la CPU del sistema en UNIX?¿Qué especificamente son la hora del reloj de pared, la hora de la CPU del usuario y la hora de la CPU del sistema en UNIX?

¿El tiempo de la CPU del usuario es la cantidad de tiempo dedicado a ejecutar el código de usuario mientras kernel-cpu tiempo la cantidad de tiempo pasado en el kernel debido a la necesidad de operaciones privilegiadas (como IO en el disco)?

¿Qué unidad de tiempo es esta medida en.

Y es la pared reloj de tiempo realmente el número de segundos que el proceso se ha gastado en la CPU o es simplemente el nombre engañoso?

Respuesta

86

La hora del reloj de pared es el tiempo que un reloj en la pared (o un cronómetro en la mano) mediría como que ha transcurrido entre el inicio del proceso y 'ahora'.

El tiempo de la CPU del usuario y el tiempo de la CPU del sistema son casi como usted dijo: la cantidad de tiempo invertido en el código de usuario y la cantidad de tiempo invertido en el código del kernel.

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 que encienda la CPU (mientras otros procesos se ejecutan).

+1

¿Significa esto que el tiempo del reloj de pared siempre será ** mayor ** que el tiempo de la CPU? – Pacerier

+9

@Pacerier: en una máquina con un solo núcleo, sí, pero las máquinas con múltiples núcleos y los programas con múltiples subprocesos pueden usar más de 1 CPU por segundo por segundo transcurrido. –

+0

@JonathanLeffler gracias por la respuesta, quería obtener el número de nanosegundos que ha transcurrido, pero el cálculo del tiempo de CPU con la fórmula 'CPUtime = #clock_cycles/clock_rate' no puede ser lo mismo que calcular el tiempo transcurrido. ¿Sabes si puedo obtener el tiempo transcurrido desde el tiempo de CPU? – Bionix1441

25

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 y sistema del usuario: exactamente lo que piensas. Las llamadas al sistema, que incluyen llamadas de E/S como read, write, etc. se ejecutan saltando al código del núcleo y ejecutándolo.

Si el tiempo del reloj de pared < Tiempo de CPU, está ejecutando un programa en paralelo. Si la hora del reloj de pared> tiempo de CPU, está esperando disco, red u otros dispositivos.

Todos se miden en segundos, por SI.

5

tiempo de reloj de pared es exactamente lo que dice, el tiempo transcurrido según lo medido por el reloj en la pared (o reloj de pulsera) tiempo de CPU

usuario es el tiempo pasado en "tierra de usuario", que es 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 kernel, generalmente el tiempo dedicado al servicio de las llamadas al sistema.

Cuestiones relacionadas