Files
wifi-densepose/crates/profiling/scripts/run_all_analysis.sh
ruv d803bfe2b1 Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector
git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
2026-02-28 14:39:40 -05:00

156 lines
5.2 KiB
Bash
Executable File

#!/bin/bash
# Comprehensive profiling and analysis script
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
echo "=========================================="
echo " Ruvector Performance Analysis Suite"
echo "=========================================="
echo ""
echo "Project: $PROJECT_ROOT"
echo "Date: $(date)"
echo ""
cd "$PROJECT_ROOT"
# Step 1: Install tools
echo "Step 1: Checking tools..."
"$SCRIPT_DIR/install_tools.sh" || echo "Some tools may not be available"
echo ""
# Step 2: Run benchmarks (baseline)
echo "Step 2: Running baseline benchmarks..."
"$SCRIPT_DIR/benchmark_all.sh"
echo ""
# Step 3: CPU profiling
echo "Step 3: CPU profiling..."
"$SCRIPT_DIR/cpu_profile.sh"
echo ""
# Step 4: Generate flamegraphs
echo "Step 4: Generating flamegraphs..."
"$SCRIPT_DIR/generate_flamegraph.sh"
echo ""
# Step 5: Memory profiling
echo "Step 5: Memory profiling..."
"$SCRIPT_DIR/memory_profile.sh"
echo ""
# Step 6: Generate comprehensive report
echo "Step 6: Generating comprehensive report..."
REPORT_FILE="$SCRIPT_DIR/../reports/COMPREHENSIVE_REPORT.md"
cat > "$REPORT_FILE" << 'REPORT_HEADER'
# Ruvector Performance Analysis Report
**Generated**: $(date)
**System**: $(uname -a)
**CPU**: $(lscpu | grep "Model name" | sed 's/Model name: *//')
## Executive Summary
This report contains comprehensive performance analysis of Ruvector vector database including:
- CPU profiling and hotspot analysis
- Memory allocation patterns
- Cache utilization
- Thread scaling characteristics
- SIMD optimization effectiveness
- Lock-free data structure performance
REPORT_HEADER
echo "" >> "$REPORT_FILE"
echo "## System Information" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
cat "$SCRIPT_DIR/../benchmarks/system_info.txt" >> "$REPORT_FILE" 2>/dev/null || echo "System info not available"
echo '```' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "## Benchmark Results" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "### Distance Metrics Performance" >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
grep "time:" "$SCRIPT_DIR/../benchmarks/distance_metrics.txt" | head -20 >> "$REPORT_FILE" 2>/dev/null || echo "Benchmarks not available"
echo '```' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "### HNSW Search Performance" >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
grep "time:" "$SCRIPT_DIR/../benchmarks/hnsw_search.txt" | head -20 >> "$REPORT_FILE" 2>/dev/null || echo "Benchmarks not available"
echo '```' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "### Thread Scaling" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
for threads in 1 2 4 8 16 32; do
if [ -f "$SCRIPT_DIR/../benchmarks/threads_${threads}.txt" ]; then
echo "#### ${threads} threads" >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
grep "time:" "$SCRIPT_DIR/../benchmarks/threads_${threads}.txt" | head -5 >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
fi
done
echo "## CPU Profiling Analysis" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "### Top Hotspots" >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
head -50 "$SCRIPT_DIR/../reports/perf_report.txt" >> "$REPORT_FILE" 2>/dev/null || echo "Perf report not available"
echo '```' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "### Cache Performance" >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
cat "$SCRIPT_DIR/../reports/cache_stats.txt" >> "$REPORT_FILE" 2>/dev/null || echo "Cache stats not available"
echo '```' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "## Memory Analysis" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "### Massif Heap Profile" >> "$REPORT_FILE"
echo '```' >> "$REPORT_FILE"
head -100 "$SCRIPT_DIR/../memory/massif_report.txt" >> "$REPORT_FILE" 2>/dev/null || echo "Massif report not available"
echo '```' >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "## Recommendations" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "Based on the analysis:" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "1. **CPU Optimization**: Review flamegraphs to identify hotspots" >> "$REPORT_FILE"
echo "2. **Memory Optimization**: Check for allocation patterns in hot paths" >> "$REPORT_FILE"
echo "3. **Cache Optimization**: Analyze cache miss rates and data structures" >> "$REPORT_FILE"
echo "4. **Parallelization**: Evaluate thread scaling efficiency" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "See detailed optimization guides in /docs/optimization/" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "✅ Comprehensive analysis complete!"
echo ""
echo "=========================================="
echo " Analysis Results Summary"
echo "=========================================="
echo ""
echo "Reports Directory: $SCRIPT_DIR/../reports"
echo "Flamegraphs: $SCRIPT_DIR/../flamegraphs"
echo "Memory Analysis: $SCRIPT_DIR/../memory"
echo "Benchmarks: $SCRIPT_DIR/../benchmarks"
echo ""
echo "📊 Comprehensive Report: $REPORT_FILE"
echo ""
echo "Next Steps:"
echo "1. Review flamegraphs: firefox $SCRIPT_DIR/../flamegraphs/*.svg"
echo "2. Check benchmark results: cat $SCRIPT_DIR/../benchmarks/summary.txt"
echo "3. Analyze CPU hotspots: cat $SCRIPT_DIR/../reports/perf_report.txt"
echo "4. Review memory usage: cat $SCRIPT_DIR/../memory/massif_report.txt"
echo ""