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