Skip to content

200 Planificación de la capacidad

200.1Medir y solucionar problemas relacionados con la utilización de recursos

Gestión de los recursos

El administrador del sistema debe ser capaz de identificar los recursos disponibles para el sistema y controlar su uso por parte del sistema y de las aplicaciones

Principales tipos de recursos:

  • El proceso de lo procesos
  • La memoria RAM
  • El espacio de almacenamiento
  • La red

Fuentes de información sobre los recursos

Para poder cuantificar cada tipo de recurso y controlar en tiempo real su uso. Linux proporciona diferentes fuentes de información, que son interfaces de comunicación con el núcleo, comandos o archivos de registro.

Pseudosistemas de archivos procfs y sysfs

Los pseudosistemas de archivos procfs y sysfs (también llamados proc y sys). Se trata de una interfaz, en forma de árbol de directorios y de archivos especiales, gestionada por el núcleo.

 mount                     
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
...

El pseudosistema de archivos sysfs permite la gestión unificada de los bus, controladores y dispositivos desde una arborescencia virtual. Sobre todo lo utilizan los controladores de dispositivos y aplicaciones especializadas.

El directorio /proc contiene todos los procesos del sistema entre otras caracteristicas

/proc/sys       # Información general sobre los recursos de la máquina y de su uso.
/proc/version   # version del nucleo
/proc/sys       # configuración del nucleo (algunos se pueden modificar dinamicamnte)

/proc/1*            # procesos del sistema
/proc/2700/cmdline  # comando ejecutado
/proc/2700/environ  # variables de entorno
/proc/2700/fd       # info archivos abiertos
/proc/2700/fd/3     
/proc/2700/status   # info estado del proceso

Muchos de clos archivos dentro de /proc se pueden modificar, pero esta información se perdera al reiniciar

Los registros del sistema

El sistema y las aplicaciones utilizan los servicios de un demonio de gestión de registros, syslogd (o uno de sus derivados).

udev: Es responsable de la identificación y configuración de los dispositivos en el arranque del sistema. En el arranque muestra en consola el informe y lo almacena en memoria.

Es un sistema de archivos virtual en /dev/ donde se crearán o eliminaran ficheros que representan dispositivos según estén disponibles o no.

Comandos de control instantáneo

ps y sus derivados

ps      # visualizar
pstree   # visualizar en arbol
pgrep   # visualizar pid y nombre
pidof   # visualizar pid de proceso

top herramienta interactiva para gestion de procesos en tiempo real

El paquete sysstat proporciona diferentes herramientas

mpstat          # rendimiento del systema
mpstat -P ALL   # rendimieno de todas las CPU
pidstat         # rendimiento de cada proceso, simil a top
pidstat -C "mysql"  # filtrar por un proceso
pidstat -t -C "mysql"   # modo arbol
pidstat -C "mysql" -d   # rendimiento de proces en disco
iostat  # rendimiento de discos

Herramientas graficas:

  • Monitor del systema
  • collectd demonio que utiliza un website para mostrar los recursos del sistema

Seguimiento y control de recursos del procesador

Los recursos del procesador de la máquina permiten gestionar correctamente las aplicaciones, ejecutando el código con un rendimiento satisfactorio.

Para ello es preciso que la potencia del prodesador sea suficiente y que las colas de acceso al procesador no sean muy grandes.

Información sobre los recursos del procesador

/proc/cpuinfo Muestra el número y tipo de procesadores. También es posible ver esta información desde dmesg o el monitor del sistema.

Uso de los recursos del procesador

El comando ps

ps 
-u [user o UID] # procesos de un usuario
-t[0-9] # procesos conectados tty indicada
-l  # visualización larga
-w  # visualización detallada
-e  # todos los procesos

U Users # procesos de un usuario
a   # procesos asociados a terminal
x   # procesos desasociados
l   # visualización larga
u   # visualización larga, usuario
aux # opcion mas usual  

