¿Quieres dar formación sobre rendimiento en Solaris/OpenSolaris a tus técnicos?

A raíz del interés mostrado en las últimas charlas he decidido ofrecer mis servicios para consultoría y formación a empresas.

Ponte en contacto conmigo para pedir información.

1.- La llamada.

Los problemas de performance son un tema recurrente en la vida de un administrador de sistemas, normalmente suelen llegar en forma de incidencia bajo el eufemismo "lentitud en el sistema" o parecido, que en realidad significa "No tenemos ni idea de que está pasando".

Ante estas situaciones mis sentimientos son encontrados. Por un lado tienes la oportunidad de usar tus conocimientos e investigar el origen de una incidencia, lo cual no deja de ser atractivo. Los problemas empiezan cuando el diagnóstico no depende de ti solo, en realidad suele hacer falta la colaboración de la gente de comunicaciones, BB.DD., aplicaciones, etc. Invariablemente siempre te encuentras con algún personaje más interesado en pasar el marrón a otro que en colaborar para encontrar la solución.

arrow Los jefes

Hay otro elemento que todavía no he mencionado, tu jefe, o aun peor, el jefe de tu jefe. Normalmente las situaciones donde el performance se ve degradado suele venir acompañado de cierto nerviosismo por parte de las grandes esferas, en lo que a ti respeta se traduce en presión para resolver el problema lo antes posible.

Sin embargo un diagnóstico de este tipo suele llevar bastante tiempo, muchas veces es complicado dar con la causa raíz del problema. No obstante, es importante que sepas dar una primera valoración rápida de lo que esta ocurriendo en el equipo. Un prolongado silencio puede dar pie a teorías de lo más disparatadas por parte de tus colegas, que en el peor de los casos podrían ser creídas por tus responsables.

arrow Los problemas tienen un origen

Si, es obvio verdad? Cuando se produce una degradación del sistema siempre hay una causa. Algo que parece indiscutible es discutido muchas veces en el mundillo de la informática, cuantas veces habré escuchado frases del tipo, "Se habrá quedado algo colgado", "Habrá bloqueos", "Está pillado", etc. y después se suelen acompañarse de la sugerencia "reiniciemos el equipo".

Reiniciar vs no reiniciar

Salvo que tu puesto de trabajo corra peligro nunca reinicies un equipo sin haber tratado de realizar un diagnóstico antes, por suerte dispones de un sistema sumamente observable, es decir, tienes a tu mano una serie de herramientas que, junto con el conocimiento necesario, te permitirán determinar la causa del problema. Aunque un reinicio a priori puede solucionar las cosas en un elevado porcentaje de ocasiones, solo conseguirás que la incidencia reaparezca en unas horas o días y tu nivel de conocimiento de la causa seguirá siendo el mismo que antes, es decir, 0.

Créeme, aunque muchas veces tus responsables no sean conscientes, seguro que prefieren tener la producción degradada o incluso parada durante un rato a que la misma incidencia se reproduzca de forma cíclica. Si el problema es realmente crítico puedes obtar por generar un live core "#savecore -L" y realizar un análisis posterior de la imagen del kernel. Ten en cuenta que en sistemas con mucha RAM el volcado puede demorar un rato.

arrow Primeras valoraciones

Lo que sigue no pretende ser una Biblia de los pasos a seguir, en ocasiones puede ser necesario un mayor grado de profundización antes de valorar la situación, otras veces el cuello de botella es tan evidente que puedes obviar muchos de los pasos aquí descritos.

Tanteo:

Mi primer comando a ejecutar suele ser #w. Es un comando ligero con el que obtienes información bastante útil, el uptime del equipo, su load average y los usuarios conectados junto al comando que están ejecutando.

root@box # w 9:28am up 135 day(s), 18:29, 3 users, load average: 3.96, 3.67, 3.91 User tty login@ idle JCPU PCPU what explot pts/1 8:15am 1 9:48 sqlplus /script oracle pts/2 8:39am 50 tail -25f /opt/oracle/app/oracle sistemas pts/3 9:05am -bash

El load average es un parámetro engañoso, su nombre puede llevar a confusión, parece ser un calculo de la carga del sistema. Sin embargo es la media del número de threads en las run queues, es decir, un elevado load average puede ser síntoma de saturación de cpu pero no tiene en cuenta otros aspectos como puede ser memoria, i/o, red, etc.

Comprobar recursos:

Uno de mis comandos preferidos es el vmstat, proporciona muchísima información a simple vista. Lo normal sería lanzar un #vmstat 5 y dejarlo un buen rato ejecutándose. La primera linea son estadísticas desde que se arrancó el sistema, por lo que en nuestro caso debe ser ignorada.

root@box # vmstat 5 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr 2m m0 m1 m2 in sy cs us sy id 1 0 0 42157120 7573496 585 2219 1920 7 9 0 6 44 2 1 1 19612 34991 12905 42 15 43 0 0 0 41882080 7348816 546 2233 2175 0 0 0 0 35 0 0 0 12435 29385 6561 32 9 59 0 0 0 41882512 7344728 584 2393 2162 0 0 0 0 36 20 19 19 10922 32580 7231 28 9 63 0 0 0 41884936 7342656 628 2809 2174 0 0 0 0 35 0 0 0 11673 43611 8204 31 9 60 [...]

Varios son los datos interesantes para nuestra primera aproximación:

La columna r: Es el número de procesos esperando en las run queues, idealmente debería ser 0, lo que indicaría que cualquier thread en condiciones de ser ejecutado ha encontrado un procesador libre. Si el valor de r supera el número de procesadores de nuestro sistema estamos empezando a saturar, si lo duplica estamos ante una situación de saturación y la performance empieza a verse degradada.

La columna sr: Es el número de veces que se ha ejecutado el