# Knative Benchmark Project Rules
## 1. Infrastructure Requirements
- All infrastructure must be deployed on Google Cloud Engine (GCE)
- Kubernetes cluster must be created and managed using kops
- Knative components and benchmark functions must run on separate nodes from the workload generator
- Use node labels and taints/tolerations to ensure proper workload separation
## 2. Workload Generator Requirements
- Must be written in Go
- Must be containerized and run as a Kubernetes Deployment
- No use of existing load testing tools (e.g., k6, Apache JMeter, etc.)
- Must support configurable:
- Request rates (requests per second)
- Payload sizes
- Distribution patterns (constant rate, burst patterns)
- Number of concurrent connections
- Test duration
## 3. Observability Requirements
- Must implement OpenTelemetry collector for metrics collection
- Must configure Knative components to export metrics to OpenTelemetry
- Must collect the following metrics:
- Latency (p50, p95, p99)
- Throughput (requests/sec)
- Cold start times
- Resource utilization (CPU, Memory)
- Error rates
## 4. Test Scenarios
### Scenario 1: Resource Configuration
- Test functions with varying CPU/memory allocations
- Measure performance impact of different resource configurations
- Include CPU and memory-intensive workloads
### Scenario 2: Language Framework Comparison
- Implement equivalent functions in:
- Go
- Python
- Java
- Node.js
- Use identical workloads across languages
- Measure cold/warm start times and resource usage
### Scenario 3: Eventing Performance
- Test Knative Eventing with producer/consumer pattern
- Measure event propagation latency
- Test different event sizes and throughput rates
## 5. Project Structure Requirements
- Use `just` command runner for automation
- Maintain separate directories for:
- Infrastructure code (we use a sub repo for this)
- Workload generator
- Storage module (implement csv file storage for benchmark results)
- Test functions
- Deployment manifests
- Analysis scripts
## 6. Code Quality Requirements
- All Go code must:
- Include unit tests
- Follow Go best practices
- Never use inline if err syntax. Always check the error after with if err != nil{ ...}
## 7. Documentation Requirements
- Include detailed setup instructions
- Document all metrics collected
- Provide analysis of results
- Include troubleshooting guide
- Document all configuration parameters
## 8. Reproducibility Requirements
- All tests must be reproducible
- Include scripts for cluster creation/teardown
- Document all environment variables
- Include version information for all components
go
golang
hcl
java
just
kubernetes
less
procfile
+4 more
First Time Repository
A Benchmark of the Knative serverless platform for k8s
Go
Languages:
Go: 30.2KB
HCL: 0.9KB
Java: 3.9KB
Just: 19.5KB
Procfile: 0.0KB
Python: 10.4KB
Rust: 3.5KB
Shell: 0.1KB
TypeScript: 1.4KB
Created: 12/5/2024
Updated: 1/23/2025
All Repositories (1)
A Benchmark of the Knative serverless platform for k8s