Escribir un registro de uso de CPU / RAM durante un período de tiempo para archivar en CentOS


8

Estoy buscando una aplicación o línea de código que me permita observar un proceso, guardar la información en una serie de variables y luego poner la información recopilada en un archivo.

He intentado con variaciones de toppero no tuve suerte. Estoy ejecutando varios servidores virtuales CentOS, VM es un procesador de 2GB RAM, 2.

Un script que funciona durante un período de tiempo específico mientras escribe líneas con la información en un archivo de texto para que al final pueda tener una especie de tabla con los datos que funcionen.

Voy a hacer una prueba de esfuerzo del servidor, y me gustaría tener los datos para hacer algunas estadísticas.

Respuestas:


11

El estándar pses suficiente.

while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done

resultado:

0.0  3352
0.3 31640
0.4 36924
0.5 36052
...

El primer campo es el uso de CPU en%, el segundo es el uso de memoria física en kbytes.


eso es perfecto, ya había hecho una secuencia de comandos larga para limpiar todos los datos de una salida de lote superior, pero es mucho mejor y más eficiente que agradezco mucho, ¡gracias!
keponk

al final seguí usando mi script, ya que ps me da el promedio de carga que normalmente es el mismo que el% de CPU pero no es una regla, más información sobre esto en una búsqueda rápida en google
keponk

1
El% CPU aquí no es el% utilizado durante el intervalo, sino el porcentaje promedio durante todo el tiempo de ejecución del programa. Creo que esto es engañoso.
Will Sewell

2

Si le preocupa el tiempo preciso y quiere CPU en porcentaje:

watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'


0

Estás tratando de observar cuánto tiempo de CPU requiere un proceso en particular.

¿Iba a sugerir una herramienta de estadísticas de CPU para CentOS? pero esto lo consigue para todo el sistema, no solo para un proceso.

Cualquier proceso mostrará el tiempo de CPU en la salida de ps:

$ ps -ef | egrep blah
root     13988 11152  0 Dec16 ?        00:00:05 sshd: xxx [priv]
xxx      14024 13988  0 Dec16 ?        00:06:00 sshd: xxx@pts/0
xxx      14032 14024  0 Dec16 pts/0    07:00:00 -bash
root      1194   679  0 Apr24 ?        2-05:15:14 [kswapd0]
root      1195   679  0 Apr24 ?        2-06:35:49 [kswapd1]
  • 00:00:00 son horas / minutos / segundos de CPU. Se acumulará.
  • Necesitará permisos para ver esto si el usuario no es usted.
  • Una vez que este valor supera el día, el formato cambia; arriba son 2 días. Tu rutina de análisis tendrá que manejar esto.

En este punto, analice la salida con Python, trabaje en matemática de fechas y estará listo.


0

El siguiente comando obtiene el promedio de uso de CPU y memoria cada 40 segundos para un proceso específico (pid)

pidstat 40 -ru -p <pid>

Salida para mi caso (primeras dos líneas para uso de CPU, segundas dos líneas para memoria):

02:15:07 PM       PID    %usr %system  %guest    %CPU   CPU  Command
02:15:47 PM     24563    0.65    0.07    0.00    0.73     3  java

02:15:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:15:47 PM     24563      6.95      0.00 13047972 2123268   6.52  java
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.