Tuesday, 23 June 2015

Consejos y trucos, artículos básicos sobre configuraciones que ayudan a un mejor desempeño de nuestros SO's. Cada proceso ha sido personalmente comprobado.





En este blog veremos la parte de comandos referentes a estadísticas, asi que sigamos aprendiendo acerca de los maravillosos y geniales comandos Linux.

El cajón de los comandos Linux es una guía de referencia rápida para todos los usuarios Linux que desean aprender los comandos de este gran SO. Los comandos se dividen en 15 categorías, lo cual nos permite tener un mayor entendimiento acerca de que comando utilizar en una específica situación. El agradecimiento total al creador de esta guía +Bobbin Zachariah.

Esta guía puede ser utilizada ya sea para usuarios nuevos o avanzados, proveyendo el mejor esfuerzo para dar a conocer los comandos Linux más relevantes. 

Así que empecemos con la 2ª parte de los comandos referentes a Estadísticas.

$ mpstat 

Generalmente hoy en día las computadoras usan varios procesadores, o probablemente uno físico con digamos 4 núcleos, tanto en el lado de los servidores como en un ordenador casero más procesadores con más núcleos significa mayor potencia. Por otro lado, las aplicaciones también usan más recursos; probablemente nos encontremos en una situación en donde el uso del CPU es alto y aunque sientas que no estás corriendo ningún programa, en los sistemas Linux podemos monitorizar esta actividad utilizando mpstat.

¿Qué es mpstat?

Este comando es utilizado para ver el uso que esta teniendo el sistema, y por supuesto será más útil si tu sistema tiene múltiples procesadores. El primer procesador será asignado como CPU 0, el segundo será visto como CPU 1 y así sucesivamente. Del manual en terminal, mpstat es descrito como:
El comando mpstat escribe las actividades promedio para cada procesador disponible, el procesador 0 siendo el primero. También son reportadas las actividades globales promedio entre todos los procesadores; el comando mpstat puede ser usado tanto en maquinas SMP y UP en estas últimas solamente las actividades globales promedio serán imprimidos. Si no hay actividad seleccionada, solo nos reportará la utilización del CPU que muestra por defecto.

¿Cómo ejecutamos mpstat?
Simplemente escribimos en nuestra consola mpstat.



Si encontramos un error tal como: comando no encontrado o algo similar es porque necesitamos instalarlo, si tu distribución es de la familia CentOS, Redhat o Fedora solo ejecutamos en la terminal: yum install sysstat y para los usuarios de la familia Debian y sus derivados: apt-get install sysstat.

Y aquí esta como leemos la información:

21:42:24: Significa la hora en que ejecutamos mpstat.
all: Quiere decir todos los CPUs.
%usr: Muestra el porcentaje de utilización de CPU que ocurre a la hora que
          el usuario ejecuta una aplicación.
%nice: Imprime el porcentaje de la utilización del CPU cuando el usuario
           ejecuta programas con prioridad "nice".
%sys: Muestra el uso de CPU que ocurre mientras el sistema ejecuta tareas
          en el fondo (kernel).
%iowait: Esto es el porcentaje de tiempo que el CPU o CPUs estuvieron
              desocupados durante el cual el sistema tenía requerimientos
              pendientes de I/O del disco.
%irq: Imprime el porcentaje de tiempo gastado por el CPU al servicio de las
         interrupciones del hardware.
%soft: Muestra el porcentaje de tiempo gastado por el CPU al servicio de las
            interrupciones de software.
%steal: Imprime el tiempo involuntario de espera de parte del CPU o CPUs
            mientras el "hypervisor" estaba dedicado a otro proceso virtual.
%guest: Nos muestra el porcentaje de tiempo gastado por el CPU al correr
             un proceso virtual.
%idle: Imprime el porcentaje de tiempo que el CPU o CPUs estuvieron
          inactivos y el sistema no tenía procesos de I/O dentro del disco.


Obtener utilización de CPU por procesador.
Como pueden ver arriba mi sistema tiene 2 CPUs, para obtener información de uno en específico, podemos usar el parámetro -P seguido del número del CPU.




Imprimir la utilización de todos los CPU.
Sin embargo si queremos listar todos los procesadores en una sola página simplemente utilizamos el parámetro -P ALL para hacerlo.



Obtener utilización de CPU usando intervalos.
También si queremos ver los movimientos de la utilización de CPU podemos usar intervalos, aquí les muestro un ejemplo:


En esta imagen arriba es para que nos muestre 4 reportes de utilización de CPU en intervalos de 3 segundos.


Para ver la versión de la herramienta mpstat que estamos utilizando, usamos el parámetro -V, así:



Esto ha sido todo en cuanto al comando mpstat, para más información referirse a help, info o man en la consola.


$ vmstat

