Capítulo 4.5 - Processos e Recursos
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender o uso de CPU pelos processos
- Compreender o uso de memória
- Monitorar recursos com diferentes ferramentas
- Identificar processos que consomem muitos recursos
- Limitar recursos
Uso de CPU
Medição de CPU
# Com ps
ps aux --sort=-%cpu | head
# Com top
top
# Coluna %CPU
# Com htop
htop
# Barras de CPU por processo
Tempo de CPU
# Tempo total de CPU utilizado
ps -eo pid,time,comm
# Formato: HH:MM:SS
# Exemplo: 01:23:45 = 1h 23min 45s
Carga de CPU (Load Average)
# Ver a carga
uptime
# Exemplo: load average: 1.25, 0.85, 0.65
# 1 min, 5 min, 15 min
# Interpretação:
# < número de CPUs: OK
# = número de CPUs: Utilização total
# > número de CPUs: Sobrecarga
# Número de CPUs
nproc
lscpu | grep "^CPU(s)"
Uso de Memória
Memória por Processo
# Com ps
ps aux --sort=-%mem | head
# Formato legível
ps aux --sort=-%mem -o pid,%mem,rss,comm | head
# Com top
top
# Coluna %MEM, RES (RSS)
# RSS = Resident Set Size (memória física)
Tipos de Memória
# Ver detalhes
cat /proc/PID/status | grep -i mem
# VSZ: Virtual Size (memória virtual)
# RSS: Resident Set Size (memória física)
# Shared: Memória compartilhada
Memória Total
# Visão geral
free -h
# Detalhes
cat /proc/meminfo
# Por processo
ps aux --sort=-%mem | head -10
Ferramentas de Monitoramento
vmstat - Estatísticas do Sistema
# Estatísticas a cada segundo
vmstat 1
# Colunas importantes:
# r: Processos em espera
# b: Processos bloqueados
# swpd: Swap utilizado
# free: Memória livre
# si/so: Swap in/out
# us/sy/id: CPU user/system/idle
iostat - Estatísticas de I/O
# Instalar se necessário
sudo apt install sysstat # Ubuntu/Debian
# Estatísticas de I/O
iostat -x 1
# Colunas:
# %util: Utilização do disco
# r/s, w/s: Leituras/gravações por segundo
sar - System Activity Reporter
# Histórico de CPU
sar -u
# Histórico de memória
sar -r
# Histórico de I/O
sar -b
# Em tempo real
sar -u 1 10 # CPU, 1 segundo, 10 vezes
Identificar Processos que Consomem Muitos Recursos
Top 10 CPU
ps aux --sort=-%cpu | head -11 | tail -10
Top 10 Memória
ps aux --sort=-%mem | head -11 | tail -10
Processos por Usuário
# CPU por usuário
ps aux | awk '{cpu[$1]+=$3} END {for (user in cpu) print user, cpu[user]"%"}'
# Memória por usuário
ps aux | awk '{mem[$1]+=$4} END {for (user in mem) print user, mem[user]"%"}'
Limitar Recursos
ulimit - Limites por Processo
# Ver os limites
ulimit -a
# Limitar memória virtual
ulimit -v 1000000 # 1GB em KB
# Limitar processos
ulimit -u 100
# Limitar arquivos abertos
ulimit -n 1024
# Permanente: /etc/security/limits.conf
cgroups - Controle Avançado
# Ver os cgroups
systemd-cgtop
# Limitar CPU
systemd-run --slice=my-slice --property=CPUQuota=50% comando
# Limitar memória
systemd-run --slice=my-slice --property=MemoryLimit=1G comando
Resumo
Neste capítulo, você aprendeu:
CPU: %CPU, tempo de CPU, load average
Memória: %MEM, RSS, VSZ, tipos de memória
Monitoramento: vmstat, iostat, sar para estatísticas
Identificação: ps com ordenação para processos que consomem muitos recursos
Limites: ulimit, cgroups para controlar recursos
Próximos Passos
Capítulo 4.6: Jobs e Tarefas em Segundo Plano
Módulo 5: Usuários e Permissões
Capítulo criado em: Dezembro 2024