pstree -ps <num proceso>  
-p  # proceso
-s  # arbol  
-a  # mostrar todo sin agrupaciones

El comando top (o cualquiera de sus variantes) permite controlar a intervalos regulares la evolución de los procesos y el consumo de recursos del sistema

top -hv|-bcHisS -d tiempo -n límite -u|U user -p PIDs -w [columnas]

El comando strace permite visualizar todas las lamadas al sistema que produce un proceso.

strace comando [arg ...]
strace -p pid

strace ls -l /etc/hosts
strace -p 3879 

Seguimiento y control de la memoria

Información sobre la memoria

/proc/meminfo   # inf en tiempo real de la memoria
# info de swap
swapon -s   # deprecated
/proc/swaps 
swapon --show

Uso de la memora

free
-[bkmg] # output del tamaño a mostrar
-h      # formato humano Gi

vmstat 
-S unidad   #  1000 (k), 1024 (K), 1000000 (m), or 1048576 (M) bytes
-s  # formato tabla
-t N    # timestamps cada Numero de segundos vmstat -S M 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 0  0      0   8660   1638   3538    0    0    53    63   64  704 11  3 86  0  0

 top -m
 ps -o user,size,rss,pcpu,pmem,vsz,cmd 7222 # datos de memoria de un proceso
 /proc/7222/status  # datos de memoria de un proceso, desde archivo

Seguimiento y control de recursos en disco

Información sobre recursos de discos

fdisk -l        
fdisk /dev/sda
gdisk /dev/sda
lsusb   # detectar dispositivos usb

# deteccion de discos desde archivos
/sys/block  # su contenido es un link al lugar pinchado en la placa 
sda -> ../devices/pci0000:00/0000:00:01.3/0000:01:00.1/ata1/host0/target0:0:0/0:0:0:0/block/sda
/sys/block/sda/size

/proc/partitions    # particiones detectadas

smartdmontools instala herramientas muy potentes de control de los recursos de los discos.

Su archivo de configuración generalmente es /etc/smartd.conf (y /etc/default/smartmontools para configurar el arranque en el caso de una distribución Debian).

Una vez arrancado, el demonio controla los discos que ha detectado y envía mensajes al superusuario en caso de que encuentre algún problema.

smartctl [opciones] disco 
--scan      # Detecta los discos.
-a disco    # Toda la información sobre el disco.
-i disco    # Información sobre el disco (modelo, n.º de serie, etc.).
-H disco    # Información sobre el estado de fiabilidad (Health) del disco. Si indica que el disco tiene algún problema, hay que hacer una copia de seguridad de los datos con urgencia y preparar su sustitución.
-c disco            # Información sobre la capacidad de supervisión SMART del disco.
-l error disco      # Mensajes de logs de tipo error del disco.
-t tipo disco       # Realiza un autotest del disco en modo tipo (short, long...).
-l selftest disco   # Resultados del autotest del disco.

Utilización de los recursos de los discos

Hay numerosos comandos que permiten seguir en tiempo real el consumo de los recursos de disco por parte del sistema y de las aplicaciones.

Iostat Este comando proporciona información sobre la actividad de los discos desde el arranque. forma parte del paquete sysstat

iostat
-h
5 3 # hacer tres mediciones en intervalos de 5 segundos

