#!/bin/zsh # Teste de resistência: alimenta o LiveCaption com tests/live_pt.f32 em tempo real por N segundos (padrão 900) # e amostra CPU/RAM do app e do Ollama. Saída em /logs: metricas-*.jsonl (do app) e soak-ps-*.csv. cd "$(dirname "$0")/.." export LC_PROJECT="${LC_PROJECT:-$HOME/Library/Application Support/LiveCaption}" mkdir -p "$LC_PROJECT/logs" DUR=${1:-900} STAMP=$(date +%Y%m%d-%H%M%S) CSV="$LC_PROJECT/logs/soak-ps-$STAMP.csv" echo "t_s,app_cpu,app_rss_mb,ollama_cpu,ollama_rss_mb,thermal" > "$CSV" LC_ALL=C LC_LOG=1 LC_WAV=$PWD/tests/live_pt.f32 LC_DURATION=$DUR ./LiveCaption.app/Contents/MacOS/LiveCaption & APP=$! caffeinate -i -w $APP & T0=$(date +%s) sleep 20 while kill -0 $APP 2>/dev/null; do A=$(LC_ALL=C ps -o %cpu=,rss= -p $APP | awk '{printf "%s,%.0f",$1,$2/1024}') O=$(LC_ALL=C ps -axo %cpu=,rss=,command= | LC_ALL=C awk '/ollama runner|ollama serve/ && !/awk/ {c+=$1; r+=$2} END {printf "%.1f,%.0f",c,r/1024}') TH=$(pmset -g therm 2>/dev/null | grep -i -E "CPU_Speed_Limit" | awk '{print $NF}') echo "$(( $(date +%s) - T0 )),$A,$O,${TH:-100}" >> "$CSV" sleep 30 done echo "fim: $CSV"