¡Esta es una revisión vieja del documento!
Tabla de Contenidos
LPI Topic 200: Capacity Planning
Perteneciente a LPIC-2
Los alumnos deben poder medir los recursos de hardware y el ancho de banda de la red, identificar y solucionar problemas de recursos y deben poder monitorizar el uso de recursos para predecir las necesidades futuras.
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 CPUd: 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ónb: 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 KBfree: indica la cantidad de memoria libre,que no está en usobuff: 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 bloquesbo: 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 kernelsy: muestra el porcentaje de tiempo dedicado a la ejecución de código del kernelid: muestra el porcentaje de tiempo de inactividadwa: muestra el porcentaje de tiempo de espera para I/Ost: 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 unifconfigoip link)r: muestra las tablas de rutas (como el comandoroute)
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.
En Debian 10, pertenece al paquete psmisc
Ejemplo de salida:
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VBoxSVC─┬─2*[VBoxHeadless───30*[{VBoxHeadless}]]
│ ├─VBoxHeadless───29*[{VBoxHeadless}]
│ ├─VBoxNetDHCP───2*[{VBoxNetDHCP}]
│ └─13*[{VBoxSVC}]
├─VBoxXPCOMIPCD
├─colord───2*[{colord}]
├─cupsd
├─dbus-daemon
├─firefox─┬─Privileged Cont───24*[{Privileged Cont}]
│ ├─RDD Process───2*[{RDD Process}]
│ ├─Web Content───25*[{Web Content}]
│ ├─2*[Web Content───24*[{Web Content}]]
│ ├─WebExtensions───21*[{WebExtensions}]
│ └─71*[{firefox}]
(...)
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.
Ejemplo de salida:
16:24:36 up 36 min, 1 user, load average: 1,43, 1,19, 0,76 USER TTY LOGIN@ IDLE JCPU PCPU WHAT tempwin tty1 15:48 36:27 5:04 0.00s xinit /home/tempwin/.xinitrc -- /etc/X11/xinit
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.
Ejemplo de salida:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 363 root 7w REG 254,0 207327 2359398 /var/log/syslog rsyslogd 363 root 8w REG 254,0 125147 2359400 /var/log/kern.log rsyslogd 363 root 9w REG 254,0 17018 2359401 /var/log/debug rsyslogd 363 root 10w REG 254,0 109465 2359402 /var/log/messages rsyslogd 363 root 11w REG 254,0 31109 2359403 /var/log/auth.log rsyslogd 363 root 12w REG 254,0 76530 2359399 /var/log/daemon.log rsyslogd 363 root 13w REG 254,0 533 2359320 /var/log/user.log
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 memoriak: muestra las estadísticas en kBm: muestra las estadísticas en MBg: muestra las estadísticas en GBh: formato legible por humanos
free -h
Ejemplo de salida:
total used free shared buff/cache available Mem: 987Mi 51Mi 718Mi 2.0Mi 216Mi 797Mi Swap: 979Mi 0B 979Mi
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.
Ejemplo de salida:
top - 15:27:35 up 37 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 79 total, 1 running, 78 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 987.2 total, 718.2 free, 51.7 used, 217.3 buff/cache
MiB Swap: 980.0 total, 980.0 free, 0.0 used. 797.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1334 vagrant 20 0 10976 3536 3076 R 0.3 0.3 0:00.01 top
1 root 20 0 21992 9976 7728 S 0.0 1.0 0:00.96 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
10 root 20 0 0 0 0 I 0.0 0.0 0:00.07 rcu_sched
(...)
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.
Ejemplo de salida:
15:28:06 up 37 min, 1 user, load average: 0.00, 0.00, 0.00
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"
Ejemplo de salida:
Linux 4.19.0-14-amd64 (debian10) 03/27/2021 _x86_64_ (2 CPU) 01:20:46 PM LINUX RESTART (2 CPU) 01:34:14 PM LINUX RESTART (2 CPU) 02:55:01 PM CPU %user %nice %system %iowait %steal %idle 03:05:01 PM all 0.01 0.00 0.05 0.01 0.00 99.93 03:15:01 PM all 0.04 0.00 0.08 0.01 0.00 99.86 03:25:01 PM all 0.13 0.00 0.05 0.08 0.00 99.74 Average: all 0.06 0.00 0.06 0.03 0.00 99.85