$ iostat
Linux 4.19.0-16-amd64 (pc02)    10/06/21    _x86_64_    (12 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          12,41    0,02    3,67    0,06    0,00   83,84

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               3,00        24,38        41,33    3031787    5140389
sdb               0,00         0,05         0,00       6405         24

iotop Este comando, incluido en el paquete iotop, muestra la actividad de los discos proceso por proceso.

iotop # programa interactivo

lsof Este comando proporciona la lista de los archivos abiertos.

lsof    # todos los archivos abiertos del sistema
lsof /dev/sda1      # archivos abiertos en sda1
lsof /etc/passwd    # comprovar que ese archivo est abierto
lsof -u user    # archivos abiertos de user
lsof -i         # todos los sockets abiertos

Seguimiento y control de los recursos de red

Información sobre los recursos

ifconfig
ip
lspci

El directorio /proc/net contiene archivos especiales que proporcionan información sobre la actividad de red.

/proc/net
/proc/net/dev   # actividad de interfaces
/proc/net/arp   # tabla arp
/proc/net/sockstat  # sockets en red

/proc/sys/net/ipv4 directorio que contiene archivos especiales de lectura /escritura que permiten modificar dinámicamente la configuración de red del núcleo.

Control y diagnostico de los recursos en red

netstat
ip
traceroute
ss

netstat
-t  # conexiones tcp
-u  # conexiones udp
-6|-4   # ipv4 o ipv6
-l  # puestos a la escucha
-p  # nombre del programa
-n  # no hacer resolucion de nombres
-r  # ver tabla de enrutamiento

ss [options] [filter]
-t  # conexiones tcp
-u  # conexiones udp
-6|-4   # ipv4 o ipv6
-l  # puestos a la escucha
-p  # nombre del programa
-n  # no hacer resolucion de nombres
-r  # intentar hacer resolucion

ip addr show    # mostrar interfaces
ip -c a         # mostrar interfaces con colorines
ip link set enp3s0 up/down  # des/activar interfaz
ip link set dev enp3s0 arp on/of    # des/activar arp
ip addr add 192.168.0.10/24 dev enp3s0  # añadir dirección ip
ip addr del 192.168.0.10/24 dev enp3s0  # eliminar dirección ip

ip route show   # ver tabla enrutamiento
ip route add default via 192.168.1.1    # añadir puerta de enlace
ip route add 10.10.50/24 via 192.168.1.1 dev enp3s0 # añadir ruta
ip route del 10.10.50/24        # eliminar ruta
ip route save > ./route_backup  # hacer backup de tabla enrutamieno
ip route restore < ./route_backup   # resaurar bckup

ip neighbour    # ver tabla arp

200.2 Predecir la necesidad de futuros recursos

Planificación de los recursos

sysstat proporciona un conjunto de herramientas de control del estado de los recursos gestionados por el sistema.

Una vez se ha instalado el paquete, hay que configurarlo para que la herramienta sysstat recoja la información a intervalos regulares.

/etc/default/sysstat (Enabled true) # debian
/etc/sysconfig/sysstat # redhad

La recogida de información se inicia mediante una tarea cron /etc/cron.d/sysstat y guarda la información en /var/log/sysstat o /var/log/sa

sar # uso del systema cpu
sar 3 5 # 5 consultas en intervalos de 3 segundos
sar -r  # uso de la memoria
sar -b  # uso de discos
sar -A  # toda la info recogida (demasiada)
sar -s desde -e hasta   # limitr el periodo a controlar
sar -r -s 14:30.00 -e 14:50:00
sar -f file # especificar file donde recoger los datos

collectd es un programa open source de recogida de datos de la actividad del sistema. Se trata de un demonio que mide a intervalos regulares (10 segundos por defecto) los valores de diferentes ordenadores que reflejan el rendimiento del sistema y los guarda en archivos.

collectd no permite explotar la información obtenida, pero puede producir archivos de recogida en diferentes formatos estándar que se pueden abrir con aplicaciones de presentación de datos.

/etc/collectd.conf
/etc/collectd/collectd.conf
/var/lib/collectd/rrd   # directorio de salida de datos

collectd no puede utilizar directamente la información obtenida. Así pues, hay que visualizarla con aplicaciones de presentación de datos o software específico. Se pueden generar gráficos o tablas mediante programas como RRDtool, kcollectd o drraw, o mediante programas específicos que utilizan bibliotecas especializadas (Python, Perl, C, Java…).

/usr/share/doc/collectd/examples # ejemplos scripts para generar graficos