Skip to main content
Glama
benchmarking-guide.mdβ€’33.6 kB
# Performance Benchmarking and Optimization Guide ## Overview This guide provides comprehensive benchmarking methodologies and optimization strategies for the ThoughtMCP cognitive architecture. It covers performance metrics, benchmarking tools, optimization techniques, and scaling considerations. ## Performance Metrics ### Core Performance Indicators #### 1. Latency Metrics - **Total Response Time**: End-to-end processing time - **Component Processing Time**: Time spent in each cognitive component - **Memory Operation Time**: Time for memory storage and retrieval - **Network Overhead**: MCP protocol communication time #### 2. Throughput Metrics - **Requests Per Second (RPS)**: Maximum sustainable request rate - **Concurrent Sessions**: Number of simultaneous client sessions - **Memory Operations Per Second**: Rate of memory storage/retrieval - **Consolidation Throughput**: Rate of memory consolidation processing #### 3. Resource Utilization - **CPU Usage**: Processor utilization during cognitive processing - **Memory Usage**: RAM consumption per session and total - **Storage I/O**: Disk read/write operations for memory persistence - **Network Bandwidth**: Data transfer rates for MCP communication #### 4. Quality Metrics - **Confidence Scores**: Average confidence in reasoning outputs - **Coherence Ratings**: Logical consistency of reasoning chains - **Bias Detection Rate**: Frequency of cognitive bias identification - **Memory Retrieval Accuracy**: Precision of memory recall operations ## Benchmarking Framework ### Automated Benchmarking Suite ```typescript import { ThoughtMCPClient } from "../examples/cognitive-client.js"; import { performance } from "perf_hooks"; interface BenchmarkResult { metric: string; value: number; unit: string; timestamp: number; metadata?: any; } class CognitiveBenchmark { private client: ThoughtMCPClient; private results: BenchmarkResult[] = []; constructor() { this.client = new ThoughtMCPClient(); } async runComprehensiveBenchmark(): Promise<BenchmarkReport> { console.log("πŸš€ Starting ce cognitive benchmark..."); await this.client.connect(); try { // Latency benchmarks await this.benchmarkLatency(); // Throughput benchmarks await this.benchmarkThroughput(); // Memory performance benchmarks await this.benchmarkMemoryPerformance(); // Quality benchmarks await this.benchmarkQuality(); // Resource utilization benchmarks await this.benchmarkResourceUsage(); return this.generateReport(); } finally { await this.client.disconnect(); } } private async benchmarkLatency(): Promise<void> { console.log("⏱️ Benchmarking latency across processing modes..."); const testCases = [ { name: "Simple Intuitive", input: "What is 2+2?", mode: "intuitive", expectedLatency: 100, }, { name: "Complex Deliberative", input: "Analyze the ethical implications of artificial general intelligence", mode: "deliberative", expectedLatency: 800, }, { name: "Creative Problem Solving", input: "Design an innovative solution for urban transportation", mode: "creative", expectedLatency: 600, }, { name: "Analytical Reasoning", input: "Evaluate the statistical significance of this dataset: [1,2,3,4,5,6,7,8,9,10]", mode: "analytical", expectedLatency: 500, }, ]; for (const testCase of testCases) { const iterations = 10; const latencies: number[] = []; for (let i = 0; i < iterations; i++) { const startTime = performance.now(); try { await (this.client as any).cognitiveClient.client.request({ method: "tools/call", params: { name: "think", arguments: { input: testCase.input, mode: testCase.mode, }, }, }); const latency = performance.now() - startTime; latencies.push(latency); } catch (error) { console.error(`❌ Error in ${testCase.name}: ${error}`); } } const avgLatency = latencies.reduce((a, b) => a + b, 0) / latencies.length; const p95Latency = this.percentile(latencies, 95); const p99Latency = this.percentile(latencies, 99); this.results.push({ metric: `${testCase.name}_avg_latency`, value: avgLatency, unit: "ms", timestamp: Date.now(), metadata: { expected: testCase.expectedLatency, mode: testCase.mode }, }); this.results.push({ metric: `${testCase.name}_p95_latency`, value: p95Latency, unit: "ms", timestamp: Date.now(), }); this.results.push({ metric: `${testCase.name}_p99_latency`, value: p99Latency, unit: "ms", timestamp: Date.now(), }); console.log( ` ${testCase.name}: ${avgLatency.toFixed( 2 )}ms avg, ${p95Latency.toFixed(2)}ms p95` ); } } private async benchmarkThroughput(): Promise<void> { console.log("πŸ”„ Benchmarking throughput and concurrency..."); const concurrencyLevels = [1, 5, 10, 20, 50]; const testDuration = 30000; // 30 ss for (const concurrency of concurrencyLevels) { console.log(` Testing concurrency level: ${concurrency}`); const startTime = Date.now(); let completedRequests = 0; let errors = 0; const workers = Array.from({ length: concurrency }, async () => { while (Date.now() - startTime < testDuration) { try { await (this.client as any).cognitiveClient.client.request({ method: "tools/call", params: { name: "think", arguments: { input: "Quick test question", mode: "intuitive", }, }, }); completedRequests++; } catch (error) { errors++; } } }); await Promise.all(workers); const actualDuration = Date.now() - startTime; const rps = (completedRequests / actualDuration) * 1000; const errorRate = errors / (completedRequests + errors); this.results.push({ metric: `throughput_concurrency_${concurrency}`, value: rps, unit: "rps", timestamp: Date.now(), metadata: { concurrency, errors, errorRate }, }); console.log( ` RPS: ${rps.toFixed(2)}, Error Rate: ${(errorRate * 100).toFixed( 2 )}%` ); } } private async benchmarkMemoryPerformance(): Promise<void> { console.log("🧠 Benchmarking memory system performance..."); // Memory storage benchmark const memoryItems = 1000; const startTime = performance.now(); for (let i = 0; i < memoryItems; i++) { try { await (this.client as any).cognitiveClient.client.request({ method: "tools/call", params: { name: "remember", arguments: { content: `Test memory item ${i}: This is sample content for benchmarking`, type: i % 2 === 0 ? "episodic" : "semantic", importance: Math.random(), }, }, }); } catch (error) { console.error(`Memory storage error: ${error}`); } } const storageTime = performance.now() - startTime; const storageRate = (memoryItems / storageTime) * 1000; this.results.push({ metric: "memory_storage_rate", value: storageRate, unit: "items/sec", timestamp: Date.now(), }); // Memory retrieval benchmark const retrievalQueries = [ "test memory", "sample content", "benchmarking", "episodic", "semantic", ]; const retrievalStartTime = performance.now(); let totalRetrievals = 0; for (const query of retrievalQueries) { for (let i = 0; i < 100; i++) { try { await (this.client as any).cognitiveClient.client.request({ method: "tools/call", params: { name: "recall", arguments: { cue: query, max_results: 10, }, }, }); totalRetrievals++; } catch (error) { console.error(`Memory retrieval error: ${error}`); } } } const retrievalTime = performance.now() - retrievalStartTime; const retrievalRate = (totalRetrievals / retrievalTime) * 1000; this.results.push({ metric: "memory_retrieval_rate", value: retrievalRate, unit: "queries/sec", timestamp: Date.now(), }); console.log(` Storage Rate: ${storageRate.toFixed(2)} items/sec`); console.log(` Retrieval Rate: ${retrievalRate.toFixed(2)} queries/sec`); } private async benchmarkQuality(): Promise<void> { console.log("🎯 Benchmarking reasoning quality..."); const qualityTestCases = [ { input: "All birds can fly. Penguins are birds. Therefore, penguins can fly.", expectedBiases: ["hasty_generalization"], expectedCoherence: 0.3, }, { input: "If it rains, the ground gets wet. The ground is wet. Therefore, it rained.", expectedBiases: ["affirming_consequent"], expectedCoherence: 0.4, }, { input: "All mammals are warm-blooded. Whales are mammals. Therefore, whales are warm-blooded.", expectedBiases: [], expectedCoherence: 0.9, }, ]; let totalConfidence = 0; let totalCoherence = 0; let biasDetectionAccuracy = 0; for (const testCase of qualityTestCases) { try { const thinkResult = await ( this.client as any ).cognitiveClient.client.request({ method: "tools/call", params: { name: "think", arguments: { input: testCase.input, mode: "analytical", enable_metacognition: true, }, }, }); const analysisResult = await ( this.client as any ).cognitiveClient.client.request({ method: "tools/call", params: { name: "analyze_reasoning", arguments: { reasoning_steps: thinkResult.content?.reasoning_path || [], }, }, }); totalConfidence += thinkResult.content?.confidence || 0; totalCoherence += analysisResult.content?.coherence_score || 0; // Check bias detection accuracy const detectedBiases = analysisResult.content?.biases?.map((b: any) => b.bias_type) || []; const expectedBiases = testCase.expectedBiases; const correctDetections = expectedBiases.filter((bias) => detectedBiases.includes(bias) ).length; const accuracy = expectedBiases.length > 0 ? correctDetections / expectedBiases.length : 1; biasDetectionAccuracy += accuracy; } catch (error) { console.error(`Quality test error: ${error}`); } } const avgConfidence = totalConfidence / qualityTestCases.length; const avgCoherence = totalCoherence / qualityTestCases.length; const avgBiasAccuracy = biasDetectionAccuracy / qualityTestCases.length; this.results.push({ metric: "average_confidence", value: avgConfidence, unit: "score", timestamp: Date.now(), }); this.results.push({ metric: "average_coherence", value: avgCoherence, unit: "score", timestamp: Date.now(), }); this.results.push({ metric: "bias_detection_accuracy", value: avgBiasAccuracy, unit: "accuracy", timestamp: Date.now(), }); console.log(` Average Confidence: ${avgConfidence.toFixed(3)}`); console.log(` Average Coherence: ${avgCoherence.toFixed(3)}`); console.log(` Bias Detection Accuracy: ${avgBiasAccuracy.toFixed(3)}`); } private async benchmarkResourceUsage(): Promise<void> { console.log("πŸ’Ύ Benchmarking resource utilization..."); const initialMemory = process.memoryUsage(); const startTime = Date.now(); // Simulate sustained load const loadDuration = 60000; // 1 minute const requestInterval = 100; // 100ms between requests const loadTest = setInterval(async () => { try { await (this.client as any).cognitiveClient.client.request({ method: "tools/call", params: { name: "think", arguments: { input: "Resource usage test query", mode: "balanced", }, }, }); } catch (error) { // Ignore errors during load test } }, requestInterval); // Monitor resource usage const resourceSamples: any[] = []; const monitorInterval = setInterval(() => { const memUsage = process.memoryUsage(); const cpuUsage = process.cpuUsage(); resourceSamples.push({ timestamp: Date.now(), memory: memUsage, cpu: cpuUsage, }); }, 1000); // Wait for load test to complete await new Promise((resolve) => setTimeout(resolve, loadDuration)); clearInterval(loadTest); clearInterval(monitorInterval); // Calculate resource metrics const finalMemory = process.memoryUsage(); const memoryGrowth = finalMemory.heapUsed - initialMemory.heapUsed; const avgMemoryUsage = resourceSamples.reduce((sum, sample) => sum + sample.memory.heapUsed, 0) / resourceSamples.length; this.results.push({ metric: "memory_growth", value: memoryGrowth / 1024 / 1024, // MB unit: "MB", timestamp: Date.now(), }); this.results.push({ metric: "average_memory_usage", value: avgMemoryUsage / 1024 / 1024, // MB unit: "MB", timestamp: Date.now(), }); console.log( ` Memory Growth: ${(memoryGrowth / 1024 / 1024).toFixed(2)} MB` ); console.log( ` Average Memory Usage: ${(avgMemoryUsage / 1024 / 1024).toFixed(2)} MB` ); } private percentile(values: number[], p: number): number { const sorted = values.slice().sort((a, b) => a - b); const index = Math.ceil((p / 100) * sorted.length) - 1; return sorted[index]; } private generateReport(): BenchmarkReport { return { timestamp: Date.now(), results: this.results, summary: this.generateSummary(), recommendations: this.generateRecommendations(), }; } private generateSummary(): BenchmarkSummary { const latencyResults = this.results.filter((r) => r.metric.includes("latency") ); const throughputResults = this.results.filter((r) => r.metric.includes("throughput") ); const qualityResults = this.results.filter( (r) => r.metric.includes("confidence") || r.metric.includes("coherence") ); return { avgLatency: latencyResults.reduce((sum, r) => sum + r.value, 0) / latencyResults.length, maxThroughput: Math.max(...throughputResults.map((r) => r.value)), avgQuality: qualityResults.reduce((sum, r) => sum + r.value, 0) / qualityResults.length, resourceEfficiency: this.calculateResourceEfficiency(), }; } private calculateResourceEfficiency(): number { const memoryResult = this.results.find( (r) => r.metric === "average_memory_usage" ); const throughputResult = this.results.find((r) => r.metric.includes("throughput") ); if (!memoryResult || !throughputResult) return 0; // Efficiency = throughput / memory usage return throughputResult.value / memoryResult.value; } private generateRecommendations(): string[] { const recommendations: string[] = []; // Latency recommendations const avgLatency = this.results.find((r) => r.metric.includes("avg_latency"))?.value || 0; if (avgLatency > 500) { recommendations.push( "Consider reducing max_depth or using faster processing modes for better latency" ); } // Memory recommendations const memoryGrowth = this.results.find((r) => r.metric === "memory_growth")?.value || 0; if (memoryGrowth > 100) { // 100MB recommendations.push( "Memory usage is growing significantly - consider implementing memory cleanup strategies" ); } // Quality recommendations const avgCoherence = this.results.find((r) => r.metric === "average_coherence")?.value || 0; if (avgCoherence < 0.7) { recommendations.push( "Reasoning coherence is below optimal - consider enabling metacognitive monitoring" ); } return recommendations; } } interface BenchmarkReport { timestamp: number; results: BenchmarkResult[]; summary: BenchmarkSummary; recommendations: string[]; } interface BenchmarkSummary { avgLatency: number; maxThroughput: number; avgQuality: number; resourceEfficiency: number; } export { CognitiveBenchmark }; ``` ### Benchmark Execution Script ```typescript // benchmark-runner.ts import { CognitiveBenchmark } from "./cognitive-benchmark.js"; import fs from "fs/promises"; async function runBenchmarks() { const benchmark = new CognitiveBenchmark(); console.log("🧠 ThoughtMCP Performance Benchmark Suite"); console.log("=========================================="); try { const report = await benchmark.runComprehensiveBenchmark(); // Save results const timestamp = new Date().toISOString().replace(/[:.]/g, "-"); const filename = `benchmark-report-${timestamp}.json`; await fs.writeFile(filename, JSON.stringify(report, null, 2)); console.log("\nπŸ“Š Benchmark Summary:"); console.log(` Average Latency: ${report.summary.avgLatency.toFixed(2)}ms`); console.log( ` Max Throughput: ${report.summary.maxThroughput.toFixed(2)} RPS` ); console.log(` Average Quality: ${report.summary.avgQuality.toFixed(3)}`); console.log( ` Resource Efficiency: ${report.summary.resourceEfficiency.toFixed(2)}` ); if (report.recommendations.length > 0) { console.log("\nπŸ’‘ Recommendations:"); report.recommendations.forEach((rec) => console.log(` β€’ ${rec}`)); } console.log(`\nπŸ“„ Full report saved to: ${filename}`); } catch (error) { console.error("❌ Benchmark failed:", error); process.exit(1); } } if (require.main === module) { runBenchmarks(); } ``` ## Performance Optimization Strategies ### 1. Latency Optimization #### Component-Level Optimizations **Sensory Processing**: ```typescript // Fast configuration for simple inputs const fastSensoryConfig = { attention_threshold: 0.5, // Higher threshold = less processing max_tokens: 500, // Limit input size pattern_detection: false, // Disable for simple inputs semantic_chunking: false, // Disable for speed }; ``` **Working Memory**: ```typescript // Optimized for speed const fastWorkingMemoryConfig = { capacity: 5, // Smaller capacity = faster processing decay_rate: 0.2, // Faster decay = less maintenance rehearsal_threshold: 0.7, // Higher threshold = less rehearsal chunking_enabled: false, // Disable for speed }; ``` **Dual Process**: ```typescript // Bias toward System 1 for speed const fastDualProcessConfig = { conflict_threshold: 0.8, // Higher threshold = more System 1 system2_timeout: 1000, // Shorter timeout mode_bias: "system1", // Prefer fast processing }; ``` #### Pipeline Optimizations **Early Termination**: ```typescript class OptimizedCognitiveOrchestrator { async think(input: string, options: ThinkOptions): Promise<ThoughtResult> { // Early termination for simple inputs if (this.isSimpleInput(input)) { return await this.fastTrack(input); } // Progressive processing with confidence checks let result = await this.system1Process(input); if (result.confidence > 0.8) { return result; // Early termination } return await this.system2Process(input, result); } private isSimpleInput(input: string): boolean { return ( input.length < 50 && !input.includes("?") && this.getComplexityScore(input) < 0.3 ); } } ``` **Parallel Processing**: ```typescript class ParallelCognitiveProcessor { async processInParallel(input: CognitiveInput): Promise<ThoughtResult> { // Process multiple components in parallel const [sensoryResult, memoryResult, emotionalResult] = await Promise.all([ this.sensoryProcessor.process(input), this.memorySystem.retrieve(input.cue), this.emotionalProcessor.assess(input), ]); // Combine results return this.combineResults(sensoryResult, memoryResult, emotionalResult); } } ``` ### 2. Memory Optimization #### Memory Pool Management ```typescript class MemoryPoolManager { private episodicPool: MemoryPool; private semanticPool: MemoryPool; private consolidationQueue: ConsolidationQueue; constructor() { this.episodicPool = new MemoryPool({ maxSize: 50000, evictionPolicy: "LRU", compressionEnabled: true, }); this.semanticPool = new MemoryPool({ maxSize: 100000, evictionPolicy: "importance", compressionEnabled: true, }); } async optimizeMemoryUsage(): Promise<void> { // Compress old memories await this.compressOldMemories(); // Remove duplicates await this.deduplicateMemories(); // Consolidate patterns await this.consolidationEngine.run(); // Garbage collect unused memories await this.garbageCollect(); } } ``` #### Efficient Memory Retrieval ```typescript class OptimizedMemoryRetrieval { private indexCache: Map<string, MemoryIndex>; private embeddingCache: Map<string, Float32Array>; async retrieve(cue: string, options: RetrievalOptions): Promise<Memory[]> { // Check cache first const cacheKey = this.generateCacheKey(cue, options); if (this.indexCache.has(cacheKey)) { return this.retrieveFromCache(cacheKey); } // Use approximate nearest neighbor for speed const embedding = await this.getOrComputeEmbedding(cue); const candidates = await this.approximateSearch( embedding, options.maxResults * 2 ); // Refine with exact similarity const results = await this.refineResults(candidates, cue, options); // Cache results this.cacheResults(cacheKey, results); return results; } } ``` ### 3. Throughput Optimization #### Connection Pooling ```typescript class MCPConnectionPool { private connections: MCPConnection[]; private availableConnections: Queue<MCPConnection>; private maxConnections: number = 100; async getConnection(): Promise<MCPConnection> { if (this.availableConnections.length > 0) { return this.availableConnections.dequeue(); } if (this.connections.length < this.maxConnections) { const connection = await this.createConnection(); this.connections.push(connection); return connection; } // Wait for available connection return await this.waitForConnection(); } releaseConnection(connection: MCPConnection): void { this.availableConnections.enqueue(connection); } } ``` #### Request Batching ```typescript class BatchProcessor { private batchQueue: CognitiveRequest[] = []; private batchSize: number = 10; private batchTimeout: number = 100; // ms async processBatch( requests: CognitiveRequest[] ): Promise<CognitiveResponse[]> { // Group similar requests const groups = this.groupSimilarRequests(requests); // Process groups in parallel const results = await Promise.all( groups.map((group) => this.processGroup(group)) ); return results.flat(); } private groupSimilarRequests( requests: CognitiveRequest[] ): CognitiveRequest[][] { const groups = new Map<string, CognitiveRequest[]>(); for (const request of requests) { const key = this.getGroupKey(request); if (!groups.has(key)) { groups.set(key, []); } groups.get(key)!.push(request); } return Array.from(groups.values()); } } ``` ### 4. Resource Optimization #### CPU Optimization ```typescript class CPUOptimizedProcessor { private workerPool: WorkerPool; constructor() { this.workerPool = new WorkerPool({ maxWorkers: require("os").cpus().length, workerScript: "./cognitive-worker.js", }); } async processIntensive(task: IntensiveTask): Promise<TaskResult> { // Offload CPU-intensive tasks to worker threads return await this.workerPool.execute(task); } async processWithPriority(tasks: PrioritizedTask[]): Promise<TaskResult[]> { // Sort by priority tasks.sort((a, b) => b.priority - a.priority); // Process high-priority tasks first const results: TaskResult[] = []; for (const task of tasks) { if (task.priority > 0.8) { results.push(await this.processImmediately(task)); } else { results.push(await this.processWhenAvailable(task)); } } return results; } } ``` #### Memory Optimization ```typescript class MemoryOptimizedStorage { private compressionEnabled: boolean = true; private compressionThreshold: number = 1000; // bytes async store(data: any): Promise<string> { const serialized = JSON.stringify(data); if ( this.compressionEnabled && serialized.length > this.compressionThreshold ) { const compressed = await this.compress(serialized); return await this.persistCompressed(compressed); } return await this.persistRaw(serialized); } async retrieve(id: string): Promise<any> { const stored = await this.getStored(id); if (stored.compressed) { const decompressed = await this.decompress(stored.data); return JSON.parse(decompressed); } return JSON.parse(stored.data); } } ``` ## Scaling Strategies ### Horizontal Scaling #### Load Balancing ```typescript class CognitiveLoadBalancer { private servers: CognitiveServer[]; private currentIndex: number = 0; async routeRequest(request: CognitiveRequest): Promise<CognitiveResponse> { const server = this.selectServer(request); return await server.process(request); } private selectServer(request: CognitiveRequest): CognitiveServer { // Round-robin with health checks for (let i = 0; i < this.servers.length; i++) { const serverIndex = (this.currentIndex + i) % this.servers.length; const server = this.servers[serverIndex]; if (server.isHealthy() && server.canHandle(request)) { this.currentIndex = (serverIndex + 1) % this.servers.length; return server; } } throw new Error("No available servers"); } } ``` #### Distributed Memory ```typescript class DistributedMemorySystem { private memoryNodes: MemoryNode[]; private consistentHashing: ConsistentHashRing; async store(memory: Memory): Promise<void> { const nodes = this.consistentHashing.getNodes(memory.id, 3); // 3 replicas await Promise.all(nodes.map((node) => node.store(memory))); } async retrieve(cue: string): Promise<Memory[]> { const nodes = this.consistentHashing.getNodes(cue, 1); const primaryNode = nodes[0]; try { return await primaryNode.retrieve(cue); } catch (error) { // Fallback to other replicas const fallbackNodes = this.consistentHashing.getNodes(cue, 3).slice(1); for (const node of fallbackNodes) { try { return await node.retrieve(cue); } catch (fallbackError) { continue; } } throw new Error("All memory nodes failed"); } } } ``` ### Vertical Scaling #### Resource Allocation ```typescript class ResourceManager { private cpuQuota: number; private memoryQuota: number; private currentUsage: ResourceUsage; async allocateResources(task: CognitiveTask): Promise<ResourceAllocation> { const required = this.estimateRequirements(task); if (!this.canAllocate(required)) { await this.freeResources(); } return this.allocate(required); } private async freeResources(): Promise<void> { // Garbage collect unused memories await this.memorySystem.garbageCollect(); // Cancel low-priority tasks await this.taskScheduler.cancelLowPriorityTasks(); // Compress cached data await this.compressionManager.compressCache(); } } ``` ## Monitoring and Alerting ### Performance Monitoring ```typescript class PerformanceMonitor { private metrics: MetricsCollector; private alerts: AlertManager; startMonitoring(): void { // Collect metrics every second setInterval(() => { this.collectMetrics(); }, 1000); // Check alerts every 10 seconds setInterval(() => { this.checkAlerts(); }, 10000); } private collectMetrics(): void { const metrics = { timestamp: Date.now(), latency: this.measureLatency(), throughput: this.measureThroughput(), memory: process.memoryUsage(), cpu: process.cpuUsage(), activeConnections: this.getActiveConnections(), queueLength: this.getQueueLength(), }; this.metrics.record(metrics); } private checkAlerts(): void { const recentMetrics = this.metrics.getRecent(60000); // Last minute // High latency alert const avgLatency = this.calculateAverage(recentMetrics, "latency"); if (avgLatency > 1000) { this.alerts.trigger("high_latency", { value: avgLatency }); } // Low throughput alert const avgThroughput = this.calculateAverage(recentMetrics, "throughput"); if (avgThroughput < 10) { this.alerts.trigger("low_throughput", { value: avgThroughput }); } // High memory usage alert const avgMemory = this.calculateAverage(recentMetrics, "memory.heapUsed"); if (avgMemory > 1024 * 1024 * 1024) { // 1GB this.alerts.trigger("high_memory", { value: avgMemory }); } } } ``` ### Health Checks ```typescript class HealthChecker { async checkHealth(): Promise<HealthStatus> { const checks = await Promise.allSettled([ this.checkCognitiveComponents(), this.checkMemorySystem(), this.checkMCPConnection(), this.checkResourceUsage(), ]); const results = checks.map((check, index) => ({ component: ["cognitive", "memory", "mcp", "resources"][index], status: check.status === "fulfilled" ? "healthy" : "unhealthy", details: check.status === "fulfilled" ? check.value : check.reason, })); const overallHealth = results.every((r) => r.status === "healthy") ? "healthy" : "unhealthy"; return { status: overallHealth, timestamp: Date.now(), components: results, }; } private async checkCognitiveComponents(): Promise<ComponentHealth> { // Test basic thinking functionality const testResult = await this.orchestrator.think("Health check test", { mode: "intuitive", timeout: 5000, }); return { responsive: true, latency: testResult.processingTime, confidence: testResult.confidence, }; } } ``` ## Best Practices Summary ### Performance Best Practices 1. **Choose Appropriate Processing Modes** - Use intuitive mode for simple, familiar tasks - Use deliberative mode only for complex, important decisions - Use balanced mode as a safe default 2. **Optimize Memory Usage** - Set appropriate memory limits and decay rates - Use importance scoring to prioritize memory retention - Implement regular memory consolidation 3. **Monitor and Alert** - Set up comprehensive performance monitoring - Configure alerts for key metrics (latency, throughput, memory) - Regularly review and adjust thresholds 4. **Scale Appropriately** - Start with vertical scaling for simplicity - Move to horizontal scaling for high throughput requirements - Use load balancing and distributed memory for large deployments 5. **Optimize for Your Use Case** - Profile your specific workload patterns - Tune configuration parameters based on requirements - Regularly benchmark and optimize ### Configuration Recommendations #### Development Environment ```typescript const devConfig = { mode: "balanced", max_depth: 8, temperature: 0.6, enable_emotion: true, enable_metacognition: true, memory: { episodic_capacity: 1000, semantic_capacity: 5000, consolidation_interval: 300000, // 5 minutes }, }; ``` #### Production Environment ```typescript const prodConfig = { mode: "balanced", max_depth: 12, temperature: 0.7, enable_emotion: true, enable_metacognition: true, memory: { episodic_capacity: 50000, semantic_capacity: 100000, consolidation_interval: 1800000, // 30 minutes }, performance: { connection_pool_size: 50, batch_size: 10, timeout: 30000, }, }; ``` This comprehensive benchmarking and optimization guide provides the tools and strategies needed to achieve optimal performance with the ThoughtMCP cognitive architecture across different deployment scenarios and use cases.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/keyurgolani/ThoughtMcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server