Como ya sabemos un ordenador debe tener memoria a la cual llamamos RAM para hacer que la computadora funcione; la RAM, se refiere a la memoria física que se instala en la tarjeta madre de la computadora. Este se utiliza para cargar aplicaciones tales como: navegador, procesadores de texto, etc.
Así que los programas que estamos utilizando están corriendo a la memoria.
Digamos que tenemos 2GB de memoria, cuando corremos un sistema operativo probablemente diga que tu memoria es únicamente 1.5GB así que activamente estamos usando ya varias aplicaciones; cuando el uso de tu memoria está completo ya no podemos cargar más programas, básicamente el ordenador nos diría "lo siento no puedes cargar más aplicaciones, por favor cierra algunas de ellas para poder ejecutar las que necesites".
Para resolver este problema los sistemas operativos incluyendo Linux usan un metodo llamado memoria virtual, este metodo buscará el área de la memoria la cual no ha sido usada recientemente por algún programa y luego copiarlo dentro del disco duro en el ordenador, esto por supuesto nos da la oportunidad de correr más tareas.
Para monitorizar estas actividades podemos utilizar la herramienta vmstat.

¿Qué es vmstat?
Es una herramienta que provee un reporte de estadísticas de la memoria virtual, cubre memoria de sistema, memoria de intercambio y utilización de procesos en tiempo real.


¿Cómo ejecuto vmstat?
Lo mismo que con mpstat, vmstat es incluido dentro del paquete sysstat sino lo tienes recuerda que acá arriba te explico como instalarlo para la familia Redhat y Debian. Para correrlo simplemente abrimos nuestra consola y escribimos vmstat que al ejecutarlo sin parámetro nos muestra los resultados por defecto:


Veamos ahora como leer la información que nos provee vmstat.

Procs
Procs tiene columna r y b, la columna r significa el total de número de procesos esperando acceso al procesador, mientras que la columna b nos muestra el total de procesos que no están inactivos. Abajo de estas columnas se encuentran valores, de la imagen aquí arriba tenemos 2 procesos esperando acceso al procesador y 0 para procesos inactivos.

Memory
La memoria tiene las columnas swpd, free, buff y caché.  Esta información es igual que el comando free -m, la columna swpd nos muestra acerca de cuanta memoria ha sido intercambiada a la memoria virtual o disco, la columna free  nos muestra la memoria disponible no localizada, la columna buff significa cuanta memoria está en uso y la columna caché imprime acerca de cuanta memoria puede ser intercambiada dentro del archivo de memoria virtual o disco; si es que hay aplicaciones que necesiten alojarse en ella.

Swap
Esta nos muestra cuanta memoria es enviada o recuperada del sistema o memoria virtual. La columna si nos dice cuanta memoria es movida de la memoria virtual a la real por segundo; mientras que la columna so nos dice cuanta memoria ha sido movida de la memoria real a la de intercambio.

I/O
La columna io nos muestra la cantidad de actividad de entrada y salida por segundo en término de bloques leídos y bloques escritos.
La columna bi nos dice acerca del número de bloques recibidos y la bo el número de bloques enviados.

System
Esta nos imprime el número de operaciones en el sistema por segundo, la columna in nos dice acerca del número de interrupciones en el sistema por segundo; y la columna cs nos habla del número de cambios de contexto que el sistema hace para llegar a procesar todas las tareas. 

CPU
Este nos permite ver el uso de recursos de los CPU's, la columna us nos muestra cuanto tiempo el procesador gasta en procesos que no son del kernel; la columna sy nos dice cuanto tiempo el procesador ocupa en tareas relacionadas al kernel, la columna id nos dice cuanto tiempo el procesador ha estado inactivo y la columna wa que nos muestra cuanto tiempo el procesador ha estado esperando completar operaciones de I/O antes de poder continuar otros procesos. 

Usando vmstat con retraso.
Al ser esta una herramienta de estadísticas la mejor manera de utilizar vmstat es con retraso, de esta manera podemos capturar las actividades periódicamente. Digamos que queremos ejecutar vmstat cada 5 segundos, para hacerlo simplemente escribimos vmstat 5.


El comando se ejecutará cada 5 segundos hasta que presionemos ctrl+c para detenerle.
Podemos utilizar un límite de conteo para el número de veces que vmstat correrá.


El comando de la imagen aquí arriba nos indica que vmstat se ejecutará cada 5 segundos únicamente 7 veces.

Mostrar memoria activa e inactiva.
Para hacer esto agregamos el parámetro -a después de vmstat:


Imprimir un resumen de estadísticas de disco.
Con esta herramienta también podemos obtener estadísticas del disco del sistema, para imprimir esta información utilizamos el parámetro -D.




Mostrar los resultados en unidades.
Podemos escoger que caracter de unidad queremos que se muestre al imprimir la información, para esto utilizamos -S seguido por k (1000), K (1024), m (1000000), M (1048576), bytes.
Si no escogemos tipo de unidad vmstat usará K (1024).


Ver detalles estadísticos de una partición específica.
Para lograr esto usamos el parámetro -p seguido del nombre de la partición, veamos como:


