Monitorizar rendimiento (Unix)

Resource type
Documentación

Es habitual en entornos Data Warehouse encontrarse con problemas de rendimiento y sobrecarga de máquina.

 

A continuación se listan comandos Unix para revisar procesos y temas de rendimiento (CPU, memoria). Son comandos que se pueden integrar en un script de Unix para revisar la situación de la máquina. Cada vez, las herramientas de integración de datos facilitan utilidades que muestran trazas sobre el rendimiento, pero no deja de ser útil disponer de scripts propios.

 

Procesos en máquina:

ps –ef

 

Para paginar

ps –ef | more

 

Número de procesos de un usuario determinado:

ps -ef -o pid,ppid,pcpu,time,nice,user,vsz

pid: proceso

ppid: proceso padre

pcpu: porcentaje de cpu

time: tiempo desde q empezó el proceso

nice: prioridad

user: usuario

vsz: tamaño del proceso en memoria virtual

comm: comando/script ejecutado

etime: tiempo de ejecución

args: nombre completo del comando ejecutado

 

Consumo CPU y memoria:

ps aux

USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND

root 16388 44,6 1,0 40 20624 - A 22 ago 5448:13 wait

root 24582 44,2 1,0 40 20628 - A 22 ago 5402:35 wait

usuario 1810598 25,0 1,0 57988 30564 - A 12:03:15 0:09

 

El tercer campo es la CPU. El siguiente paso es ordenar la salida de ps aux, queremos que la ordene por el tercer campo. El sort por defecto ordena por el primero, luego hay que indicarle con la opción +2 que se vaya 2 campos más adelante. Por defecto ordena en ascendente, luego para que sea descendente le ponemos –r. Por último hay que considerar que ordena alfabéticamente y queremos que ordene por número esto se lo indicamos con la opción –n. El resultado final es el siguiente:

ps aux | grep usuario | sort -r -n +2

 

Si queremos ordenarlo por memoria usuada, teniendo en cuenta que MEM es el cuarto campo:

ps aux | grep usuario | sort -r -n +3

 

Ver prioridades: campo PRI

ps -ef -o user,pid,pri,comm,pcpu | grep usuario

PRI (-l and l flags) The priority of the process or kernel thread ; higher numbers mean lower priority.

 

También marca la prioridad el campo nice (ni)

ps -ef -o user,pid,pri,ni, comm,pcpu | grep usuario

 

Estadísticas de estado de servidor:

vmstat 2

VMSTAT

 

Donde podemos destacar:

procs: (procesos)

r: ejecutables.

b: bloqueados.

w: desplazados a disco.

memory :(memoria expresada en KB)

free: libre.

Pi: paginación input

Po: paginación output

swap

cpu : (procesador)

us: procesos de usuario.

sy: del sistema.

id: desocupado. Porcentaje CPU inactiva.

in: interrupciones por segundo.

cs: cambios de contexto por segundo.

 

Lo ideal es q pi y po sean 0 lo que indicaría que no hay paginación a disco. (no hace swap para utilizar memoria de disco cuando se queda sin memoria RAM )

Uptime:

 

Comando para evaluar la carga de máquina. Media del número de procesos en el último minuto, cinco últimos minutos y quince últimos minutos

uptime
07:44 activada 13:17, 2 usuarios, promedio de carga: 1,15, 1,21, 1,18

 

Los tres últimos valores representan el numero promedio de procesos en cola de ejecución.

1,15: promedio último minuto

1,21: promedio últimos 5 minutos

1,18: promedio últimos 15 minutos

 

Para saber si un sistema está sobrecargado dividir el valor promedio por el número de procesadores del servidor. Valores por encima de 1 indican sobrecarga.

ps -ef | grep usuario | wc -l

 

Campos de consulta en un ps (listado de proceso)