[ci] add router benchmark script and CI (#7498)
This commit is contained in:
92
sgl-router/Makefile
Normal file
92
sgl-router/Makefile
Normal file
@@ -0,0 +1,92 @@
|
||||
# SGLang Router Makefile
|
||||
# Provides convenient shortcuts for common development tasks
|
||||
|
||||
.PHONY: help bench bench-quick bench-baseline bench-compare test build clean
|
||||
|
||||
help: ## Show this help message
|
||||
@echo "SGLang Router Development Commands"
|
||||
@echo "=================================="
|
||||
@echo ""
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
||||
@echo ""
|
||||
|
||||
build: ## Build the project in release mode
|
||||
@echo "Building SGLang Router..."
|
||||
@cargo build --release
|
||||
|
||||
test: ## Run all tests
|
||||
@echo "Running tests..."
|
||||
@cargo test
|
||||
|
||||
bench: ## Run full benchmark suite
|
||||
@echo "Running full benchmarks..."
|
||||
@python3 scripts/run_benchmarks.py
|
||||
|
||||
bench-quick: ## Run quick benchmarks only
|
||||
@echo "Running quick benchmarks..."
|
||||
@python3 scripts/run_benchmarks.py --quick
|
||||
|
||||
bench-baseline: ## Save current performance as baseline
|
||||
@echo "Saving performance baseline..."
|
||||
@python3 scripts/run_benchmarks.py --save-baseline main
|
||||
|
||||
bench-compare: ## Compare with saved baseline
|
||||
@echo "Comparing with baseline..."
|
||||
@python3 scripts/run_benchmarks.py --compare-baseline main
|
||||
|
||||
bench-ci: ## Run benchmarks suitable for CI (quick mode)
|
||||
@echo "Running CI benchmarks..."
|
||||
@python3 scripts/run_benchmarks.py --quick
|
||||
|
||||
clean: ## Clean build artifacts
|
||||
@echo "Cleaning build artifacts..."
|
||||
@cargo clean
|
||||
|
||||
docs: ## Generate and open documentation
|
||||
@echo "Generating documentation..."
|
||||
@cargo doc --open
|
||||
|
||||
check: ## Run cargo check and clippy
|
||||
@echo "Running cargo check..."
|
||||
@cargo check
|
||||
@echo "Running clippy..."
|
||||
@cargo clippy
|
||||
|
||||
fmt: ## Format code with rustfmt
|
||||
@echo "Formatting code..."
|
||||
@cargo fmt
|
||||
|
||||
# Development workflow shortcuts
|
||||
dev-setup: build test ## Set up development environment
|
||||
@echo "Development environment ready!"
|
||||
|
||||
pre-commit: fmt check test bench-quick ## Run pre-commit checks
|
||||
@echo "Pre-commit checks passed!"
|
||||
|
||||
# Benchmark analysis shortcuts
|
||||
bench-report: ## Open benchmark HTML report
|
||||
@if [ -f "target/criterion/request_processing/report/index.html" ]; then \
|
||||
echo "Opening benchmark report..."; \
|
||||
if command -v xdg-open >/dev/null 2>&1; then \
|
||||
xdg-open target/criterion/request_processing/report/index.html; \
|
||||
elif command -v open >/dev/null 2>&1; then \
|
||||
open target/criterion/request_processing/report/index.html; \
|
||||
else \
|
||||
echo "Please open target/criterion/request_processing/report/index.html in your browser"; \
|
||||
fi \
|
||||
else \
|
||||
echo "No benchmark report found. Run 'make bench' first."; \
|
||||
fi
|
||||
|
||||
bench-clean: ## Clean benchmark results
|
||||
@echo "Cleaning benchmark results..."
|
||||
@rm -rf target/criterion
|
||||
|
||||
# Performance monitoring
|
||||
perf-monitor: ## Run continuous performance monitoring
|
||||
@echo "Starting performance monitoring..."
|
||||
@if command -v watch >/dev/null 2>&1; then \
|
||||
watch -n 300 'make bench-quick'; \
|
||||
else \
|
||||
echo "Warning: 'watch' command not found. Install it or run 'make bench-quick' manually."; \
|
||||
fi
|
||||
Reference in New Issue
Block a user