Pular para o conteúdo principal

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