stringtranslate.com

tiempo de CPU

Tiempo de CPU en un sistema multitarea con una sola CPU
  Tiempo de color de la CPU para el programa P1

El tiempo de CPU (o tiempo de proceso ) es la cantidad de tiempo durante el cual se utilizó una unidad central de procesamiento (CPU) para procesar instrucciones de un programa de computadora o sistema operativo , a diferencia del tiempo transcurrido, que incluye, por ejemplo, la espera de entrada/salida. (E/S) o entrar en modo de bajo consumo (inactivo). El tiempo de CPU se mide en tics de reloj o segundos. A menudo, resulta útil medir el tiempo de la CPU como un porcentaje de la capacidad de la CPU, lo que se denomina uso de la CPU . El tiempo de CPU y el uso de la CPU tienen dos usos principales.

El tiempo de CPU se utiliza para cuantificar la eficiencia empírica general de dos algoritmos funcionalmente idénticos. Por ejemplo, cualquier algoritmo de clasificación toma una lista sin ordenar y devuelve una lista ordenada, y lo hará en un número determinista de pasos basados ​​en una lista de entrada determinada. Sin embargo, una ordenación por burbuja y una ordenación por combinación tienen una complejidad de tiempo de ejecución diferente , por lo que la ordenación por combinación tiende a completarse en menos pasos. Sin ningún conocimiento del funcionamiento de cualquiera de los algoritmos, un mayor tiempo de CPU para la clasificación por burbujas muestra que es menos eficiente para datos de entrada particulares que la clasificación por fusión.

Este tipo de medición es especialmente útil cuando se comparan algoritmos similares que no son triviales en complejidad. En este caso, el tiempo de pared (la duración real transcurrida) es irrelevante, la computadora puede ejecutar el programa más lento o más rápido dependiendo de variables del mundo real, como la temperatura de la CPU, así como otras variables del sistema operativo, como la prioridad del proceso.

El uso de la CPU se utiliza para cuantificar cómo se comparte el procesador entre los programas de computadora. El uso elevado de CPU por parte de un solo programa puede indicar que exige mucha potencia de procesamiento o que puede funcionar mal; por ejemplo, ha entrado en un bucle infinito . El tiempo de CPU permite medir la potencia de procesamiento que requiere un solo programa, eliminando interferencias, como el tiempo ejecutado en espera de entrada o la suspensión para permitir la ejecución de otros programas.

Por el contrario, el tiempo real transcurrido (o simplemente tiempo real, o tiempo de reloj de pared ) es el tiempo transcurrido desde el inicio de un programa de computadora hasta el final medido por un reloj común. El tiempo real transcurrido incluye el tiempo de E/S, cualquier retraso en la multitarea y todos los demás tipos de esperas incurridas por el programa.

Subdivisión

El tiempo de CPU o el uso de la CPU se pueden informar para cada subproceso , para cada proceso o para todo el sistema. Además, dependiendo de qué estaba haciendo exactamente la CPU, los valores informados se pueden subdividir en:

Comandos Unix para tiempo de CPU

visualización superior del tiempo de CPU de varios procesos en un sistema tipo Unix ( GNU / Linux )

Comando Unix arriba

El comando top de Unix proporciona tiempo de CPU, prioridad, tiempo real transcurrido y otra información para todos los procesos y la actualiza en tiempo real.

tiempo de comando de Unix

El tiempo del comando Unix imprime el tiempo de CPU y el tiempo real transcurrido para un proceso Unix.

% gcc  nextPrimeNumber.c  -o  nextPrimeNumber % time  ./nextPrimeNumber 30000007 El número primo mayor que 30000007 es 30000023 0.327u 0.010s 0:01.15 28.6% 0+0k 0+0io 0pf+0w 

Este proceso tomó un total de 0,337 segundos de tiempo de CPU, de los cuales 0,327 segundos se gastaron en el espacio del usuario y los últimos 0,010 segundos en modo kernel en nombre del proceso. El tiempo real transcurrido fue de 1,15 segundos.

El siguiente es el código fuente de la aplicación nextPrimeNumber que se utilizó en el ejemplo anterior.

// nextPrimeNumber.c #include <stdio.h> #incluye <stdlib.h>  int isPrimeNumber ( unsigned long int n ) { for ( int i = 2 ; i <= ( n >> 1 ); ++ i ) if ( n % i == 0 ) return 0 ; devolver 1 ; }                          int main ( int argc , char * argv []) { argumento int largo sin signo = strtoul ( argv [ 1 ], NULL , 10 ), n = argumento ; mientras ( ! esNúmeroPrime ( ++ n ));                   printf ( "El número primo mayor que %lu es %lu \n " , argumento , n ); devolver 0 ; }    

Funciones POSIX clock()ygetrusage()

POSIX funciona clock() y getrusage()se puede utilizar para obtener el tiempo de CPU consumido por cualquier proceso en un entorno POSIX. Si el proceso es multiproceso, el tiempo de CPU es la suma de todos los subprocesos . Con Linux a partir del kernel 2.6.26, hay un parámetro RUSAGE_THREAD que conduce a estadísticas de uso de recursos solo para el subproceso que realiza la llamada.

Tiempo total de CPU

En máquinas multiprocesador , un programa de computadora puede usar dos o más CPU para procesar mediante programación de procesamiento paralelo . En tales situaciones, se utiliza la noción de tiempo total de CPU , que es la suma del tiempo de CPU consumido por todas las CPU utilizadas por el programa de computadora.

Tiempo de CPU y tiempo real transcurrido

El tiempo real transcurrido es siempre mayor o igual al tiempo de CPU para programas informáticos que utilizan sólo una CPU para el procesamiento. Si no hay espera para E/S u otros recursos, el tiempo real transcurrido y el tiempo de CPU son muy similares.

Tiempo de CPU y tiempo real transcurrido para tecnología de procesamiento paralelo

Si un programa utiliza procesamiento paralelo , el tiempo total de CPU para ese programa sería mayor que el tiempo real transcurrido. (Tiempo total de CPU)/(Número de CPU) sería igual que el tiempo real transcurrido si la carga de trabajo se distribuye uniformemente en cada CPU y no hay espera para E/S u otros recursos.

Ejemplo: una aplicación de software ejecutada en un procesador hexa-core crea tres procesos Unix para cumplir con los requisitos del usuario. Cada uno de estos tres procesos crea dos subprocesos, enumerando un total de 6 subprocesos de trabajo. El cálculo se distribuye uniformemente en los 6 subprocesos independientes. Si no hay que esperar recursos, se espera que el tiempo total de CPU sea seis veces el tiempo real transcurrido.

Ver también

Referencias

  1. ^ Ehrhardt, Christian (julio de 2010). "Contabilidad del tiempo de CPU". IBM . Consultado el 5 de agosto de 2014 .

enlaces externos