Contabilidad de procesos de Linux: ¿Diferencia entre los campos 'cp' y 'cpu'?

Contabilidad de procesos de Linux: ¿Diferencia entre los campos 'cp' y 'cpu'?

He estado estudiando el uso de la contabilidad de procesos para realizar un seguimiento de varios usuarios y sitios que ejecutan scripts que son problemáticos en nuestro entorno en lugar de intentar hacer algo como raspar la parte superior a intervalos regulares.

Lo que no está particularmente claro es qué camposen realidaddenota los segundos/minutos de CPU utilizados. Las páginas del manual que he leído dicen que la columna 'cpu' se quema durante los segundos, sin embargo, también se muestra la columna 'cp' con -m, y pueden mostrar diferentes totales. Por ejemplo:

Cuando uso el indicador -m, obtengo

 $sa -m | grep username
 username 14944      65.53re      29.90cp     5308k

Cuando uso el indicador -u y totalizo la columna para 'cpu', obtengo lo siguiente:

 sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
 1032.86

¿Alguien puede ayudarme a entender la diferencia entre las columnas 'cp' y 'cpu' en estos dos modos diferentes?

¡Gracias!

Respuesta1

Permítanme usar un ejemplo para ayudar a explicar lo que muestran los resultados anteriores:

Primero: creé un script bash que ejecuté como el usuario patrickr y que estaba destinado a poner suficiente carga en el sistema para que se notara.

#!/bin/bash
#this file is named loop_script.sh
for i in {1..5000}
do
   echo "Welcome $i times"
done

Segundo: desinstalé y luego reinstalé acct para que mis archivos en /var/log/acct estuvieran actualizados. Cree una copia del archivo /var/log/acct/pacct para que en el futuro pueda truncar fácilmente el archivo con un archivo formateado correctamente (no puede simplemente eliminar y volver a crear el archivo; sa dejará de funcionar si lo hace). ). Tenga en cuenta que este archivo es un registro de todos los comandos del sistema y, hasta donde yo sé, no hay forma de extraer partes del registro en función de períodos de tiempo.

Tercero: luego ejecuté este script dos veces como patrickr.

patrickr@hostname:~$ bash loop_script.sh

Te daré los resultados y luego te los explico:

Se ejecutó como root (o cualquier usuario distinto de patrickr) Después del primer bucle como patrickr:

**sa -m**
                            24       0.09re       0.03cp         0avio       894k
root                        22       0.07re       0.02cp         0avio       853k
patrickr                    2       0.02re       0.01cp         0avio      1336k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash             

Después del segundo bucle como patrickr:

**sa -m**
                            30       0.09re       0.03cp         0avio       850k
root                        27       0.07re       0.02cp         0avio       814k
patrickr                    3       0.02re       0.01cp         0avio      1178k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash            
patrickr   0.35 cpu     1336k mem      0 io bash            
patrickr   0.00 cpu      863k mem      0 io ls  (I happened to also run ls at patrickr)

**sa -u**

The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp

Esto es lo que estás viendo:

sa -m muestra promedios de toda la actividad de este servidor en el tiempo extra. Este archivo crece con el tiempo a medida que se ejecutan más comandos.

sa-u | grep patrickr muestra la suma del tiempo del sistema y del usuario en minutos de CPU para comandos específicos.

Ejecutando: sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{imprimir TOTAL}'

Le dará un total combinado para el usuario patrick, pero el comando sa -m en realidad le proporciona promedios. Eche un vistazo a los valores de la memoria si necesita un segundo ejemplo. También están promediados.

Si sumo los tres resultados enumerados anteriormente para patrickr, 0,35 + 0,37 + 0,0 y lo divido por 106 y lo redondeo a la centésima más cercana, obtendré 0,01cp.

El resultado de 0.01cp es la carga promedio del usuario patrickr en el sistema en comparación con toda la carga en el sistema desde el momento en que se instaló la aplicación de cuenta (es decir, desde que el archivo /var/log/acct/pacct comenzó a realizar el seguimiento).

Output Fields
cpu   -  sum of system and user time in cpu minutes
re    -  actual time in minutes
k     -  cpu-time averaged core usage, in 1k units
k*sec -  cpu storage integral (kilo-core seconds)
u     -  user cpu time in cpu minutes
s     -  system time in cpu minutes

Un buen recurso que le ayudará está encomenzarlinux.com(enlace original encontradoaquí).

información relacionada