¡Esta es una revisión vieja del documento!
Tabla de Contenidos
LPI Topic 200: Capacity Planning
- 200.1: Recursos y Medidas para la resolución de problemas (6)
- 200.2: Predicción de futuros recursos (2)
200.1: Recursos y Medidas para la Resolución de Problemas
Monitorizar recursos:
- CPU
- Memoria (RAM/SWAP)
- Carga del sistema (Load Average)
- Consumo de recursos de red (Network)
iostat
Monitor de I/O y CPU
Necesario instalar el paquete sysstat
iostat [options] [interval] [count] [device]
- c: estadísticas CPU
- d: estadísticas de los dispositivos
Datos de un dispositivo:
iostat /dev/sda
Ejemplo de salida:
Linux 4.19.0-14-amd64 (debian10) 	03/27/2021 	_x86_64_	(2 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.00    0.14    0.02    0.00   99.78
Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               2.91        57.48         1.63      95315       2701
Si queremos que la información de CPU (también funciona para dispositivos) se actualice cada 2 segundos, pero 5 veces:
iostat -c 2 3
Ejemplo de salida:
Linux 4.19.0-14-amd64 (debian10) 	03/27/2021 	_x86_64_	(2 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.00    0.13    0.02    0.00   99.79
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00
Salida en dispositivos
- tps: transferencias por segundo
- kB_read/s: lecturas por segundo en KB
- kB_wrtn/s: escrituras por segundo en KB
- kB_read: total de lecturas en KB
- kB_wrtn: total de escrituras en KB
Salida en CPU
- %user: uso CPU durante ejecución a nivel de usuario
- %nice: uso CPU durante ejecución con nice (prioridad)
- %system: uso CPU durante ejecución a nivel de sistema (kernel)
- %iowait: tiempo ocioso de CPU a la espera de operaciones I/O
- %steal: tiempo dedicado a la espera de la CPU virtual mientras el hipervisor atendría otros procesadores virtuales (si estamos virtualizando sobre la máquina)
- %idle: tiempo ocioso de CPU sin esperar operaciones
vmstat
Estadísticas de memoria virtual sobre procesos, memoria, paginación, bloques I/O y utilización de CPU
vmstat [options] [delay] [count]
vmstat 2 3
Ejemplo de salida:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 859744 12056 88900 0 0 26 1 12 33 0 0 100 0 0 0 0 0 859736 12056 88936 0 0 0 0 20 26 0 0 100 0 0 0 0 0 859736 12056 88936 0 0 0 0 14 18 0 0 100 0 0
Actualiza la información cada 2 segundos, 3 veces y finaliza.
Salida
Columna de procs:
- r: indica el número de procesos actualmente en la cola de ejecución
- b: indica el número de procesos actualmente en la cola de bloques. Estos procesos están a la espera de un dispositivo.
Columna de memory:
- swpd: indica la cantidad de memoria virtual uytilizada en KB
- free: indica la cantidad de memoria libre,que no está en uso
- buff: indica la cantidad de memoria asignada a buffers, esta contiene bloques de disco sin procesar.
- cache: indica la cantidad de memoria cache (contiene archivos)
Columna de swap:
- si: indica la cantidad de memoria que se intercambia desde el disco (a la swap)
- so: indica la cantidad de memoria que se intercambia hacia el disco (desde la swap)
Columna io:
- bi: indica la cantidad de bloques por segundo que se recibe desde un dispositivo de bloques
- bo: indica la cantidad de bloques por segundo que se envía a un dispositivo de bloques
Columna system:
- in: indica el número de interrupciones por segundo. Las interrupciones son las peticiones que hacen los dispositivos para acceder a la CPU.
- cs: muestra el número de cambios de contexto por segundo. La CPU tiene varios hilos de ejecución y cada uno se corresponde con un proceso. La CPU puede desatender ese hilo para pasar a otro y volver luego. Cada uno de esos “saltos” es lo que se conoce como cambio de contexto.
Columna cpu:
- us: muestra el porcentaje de tiempo dedicado a la ejecución de código que no es del kernel
- sy: muestra el porcentaje de tiempo dedicado a la ejecución de código del kernel
- id: muestra el porcentaje de tiempo de inactividad
- wa: muestra el porcentaje de tiempo de espera para I/O
- st: muestra el porcentaje de tiempo robado por una máquina virtual
netstat
Listado de las conexiones activas de nuestra máquina. Además, permite obtener información de la red y los protocolos utilizados.
netstat [opciones]
- i: estadísticas de las interfaces de red (como un- ifconfigo- ip link)
- r: muestra las tablas de rutas (como el comando- route)
Lo habitual es usarlo para listar las conexiones que tiene el sistema, ips de origen y destino, etc:
netstat -putan
Ejemplo de salida:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 434/sshd tcp 0 0 192.168.2.10:22 192.168.2.1:33500 ESTABLISHED 561/sshd: vagrant [ tcp6 0 0 :::111 :::* LISTEN 1/init tcp6 0 0 :::22 :::* LISTEN 434/sshd udp 0 0 0.0.0.0:68 0.0.0.0:* 533/dhclient udp 0 0 0.0.0.0:111 0.0.0.0:* 1/init udp6 0 0 :::111 :::* 1/init
ps
Muestra la lista de procesos en ejecución.
Tiene muchísimas opciones, pero algunos casos típicos:
ps -ef
La más usada:
ps aux
Ejemplo de salida:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.9 21992 9976 ? Ss 14:50 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 14:50 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 14:50 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 14:50 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< 14:50 0:00 [kworker/0:0H-kblockd] root 8 0.0 0.0 0 0 ? I< 14:50 0:00 [mm_percpu_wq] root 9 0.0 0.0 0 0 ? S 14:50 0:00 [ksoftirqd/0] root 10 0.0 0.0 0 0 ? I 14:50 0:00 [rcu_sched] root 11 0.0 0.0 0 0 ? I 14:50 0:00 [rcu_bh] root 12 0.0 0.0 0 0 ? S 14:50 0:00 [migration/0] root 14 0.0 0.0 0 0 ? S 14:50 0:00 [cpuhp/0] root 15 0.0 0.0 0 0 ? S 14:50 0:00 [cpuhp/1] root 16 0.0 0.0 0 0 ? S 14:50 0:00 [migration/1] root 17 0.0 0.0 0 0 ? S 14:50 0:00 [ksoftirqd/1] (...)
Salida
- UID: usuario propietario del proceso
- PID: identificador del proceso
- PPID
- C
- STIME
- TTY: terminal a la que está asociada
- TIME
- CMD
pstree
Muestra la misma lista de procesos que ps y top, pero la salida se obtien en formato árbol viendo así la dependencia que tienen los procesos.
w
Muestra la información de los usuarios actualmente conectados y las mismas estadísticas que el comando uptime.
load average debe ser menor que 1. si lo supera, la carga es elevada.
lsof
Muestra información acerca de los ficheros abiertos y sus correspondientes procesos,
lsof +d /var/log
- +d: es para indicar directorio en lugar de fichero.
Este comando es interesante para saber qué procesos están asociados a determinados ficheros.
free
Muestra una visión en tiempo real de la cantidad de memoria física y virtual de un sistema
free [options]
- l: muestra estadísticas detalladas del consumo de memoria
- k: muestra las estadísticas en kB
- m: muestra las estadísticas en MB
- g: muestra las estadísticas en GB
top
Muestra una visión en tiempo real del sistema en ejecución
También podemos conocer el proceso que más memoria consume (o CPU) o incluso modificar la prioridad o matarlo.
uptime
Muestra el tiempo que el sistema lleva en funcionamiento, el número de usuarios conectados y la carga del sistema en los últimos 1, 5 y 15 minutos.
sar
Recoge informes o guarda información de la actualidad del sistema para poder hacer consultas posteriormente.
sar forma parte del paquete sysstat
sar [options] [interval] [count]
sar -b 1 2
sar necesita que esté funcionando el servicio sysstat y que la recopilación de datos esté activada desde el fichero /etc/default/sysstat:
ENABLED="true"
200.2: Predicción de Futuros Recursos
Haciendo uso de las herramientas y conocimientos del topic 200.1, debería ser posible diagnosticar el uso de los recursos de los componentes o procesos específicos.
Los pasos para predecir las necesidades futuras podrían ser:
- Decidir qué medir
- Utilizar las herramientas adecuadas para medir y registrar los datos correspondientes y sus dispositivos
- Analizar los resultados de la medición, comenzando por aquellos donde las fluctuaciones sean mayores.
- Predecir las necesidades futuras basadas en el análisis.
Además de sar, collectd es una de las herramientas que se pueden utilizar para controlar una infraestructura de TI.
collectd
Deminio que recoge las estadísticas de rendimiento del sistema periódicamente y proporciona mecanismos para almacenar los valores de diferentes formas.
Las estadísticas se pueden utilizar para:
- Los cuellos de botella de rendimiento actuales (análisis de rendimiento)
- Predecir la carga del sistema futuro (planificación de capacidad)
Características:
- Escrito en C (rendimiento y portabilidad)
- Incluye más de 90 plugins
- Proporciona características de red de gran alcance y es extensible de muchas maneras.
