kb.erickguedes.com
Linux Avançado: Administração e Performance

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.