Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
This commit is contained in:
155
crates/profiling/scripts/run_all_analysis.sh
Executable file
155
crates/profiling/scripts/run_all_analysis.sh
Executable file
@@ -0,0 +1,155 @@
|
||||
#!/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 ""
|
||||
Reference in New Issue
Block a user