Saltar al contenido principal

Capítulo 4.5 - Procesos y Recursos

Objetivos de Aprendizaje​

Al final de este capítulo, usted será capaz de:

  • Comprender el uso de CPU por los procesos
  • Comprender el uso de memoria
  • Monitorizar los recursos con diferentes herramientas
  • Identificar los procesos que consumen muchos recursos
  • Limitar los recursos

Uso de CPU​

Medición de CPU​

# Con ps
ps aux --sort=-%cpu | head

# Con top
top
# Columna %CPU

# Con htop
htop
# Barras de CPU por proceso

Tiempo de CPU​

# Tiempo total de CPU utilizado
ps -eo pid,time,comm

# Formato: HH:MM:SS
# Ejemplo: 01:23:45 = 1h 23min 45s

Carga de CPU (Load Average)​

# Ver la carga
uptime
# Ejemplo: load average: 1.25, 0.85, 0.65
# 1 min, 5 min, 15 min

# Interpretación:
# < número de CPUs: OK
# = número de CPUs: Uso completo
# > número de CPUs: Sobrecarga

# Número de CPUs
nproc
lscpu | grep "^CPU(s)"

Uso de Memoria​

Memoria por Proceso​

# Con ps
ps aux --sort=-%mem | head

# Formato legible
ps aux --sort=-%mem -o pid,%mem,rss,comm | head

# Con top
top
# Columna %MEM, RES (RSS)

# RSS = Resident Set Size (memoria física)

Tipos de Memoria​

# Ver detalles
cat /proc/PID/status | grep -i mem

# VSZ: Virtual Size (memoria virtual)
# RSS: Resident Set Size (memoria física)
# Shared: Memoria compartida

Memoria Total​

# Vista general
free -h

# Detalles
cat /proc/meminfo

# Por proceso
ps aux --sort=-%mem | head -10

Herramientas de Monitorización​

vmstat - Estadísticas del Sistema​

# Estadísticas cada segundo
vmstat 1

# Columnas importantes:
# r: Procesos en espera
# b: Procesos bloqueados
# swpd: Swap utilizado
# free: Memoria libre
# si/so: Swap in/out
# us/sy/id: CPU user/system/idle

iostat - Estadísticas de I/O​

# Instalar si es necesario
sudo apt install sysstat # Ubuntu/Debian

# Estadísticas de I/O
iostat -x 1

# Columnas:
# %util: Utilización de disco
# r/s, w/s: Lecturas/escrituras por segundo

sar - System Activity Reporter​

# Historial de CPU
sar -u

# Historial de memoria
sar -r

# Historial de I/O
sar -b

# En tiempo real
sar -u 1 10 # CPU, 1 segundo, 10 veces

Identificar los Procesos que Consumen Muchos Recursos​

Top 10 CPU​

ps aux --sort=-%cpu | head -11 | tail -10

Top 10 Memoria​

ps aux --sort=-%mem | head -11 | tail -10

Procesos por Usuario​

# CPU por usuario
ps aux | awk '{cpu[$1]+=$3} END {for (user in cpu) print user, cpu[user]"%"}'

# Memoria por usuario
ps aux | awk '{mem[$1]+=$4} END {for (user in mem) print user, mem[user]"%"}'

Limitar los Recursos​

ulimit - Límites por Proceso​

# Ver los límites
ulimit -a

# Limitar memoria virtual
ulimit -v 1000000 # 1GB en KB

# Limitar procesos
ulimit -u 100

# Limitar archivos abiertos
ulimit -n 1024

# Permanente: /etc/security/limits.conf

cgroups - Control Avanzado​

# Ver los cgroups
systemd-cgtop

# Limitar CPU
systemd-run --slice=my-slice --property=CPUQuota=50% comando

# Limitar memoria
systemd-run --slice=my-slice --property=MemoryLimit=1G comando

Resumen​

En este capítulo, usted ha aprendido:

CPU: %CPU, tiempo de CPU, load average
Memoria: %MEM, RSS, VSZ, tipos de memoria
Monitorización: vmstat, iostat, sar para estadísticas
Identificación: ps con ordenamiento para procesos que consumen muchos recursos
Límites: ulimit, cgroups para controlar recursos


Próximos Pasos​

Capítulo 4.6: Jobs y Tareas en Segundo Plano
Módulo 5: Usuarios y Permisos


Capítulo creado el: Diciembre 2024