Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-2:200_capacity_planning

¡Esta es una revisión vieja del documento!


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 (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 ifconfig o 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.

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 memoria
  • k: muestra las estadísticas en kB
  • m: muestra las estadísticas en MB
  • g: muestra las estadísticas en GB
  • h: 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
informatica/certificaciones/lpic/lpic-2/200_capacity_planning.1618078953.txt.gz · Última modificación: por tempwin