sync: scripts/benchmark_fuse_vs_raw.sh
Browse files
scripts/benchmark_fuse_vs_raw.sh
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Telemetria SRE: Benchmark FUSE mmap() vs Leitura Crua NVMe
|
| 3 |
+
set -e
|
| 4 |
+
|
| 5 |
+
DIR_BASE="/home/j/Área de trabalho/crompressor-ia"
|
| 6 |
+
BIN_LLAMA="/home/j/Área de trabalho/crompressor/pesquisa/ia_llm/102-native_llm_humble_pc/bin/llama-cli"
|
| 7 |
+
MODEL_RAW="$DIR_BASE/models/qwen2.5-crom-dna.gguf"
|
| 8 |
+
MODEL_FUSE="$DIR_BASE/mnt_crom/qwen2.5-crom-dna.gguf"
|
| 9 |
+
|
| 10 |
+
if [ ! -f "$BIN_LLAMA" ]; then
|
| 11 |
+
echo "[ERRO] Motor nativo (llama-cli) não encontrado no diretorio."
|
| 12 |
+
exit 1
|
| 13 |
+
fi
|
| 14 |
+
|
| 15 |
+
echo "=========================================="
|
| 16 |
+
echo " 🏎️ BENCHMARK CROM: FUSE vs DISK RAW"
|
| 17 |
+
echo "=========================================="
|
| 18 |
+
|
| 19 |
+
test_inference() {
|
| 20 |
+
local model_path=$1
|
| 21 |
+
local mode=$2
|
| 22 |
+
echo "------------------------------------------------"
|
| 23 |
+
echo " Iniciando Teste ($mode)"
|
| 24 |
+
echo " Arquivo alvo: $model_path"
|
| 25 |
+
echo " Coletando telemetria psutil (RSS & Latência)..."
|
| 26 |
+
|
| 27 |
+
# Rodar e medir tempo
|
| 28 |
+
/usr/bin/time -v "$BIN_LLAMA" -m "$model_path" -p "Cálculo Físico: Qual a velocidade da luz em km/s?" --threads 2 -c 512 -n 32 --log-disable > /tmp/crom_bench_${mode}.log 2>&1
|
| 29 |
+
|
| 30 |
+
# Extrair metricas do log de time -v
|
| 31 |
+
local max_rss=$(grep "Maximum resident set size" /tmp/crom_bench_${mode}.log | awk '{print $6}')
|
| 32 |
+
local page_faults=$(grep "Major (requiring I/O) page faults" /tmp/crom_bench_${mode}.log | awk '{print $6}')
|
| 33 |
+
local elapsed=$(grep "Elapsed (wall clock) time" /tmp/crom_bench_${mode}.log | awk '{print $8}')
|
| 34 |
+
|
| 35 |
+
echo " Resultado SRE ($mode):"
|
| 36 |
+
echo " ⏰ Tempo de Parede : $elapsed"
|
| 37 |
+
echo " 🚀 Maximum RSS : $((max_rss / 1024)) MB"
|
| 38 |
+
echo " ⚠️ Major PageFaults: $page_faults"
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
# 1. Teste FUSE
|
| 42 |
+
if [ ! -f "$MODEL_FUSE" ]; then
|
| 43 |
+
echo "[AVISO] Modelo não montado no FUSE. Rode scripts/montar_fuse_modelo.sh primeiro."
|
| 44 |
+
echo "Abortando Benchmark FUSE..."
|
| 45 |
+
else
|
| 46 |
+
test_inference "$MODEL_FUSE" "FUSE_MMAP_ZERO_COPY"
|
| 47 |
+
fi
|
| 48 |
+
|
| 49 |
+
# 2. Teste RAW
|
| 50 |
+
test_inference "$MODEL_RAW" "DISK_RAW_SSD"
|
| 51 |
+
|
| 52 |
+
echo "------------------------------------------------"
|
| 53 |
+
echo " Conclusão: O Modo FUSE deve mostrar RSS idêntico ou levemente inferior,"
|
| 54 |
+
echo " sem degradação do tempo de inferência (Tempo Constante HNSW O(1))."
|