Archivos.
Los archivos que utiliza vmstat para funcionar son:
/proc/meminfo
/proc/stat
/proc/*/stat

Conclusión.
Si sentimos que a nuestro sistema le hace falta memoria, antes de agregar memoria física, esta herramienta puede ayudarnos a determinar la principal causa del problema. Como es usual, podemos explorar mas detalles acerca del comando vmstat con help, man o info en la consola para poder ver su manual. 



$ iostat

La unidad central de procesamiento o CPU es el cerebro de la computadora, todos los comandos que se procesan se ejecutan aquí. Los de entrada y salida I/O juegan un papel crítico; el disco es usado para proveer data al procesador y mantener la información que ha sido procesada por el CPU. Uno de los métodos para medir el uso de un proceso y la utilización de I/O es usando el comando iostat, del uso de este podemos decidir si necesitamos más recursos o no.

¿Qué es iostat?
Este comando lo usamos para monitorizar el sistema de carga de dispositivos de I/O de esta manera obtenemos el tiempo que los dispositivos están activos en relación a sus promedio de transferencia. Iostat crea un reporte que puede ser utilizado para cambiar la configuración del sistema y balancear mejor la e/s entre los discos físicos.

Instalando iostat.
Esta herramienta está incluida en el paquete sysstat,  si aún no lo tienen recuerden que acá arriba explico como instalarlo, para los usuarios de la familia Debian y RHEL.

¿Cómo corremos iostat?     
Simplemente abrimos nuestra terminal y escribimos iostat, así:


Y aquí esta como leemos la información:

La primera sección contiene reportes de CPU. 

- %user: Muestra el porcentaje de uso de CPU que ocurre mientras se   
           ejecuta una aplicación a nivel usuario.
- %nice: Aquí podemos ver la utilización del CPU que ocurre al ejecutar
           tareas a nivel de usuario con prioridad "nice".
- %system: Muestra el uso de CPU que ocurre mientras el sistema
                   ejecuta tareas en el fondo (kernel)
- %iowait: Esto es el porcentaje de tiempo que el CPU o CPUs estuvieron
                desocupados durante el cual el sistema tenia requerimientos
                pendientes de I/O del disco.
- %steal: Imprime el tiempo involuntario de espera del parte del CPU o CPUs
              mientras el "hypervisor" estaba dedicado a otro proceso virtual.
- %idle: Imprime el porcentaje de tiempo que el CPU o CPUs estuvieron
            inactivos y el sistema no tenía procesos de I/O dentro del disco.

La segunda columna tiene un reporte de utilización del dispositivo.

- Device: El nombre del dispositivo/partición tal y como lo muestra /dev.
- tps: Imprime el número de transferencias por segundo que fueron dadas
        al dispositivo, un alto tps significa un procesador más ocupado.
- Blk_read/s: Nos muestra el volumen de data leído del dispositivo
                      expresado en un número de bloques (KB, MB) por segundo.
- Blk_wrtn/s: Aquí vemos el volumen de datos escritos al dispositivo
                      expresado en número de bloques (KB, MB) por segundo.
- Blk_read: Muestra el número total de bloques leídos.
- Blk_wrtn: Imprime el número total de bloques escritos.

Captura de iostat en kilobytes o megabytes.

Por defecto iostat mide el sistema I/O en unidades bytes, si queremos hacer una lectura más fácil, podemos convertir iostat para que nos reporte en unidades kilobytes o megabytes; únicamente agregamos el parámetro -k para crear un reporte con unidades kilobytes y el parámetro -m para hacer un reporte con unidades megabytes.




Para extender el reporte podemos utilizar el parámetro -x después del comando iostat.



Utilizar iostat con retraso.
Al igual que vmstat, por ser una herramienta de estadística la mejor manera de usar iostat es con un parámetro de retraso; de esta manera podemos ver las tendencias. Aquí unos ejemplos donde ejecuto iostat con retraso:

Ejecutar iostat en unidades kilobytes, con intervalo de 2 segundos y 3 reportes.

Mostrar reporte de CPU con intervalo de 3 segundos y 6 reportes.


Imprimir reporte de los dispositivos sda2 y sda5 con intervalo de 2 segundos y 4 reportes.


Archivos.
Para crear los reportes iostat utiliza:
/proc/stat el cual contiene estadísticas del sistema.
/proc/partitions este contiene estadísticas de disco (kernel antes del 2.5 solo parchado).
/proc/diskstats contiene estadísticas del disco (utilizando kernel 2.5 o más reciente).
/sys el cual contiene estadísticas para dispositivos de bloques (utilizando kernel 2.5 o más reciente).

Conclusión.
Con vmstat monitorizamos uso de memoria, con iostat el uso del CPU y el sistema de entradas y salidas, dos poderosas herramientas para revisión de componentes en nuestro ordenador. Una de las ventajas de estas herramientas es que las podemos utilizar sin privilegios de super usuario. Para más información acerca del comando iostat referirse a info, help o man en la consola.

Saludos especiales a tod@s espero este aporte pueda ser de su ayuda. Si les fue útil compartan o comenten.







No comments:

Post a Comment