Diferencia entre tiempo de CPU de usuario y tiempo de CPU de sistema en UNIX

Los sistemas Unix tienen una utilidad de tiempo que le permite a un usuario ver dónde su aplicación tardó un tiempo significativo en procesarse. La sintaxis de esta utilidad es la siguiente:            

time <command-to-be-timed>

Su resultado generalmente tiene tres categorías de la siguiente manera:

real <time>
user <time>
sys  <time>

Usuario-CPU-Tiempo: 

User-CPU-time es el tiempo que tarda el procesador en procesar el código en su aplicación. Generalmente se denomina que se ejecuta en el espacio del usuario en lugar de estar en el espacio del kernel . Cuando desarrolla su aplicación, habrá escrito construcciones de programación como condicionales, expresiones, declaraciones en bucle, bifurcaciones, etc. El tiempo dedicado al código real escrito por el cliente se mide a través de user-cpu-time .

Sistema-CPU-Tiempo:

System-CPU-time es el tiempo que tarda el proceso en procesar el código del núcleo. Cuando se programa una aplicación, los desarrolladores deben escribir en la salida del sistema , leer en la entrada del sistema y acceder a un recurso de disco local, como archivos, bases de datos , etc. proveer. El tiempo dedicado a esta ejecución generalmente se conoce como system-cpu-time .

Real:

El tiempo real es el tiempo total empleado a partir de la hora en que se inició la aplicación y la hora en que la aplicación realizó su tarea. También puede incluir el tiempo dedicado a esperar su turno para procesar o esperar recursos para la ejecución exitosa del programa. 

Diferencias entre tiempo de CPU de usuario y tiempo de CPU de sistema:

S. No.

usuario-cpu-tiempo

sistema-cpu-tiempo

1. Es la medida del tiempo que tarda la aplicación en ejecutar el código escrito por el usuario Es la medida del tiempo que tarda una aplicación en ejecutar el código del kernel.
2. En los sistemas basados ​​en Unix, generalmente se representa como ‘usuario’ en respuesta a la utilidad de tiempo. En los sistemas basados ​​en Unix, generalmente se representa como ‘sys’ en respuesta a la utilidad de tiempo.
3. El tiempo empleado puede ser analizado y optimizado por el usuario. El tiempo que tarda el sistema depende de las llamadas al sistema del kernel subyacente. 

Por ejemplo:

#include<stdio.h>
#include<sys/types.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{

int i=0;
sleep(60);
FILE* fpt;
fpt = fopen("/home/test/file1.txt","w");


for(int i=0;i<10000000;i++)
{
    printf("");
    fprintf(fpt,"%d",i);
}
fclose(fpt);
}

El código anterior primero duerme durante un minuto, abre un recurso de archivo en el disco y escribe la variable «i» hasta que el ciclo termina y no imprime nada en la consola. Finalmente, cierra el recurso de archivo abierto desde el disco.

Podemos compilar este código con:

gcc test.c

Esto crea un binario ./a.out

Ahora si corremos

 time ./a.out

En los sistemas UNIX, puede generar una salida como se ve a continuación. El tiempo real puede variar de vez en cuando según la lógica del programa y la utilización de la CPU. 

Producción:

real    1m0.557s
user    0m0.452s
sys     0m0.084s

Publicación traducida automáticamente

Artículo escrito por sub154 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *