Performance Tuning
Otimização de Recursos
🔄 Gerenciamento de Memória
# Monitoramento de uso
free -h
vmstat 1
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
# Limpeza de cache
sync && echo 3 > /proc/sys/vm/drop_caches
⚡ Controle de CPU
#!/bin/bash
# cpu_control.sh
optimize_cpu_usage() {
local pid="$1"
local cpu_limit="$2"
# Define afinidade CPU
taskset -pc 0-1 "$pid"
# Limita uso CPU
cpulimit -p "$pid" -l "$cpu_limit"
}
Técnicas de Otimização
📊 Processamento Paralelo
#!/bin/bash
# parallel_processor.sh
process_data() {
local input_dir="$1"
local num_threads="${2:-$(nproc)}"
find "$input_dir" -type f | \
parallel --jobs "$num_threads" \
--load 80% \
--progress \
'./process_file.sh {}'
}
💾 I/O Otimizado
#!/bin/bash
# io_optimizer.sh
optimize_io() {
local file="$1"
# Buffer otimizado
dd if="$file" of="$file.tmp" bs=1M
# I/O scheduling
ionice -c 2 -n 7 -p $$
# Async I/O
aio-stress -s 1G -r 4
}
Monitoramento
📈 Métricas de Performance
#!/bin/bash
# performance_metrics.sh
collect_metrics() {
local pid="$1"
local interval="$2"
while true; do
ps -p "$pid" -o %cpu,%mem,rss,vsz
sleep "$interval"
done
}
🔍 Análise de Gargalos
#!/bin/bash
# bottleneck_analyzer.sh
analyze_bottlenecks() {
# CPU
mpstat 1 5
# Memória
vmstat 1 5
# I/O
iostat -xz 1 5
# Rede
sar -n DEV 1 5
}
Otimizações Específicas
🗄️ Banco de Dados
# Otimização de queries
EXPLAIN ANALYZE SELECT * FROM tabela;
# Índices
CREATE INDEX idx_campo ON tabela(campo);
# Vacuum
VACUUM ANALYZE tabela;
🌐 Rede
# Tuning de rede
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Ferramentas de Diagnóstico
🔧 Profiling
# Análise de CPU
perf record -F 99 -p "$pid" -g -- sleep 30
perf report
# Análise de memória
valgrind --tool=massif ./programa
ms_print massif.out.*
📊 Benchmarking
#!/bin/bash
# benchmark.sh
run_benchmark() {
local cmd="$1"
local iterations="$2"
time for ((i=0; i<iterations; i++)); do
eval "$cmd" >/dev/null 2>&1
done
}
Boas Práticas
💡 Recomendações
Profile antes de otimizar
Estabeleça métricas base
Otimize gargalos principais
Monitore continuamente
Documente mudanças
⚠️ Pontos de Atenção
Complexidade vs. Performance
Uso de recursos
Escalabilidade
Manutenibilidade
Trade-offs
Exemplos Práticos
📈 Otimização de Script
#!/bin/bash
# optimized_processor.sh
process_large_file() {
local input="$1"
local output="$2"
# Uso de buffer otimizado
buffer_size="64k"
# Processamento paralelo
parallel --pipe \
--block "$buffer_size" \
--jobs "$(nproc)" \
"sort | uniq" \
< "$input" > "$output"
}
Próximos Passos
Monitoramento Avançado
Análise de Sistema
PERFORMANCE TUNING
[⚡⚡⚡⚡⚡] 100%
STATUS: OTIMIZADO
EFICIÊNCIA: MÁXIMA
14 abril 2025