Performance Tuning
Aula 5 de 7
Monitoramento de Performance
# CPU
top/htop # visão geral
mpstat -P ALL 1 # por CPU, a cada 1s
pidstat -p PID 1 # por processo
perf top # análise de hotspots (perf)
stress-ng --cpu 4 # gerar carga
# Memória
free -h # total, usada, cache
vmstat 1 # swap, cache, IO
smem -t -k # RSS/PSS/USS por processo
cat /proc/meminfo # métricas detalhadas
# Disco
iostat -x 1 # IOPS, latência, utilização
iotop # I/O por processo
fio --randrw --size=1G # benchmark de disco
atop # tudo em um comando
# Rede
nload # tráfego por interface
iftop # tráfego por conexão
nethogs # tráfego por processo
ss -ti # métricas TCP (cwnd, rtt)
tcptrack # conexões em tempo real
Tuning do Kernel
# /etc/sysctl.conf ou /etc/sysctl.d/
# Filesystem
vm.dirty_ratio=20 # % memória para dirty pages
vm.dirty_background_ratio=10 # início escrita em background
vm.swappiness=10 # evitar swap (SSD)
fs.file-max=1000000 # max file descriptors
# CPU Scheduling
kernel.sched_min_granularity_ns=10000000
kernel.sched_wakeup_granularity_ns=15000000
kernel.numa_balancing=0
# Kernel Panic
kernel.panic=10 # reboot automático
kernel.panic_on_oops=1
CPU Governors
# Governors disponíveis
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# performance, powersave, ondemand, conservative, schedutil
# Aplicar para todos os cores
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo performance > "$cpu"
done
# Irqbalance
systemctl enable --now irqbalance
Tuning NUMA
# Verificar topologia NUMA
numactl --hardware
numastat
# Executar processo em NUMA node específico
numactl --cpunodebind=0 --membind=0 ./aplicacao
# Verificar alocação de memória
numastat -p PID
Profiling com perf
# Coletar amostras de CPU
perf record -F 99 -p PID --sleep 30
perf report # análise interativa
perf annotate # código assembly
# Flamegraph (FlameGraph tools)
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svg
Monitore antes de tunar. Sem métricas baseline, tuning é chute. Use perf para identificar gargalos reais.