| name | agent-performance-benchmarker |
| description | Agent skill for performance-benchmarker - invoke with $agent-performance-benchmarker |
name: performance-benchmarker
type: analyst
color: "#607D8B"
description: Implements comprehensive performance benchmarking for distributed consensus protocols
capabilities:
- throughput_measurement
- latency_analysis
- resource_monitoring
- comparative_analysis
- adaptive_tuning
priority: medium
hooks:
pre: |
echo "📊 Performance Benchmarker analyzing: $TASK"
Initialize monitoring systems
if [[ "$TASK" == "benchmark" ]]; then
echo "⚡ Starting performance metric collection"
fi
post: |
echo "📈 Performance analysis complete"
Generate performance report
echo "📋 Compiling benchmarking results and recommendations"
Performance Benchmarker
Implements comprehensive performance benchmarking and optimization analysis for distributed consensus protocols.
Core Responsibilities
- Protocol Benchmarking: Measure throughput, latency, and scalability across consensus algorithms
- Resource Monitoring: Track CPU, memory, network, and storage utilization patterns
- Comparative Analysis: Compare Byzantine, Raft, and Gossip protocol performance
- Adaptive Tuning: Implement real-time parameter optimization and load balancing
- Performance Reporting: Generate actionable insights and optimization recommendations
Technical Implementation
Core Benchmarking Framework
class ConsensusPerformanceBenchmarker {
constructor() {
this.benchmarkSuites = new Map();
this.performanceMetrics = new Map();
this.historicalData = new TimeSeriesDatabase();
this.currentBenchmarks = new Set();
this.adaptiveOptimizer = new AdaptiveOptimizer();
this.alertSystem = new PerformanceAlertSystem();
}
registerBenchmarkSuite(protocolName, benchmarkConfig) {
const suite = new BenchmarkSuite(protocolName, benchmarkConfig);
this.benchmarkSuites.set(protocolName, suite);
return suite;
}
async runComprehensiveBenchmarks(protocols, scenarios) {
const results = new Map();
for (const protocol of protocols) {
const protocolResults = new Map();
for (const scenario of scenarios) {
console.log(`Running ${scenario.name} benchmark for ${protocol}`);
const benchmarkResult = await this.executeBenchmarkScenario(
protocol, scenario
);
protocolResults.set(scenario.name, benchmarkResult);
await this.historicalData.store({
protocol: protocol,
scenario: scenario.name,
timestamp: Date.now(),
metrics: benchmarkResult
});
}
results.set(protocol, protocolResults);
}
const analysis = await this.generateComparativeAnalysis(results);
await this.adaptiveOptimizer.optimizeBasedOnResults(results);
return {
benchmarkResults: results,
comparativeAnalysis: analysis,
recommendations: await this.generateOptimizationRecommendations(results)
};
}
async executeBenchmarkScenario(protocol, scenario) {
const benchmark = this.benchmarkSuites.get(protocol);
if (!benchmark) {
throw new Error(`No benchmark suite found for protocol: ${protocol}`);
}
const environment = await this.setupBenchmarkEnvironment(scenario);
try {
await benchmark.setup(environment);
const results = {
throughput: await this.measureThroughput(benchmark, scenario),
latency: await this.measureLatency(benchmark, scenario),
resourceUsage: await this.measureResourceUsage(benchmark, scenario),
scalability: await this.measureScalability(benchmark, scenario),
faultTolerance: await this.measureFaultTolerance(benchmark, scenario)
};
results.analysis = await this.analyzeBenchmarkResults(results);
return results;
} finally {
await this.cleanupBenchmarkEnvironment(environment);
}
}
}
Throughput Measurement System
class ThroughputBenchmark {
constructor(protocol, configuration) {
this.protocol = protocol;
this.config = configuration;
this.metrics = new MetricsCollector();
this.loadGenerator = new LoadGenerator();
}
async measureThroughput(scenario) {
const measurements = [];
const duration = scenario.duration || 60000;
const startTime = Date.now();
await this.loadGenerator.initialize({
requestRate: scenario.initialRate || 10,
rampUp: scenario.rampUp || false,
pattern: scenario.pattern || 'constant'
});
this.metrics.startCollection(['transactions_per_second', 'success_rate']);
let currentRate = scenario. || ;
rateIncrement = scenario. || ;
measurementInterval = ;
(.() - startTime < duration) {
intervalStart = .();
transactions = .(
currentRate, measurementInterval
);
intervalMetrics = .(
transactions, measurementInterval
);
measurements.({
: intervalStart,
: currentRate,
: intervalMetrics.,
: intervalMetrics.,
: intervalMetrics.,
: intervalMetrics.,
: intervalMetrics.
});
(scenario. && intervalMetrics. > ) {
currentRate += rateIncrement;
} (intervalMetrics. < ) {
currentRate = .(, currentRate - rateIncrement);
}
elapsed = .() - intervalStart;
(elapsed < measurementInterval) {
.(measurementInterval - elapsed);
}
}
..();
.(measurements);
}
() {
transactions = [];
interval = / rate;
endTime = .() + duration;
(.() < endTime) {
transactionStart = .();
transaction = {
: ,
: .(),
: .(),
: transactionStart
};
promise = ..(transaction)
.( ({
...transaction,
: result,
: .() - transactionStart,
: result. ===
}))
.( ({
...transaction,
: error,
: .() - transactionStart,
:
}));
transactions.(promise);
.(interval);
}
.(transactions);
}
() {
totalMeasurements = measurements.;
avgThroughput = measurements.( sum + m., ) / totalMeasurements;
maxThroughput = .(...measurements.( m.));
avgSuccessRate = measurements.( sum + m., ) / totalMeasurements;
optimalPoints = measurements.( m. >= );
optimalThroughput = optimalPoints. > ?
.(...optimalPoints.( m.)) : ;
{
: avgThroughput,
: maxThroughput,
: optimalThroughput,
: avgSuccessRate,
: measurements,
: .(measurements),
: .(measurements)
};
}
() {
sortedThroughputs = measurements.( m.).( b - a);
p80Index = .(sortedThroughputs. * );
sortedThroughputs[p80Index];
}
}
Latency Analysis System
class LatencyBenchmark {
constructor(protocol, configuration) {
this.protocol = protocol;
this.config = configuration;
this.latencyHistogram = new LatencyHistogram();
this.percentileCalculator = new PercentileCalculator();
}
async measureLatency(scenario) {
const measurements = [];
const sampleSize = scenario.sampleSize || 10000;
const warmupSize = scenario.warmupSize || 1000;
console.log(`Measuring latency with ${sampleSize} samples (${warmupSize} warmup)`);
await this.performWarmup(warmupSize);
for (let i = 0; i < sampleSize; i++) {
const latencyMeasurement = await this.measureSingleTransactionLatency();
measurements.push(latencyMeasurement);
if (i % === ) {
.();
}
}
.(measurements);
}
() {
transaction = {
: ,
: ,
: { : .() },
: {}
};
submissionStart = performance.();
submissionPromise = ..(transaction);
transaction.. = performance.() - submissionStart;
consensusStart = performance.();
result = submissionPromise;
transaction.. = performance.() - consensusStart;
applicationLatency = ;
(result.) {
applicationLatency = result.;
}
transaction.. = applicationLatency;
totalLatency = transaction.. +
transaction.. +
transaction..;
{
: transaction.,
: totalLatency,
: transaction.,
: result. === ,
: .()
};
}
() {
successfulMeasurements = measurements.( m.);
latencies = successfulMeasurements.( m.);
(latencies. === ) {
();
}
percentiles = ..(latencies, [
, , , , , ,
]);
phaseAnalysis = .(successfulMeasurements);
distribution = .(latencies);
{
: successfulMeasurements.,
: latencies.( sum + l, ) / latencies.,
: percentiles[],
: .(latencies),
: percentiles,
: phaseAnalysis,
: distribution,
: .(latencies)
};
}
() {
phases = [, , ];
phaseAnalysis = {};
( phase phases) {
phaseLatencies = measurements.( m.[phase]);
validLatencies = phaseLatencies.( l > );
(validLatencies. > ) {
phaseAnalysis[phase] = {
: validLatencies.( sum + l, ) / validLatencies.,
: ..(validLatencies, [])[],
: ..(validLatencies, [])[],
: ..(validLatencies, [])[],
: .(...validLatencies),
: (validLatencies.( sum + l, ) /
measurements.( sum + m., )) *
};
}
}
phaseAnalysis;
}
}
Resource Usage Monitor
class ResourceUsageMonitor {
constructor() {
this.monitoringActive = false;
this.samplingInterval = 1000;
this.measurements = [];
this.systemMonitor = new SystemMonitor();
}
async measureResourceUsage(protocol, scenario) {
console.log('Starting resource usage monitoring');
this.monitoringActive = true;
this.measurements = [];
const monitoringPromise = this.startContinuousMonitoring();
try {
const benchmarkResult = await this.executeBenchmarkWithMonitoring(
protocol, scenario
);
this.monitoringActive = false;
await monitoringPromise;
const resourceAnalysis = this.();
{
: benchmarkResult,
: resourceAnalysis
};
} (error) {
. = ;
error;
}
}
() {
(.) {
measurement = .();
..(measurement);
.(.);
}
}
() {
timestamp = .();
cpuUsage = ..();
memoryUsage = ..();
networkIO = ..();
diskIO = ..();
processMetrics = ..();
{
: timestamp,
: {
: cpuUsage.,
: cpuUsage.,
: cpuUsage.,
: cpuUsage.
},
: {
: memoryUsage.,
: memoryUsage.,
: memoryUsage.,
: memoryUsage.,
: memoryUsage.
},
: {
: networkIO.,
: networkIO.,
: networkIO.,
: networkIO.,
: networkIO.
},
: {
: diskIO.,
: diskIO.,
: diskIO.,
: diskIO.,
: diskIO.
},
: {
: processMetrics.,
: processMetrics.,
: processMetrics.
}
};
}
() {
(.. === ) {
;
}
cpuAnalysis = .();
memoryAnalysis = .();
networkAnalysis = .();
diskAnalysis = .();
{
: .[.. - ]. -
.[].,
: ..,
: cpuAnalysis,
: memoryAnalysis,
: networkAnalysis,
: diskAnalysis,
: .(),
: .()
};
}
() {
cpuUsages = ..( m..);
{
: cpuUsages.( sum + usage, ) / cpuUsages.,
: .(...cpuUsages),
: .(cpuUsages, ),
: .(cpuUsages),
: .(),
: .()
};
}
() {
memoryUsages = ..( m..);
heapUsages = ..( m..);
{
: memoryUsages.( sum + usage, ) / memoryUsages.,
: .(...memoryUsages),
: heapUsages.( sum + usage, ) / heapUsages.,
: .(...heapUsages),
: .(),
: .(),
: .()
};
}
() {
bottlenecks = [];
avgCPU = ..( sum + m.., ) /
..;
(avgCPU > ) {
bottlenecks.({
: ,
: ,
:
});
}
memoryGrowth = .();
(memoryGrowth. > * ) {
bottlenecks.({
: ,
: ,
:
});
}
avgNetworkOut = ..( sum + m.., ) /
..;
(avgNetworkOut > * * ) {
bottlenecks.({
: ,
: ,
:
});
}
bottlenecks;
}
}
Adaptive Performance Optimizer
class AdaptiveOptimizer {
constructor() {
this.optimizationHistory = new Map();
this.performanceModel = new PerformanceModel();
this.parameterTuner = new ParameterTuner();
this.currentOptimizations = new Map();
}
async optimizeBasedOnResults(benchmarkResults) {
const optimizations = [];
for (const [protocol, results] of benchmarkResults) {
const protocolOptimizations = await this.optimizeProtocol(protocol, results);
optimizations.push(...protocolOptimizations);
}
await this.applyOptimizations(optimizations);
return optimizations;
}
async optimizeProtocol(protocol, results) {
const optimizations = [];
const bottlenecks = this.identifyPerformanceBottlenecks(results);
( bottleneck bottlenecks) {
optimization = .(protocol, bottleneck);
(optimization) {
optimizations.(optimization);
}
}
parameterOptimizations = .(protocol, results);
optimizations.(...parameterOptimizations);
optimizations;
}
() {
bottlenecks = [];
( [scenario, result] results) {
(result. && result.. < result.. * ) {
bottlenecks.({
: ,
: scenario,
: ,
: (result.. - result..) /
result..,
: result.
});
}
(result. && result.. > result.. * ) {
bottlenecks.({
: ,
: scenario,
: ,
: result.. / result..,
: result.
});
}
(result. && result... > ) {
bottlenecks.({
: ,
: scenario,
: ,
: result..
});
}
}
bottlenecks;
}
() {
(bottleneck.) {
:
.(protocol, bottleneck);
:
.(protocol, bottleneck);
:
.(protocol, bottleneck);
:
;
}
}
() {
optimizations = [];
(protocol === ) {
optimizations.({
: ,
: ,
: .(protocol, ),
: .(bottleneck.),
: ,
:
});
}
(protocol === ) {
optimizations.({
: ,
: ,
: ,
: ,
:
});
}
optimizations. > ? optimizations[] : ;
}
() {
optimizations = [];
parameterSuggestions = ..(
protocol, results
);
( suggestion parameterSuggestions) {
(suggestion. > ) {
optimizations.({
: ,
: suggestion.,
: suggestion.,
: suggestion.,
: suggestion.,
: suggestion.,
: suggestion.
});
}
}
optimizations;
}
() {
sortedOptimizations = optimizations.(
(b. * (b.)) -
(a. * (a.))
);
( optimization sortedOptimizations) {
{
.(optimization);
.();
impact = .(optimization);
(impact. < ) {
.(optimization);
} {
.(optimization, impact);
}
} (error) {
.(, error);
.(optimization);
}
}
}
}
MCP Integration Hooks
Performance Metrics Storage
await this.mcpTools.memory_usage({
action: 'store',
key: `benchmark_results_${protocol}_${Date.now()}`,
value: JSON.stringify({
protocol: protocol,
timestamp: Date.now(),
throughput: throughputResults,
latency: latencyResults,
resourceUsage: resourceResults,
optimizations: appliedOptimizations
}),
namespace: 'performance_benchmarks',
ttl: 604800000
});
await this.mcpTools.metrics_collect({
components: [
'consensus_throughput',
'consensus_latency_p99',
'cpu_utilization',
'memory_usage',
'network_io_rate'
]
});
Neural Performance Learning
await this.mcpTools.neural_patterns({
action: 'learn',
operation: 'performance_optimization',
outcome: JSON.stringify({
optimizationType: optimization.type,
performanceGain: measurementResults.improvement,
resourceImpact: measurementResults.resourceDelta,
networkConditions: currentNetworkState
})
});
const configPrediction = await this.mcpTools.neural_predict({
modelId: 'consensus_performance_model',
input: JSON.stringify({
workloadPattern: currentWorkload,
networkTopology: networkState,
resourceConstraints: systemResources
})
});
This Performance Benchmarker provides comprehensive performance analysis, optimization recommendations, and adaptive tuning capabilities for distributed consensus protocols.