@soulcraft/brainy 0.53.0 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,384 @@
1
+ /**
2
+ * Performance Monitor
3
+ * Automatically tracks and optimizes system performance
4
+ * Provides real-time insights and auto-tuning recommendations
5
+ */
6
+ import { createModuleLogger } from './logger.js';
7
+ import { getGlobalSocketManager } from './adaptiveSocketManager.js';
8
+ import { getGlobalBackpressure } from './adaptiveBackpressure.js';
9
+ /**
10
+ * Comprehensive performance monitoring and optimization
11
+ */
12
+ export class PerformanceMonitor {
13
+ constructor() {
14
+ this.logger = createModuleLogger('PerformanceMonitor');
15
+ // Current metrics
16
+ this.metrics = {
17
+ totalOperations: 0,
18
+ successfulOperations: 0,
19
+ failedOperations: 0,
20
+ averageLatency: 0,
21
+ p95Latency: 0,
22
+ p99Latency: 0,
23
+ operationsPerSecond: 0,
24
+ bytesPerSecond: 0,
25
+ memoryUsage: 0,
26
+ cpuUsage: 0,
27
+ socketUtilization: 0,
28
+ queueDepth: 0,
29
+ errorRate: 0,
30
+ healthScore: 100
31
+ };
32
+ // Historical data for trend analysis
33
+ this.history = [];
34
+ this.maxHistorySize = 1000;
35
+ // Operation tracking
36
+ this.operationLatencies = [];
37
+ this.operationSizes = [];
38
+ this.lastReset = Date.now();
39
+ this.resetInterval = 60000; // Reset counters every minute
40
+ // CPU tracking
41
+ this.lastCpuUsage = process.cpuUsage ? process.cpuUsage() : null;
42
+ this.lastCpuCheck = Date.now();
43
+ // Alert thresholds
44
+ this.thresholds = {
45
+ errorRate: 0.05, // 5% error rate
46
+ latencyP95: 5000, // 5 second P95
47
+ memoryUsage: 0.8, // 80% memory
48
+ cpuUsage: 0.9, // 90% CPU
49
+ healthScore: 70 // Health score below 70
50
+ };
51
+ // Optimization recommendations
52
+ this.recommendations = [];
53
+ // Auto-optimization state
54
+ this.autoOptimizeEnabled = true;
55
+ this.lastOptimization = Date.now();
56
+ this.optimizationInterval = 30000; // Optimize every 30 seconds
57
+ }
58
+ /**
59
+ * Track an operation completion
60
+ */
61
+ trackOperation(success, latency, bytes = 0) {
62
+ // Update counters
63
+ this.metrics.totalOperations++;
64
+ if (success) {
65
+ this.metrics.successfulOperations++;
66
+ }
67
+ else {
68
+ this.metrics.failedOperations++;
69
+ }
70
+ // Track latency
71
+ this.operationLatencies.push(latency);
72
+ if (this.operationLatencies.length > 10000) {
73
+ this.operationLatencies = this.operationLatencies.slice(-5000);
74
+ }
75
+ // Track size
76
+ if (bytes > 0) {
77
+ this.operationSizes.push(bytes);
78
+ if (this.operationSizes.length > 10000) {
79
+ this.operationSizes = this.operationSizes.slice(-5000);
80
+ }
81
+ }
82
+ // Update metrics periodically
83
+ this.updateMetrics();
84
+ }
85
+ /**
86
+ * Update all metrics
87
+ */
88
+ updateMetrics() {
89
+ const now = Date.now();
90
+ const timeSinceReset = (now - this.lastReset) / 1000;
91
+ // Calculate latency percentiles
92
+ if (this.operationLatencies.length > 0) {
93
+ const sorted = [...this.operationLatencies].sort((a, b) => a - b);
94
+ const p95Index = Math.floor(sorted.length * 0.95);
95
+ const p99Index = Math.floor(sorted.length * 0.99);
96
+ this.metrics.averageLatency = sorted.reduce((a, b) => a + b, 0) / sorted.length;
97
+ this.metrics.p95Latency = sorted[p95Index] || 0;
98
+ this.metrics.p99Latency = sorted[p99Index] || 0;
99
+ }
100
+ // Calculate throughput
101
+ if (timeSinceReset > 0) {
102
+ this.metrics.operationsPerSecond = this.metrics.totalOperations / timeSinceReset;
103
+ const totalBytes = this.operationSizes.reduce((a, b) => a + b, 0);
104
+ this.metrics.bytesPerSecond = totalBytes / timeSinceReset;
105
+ }
106
+ // Calculate error rate
107
+ this.metrics.errorRate = this.metrics.totalOperations > 0
108
+ ? this.metrics.failedOperations / this.metrics.totalOperations
109
+ : 0;
110
+ // Update resource metrics
111
+ this.updateResourceMetrics();
112
+ // Calculate health score
113
+ this.calculateHealthScore();
114
+ // Store in history
115
+ this.history.push({ ...this.metrics });
116
+ if (this.history.length > this.maxHistorySize) {
117
+ this.history.shift();
118
+ }
119
+ // Check for alerts
120
+ this.checkAlerts();
121
+ // Auto-optimize if enabled
122
+ if (this.autoOptimizeEnabled && now - this.lastOptimization > this.optimizationInterval) {
123
+ this.autoOptimize();
124
+ this.lastOptimization = now;
125
+ }
126
+ // Reset counters periodically
127
+ if (now - this.lastReset > this.resetInterval) {
128
+ this.resetCounters();
129
+ }
130
+ }
131
+ /**
132
+ * Update resource metrics
133
+ */
134
+ updateResourceMetrics() {
135
+ // Memory usage
136
+ if (typeof process !== 'undefined' && process.memoryUsage) {
137
+ const memUsage = process.memoryUsage();
138
+ this.metrics.memoryUsage = memUsage.heapUsed / memUsage.heapTotal;
139
+ }
140
+ // CPU usage (Node.js only)
141
+ if (this.lastCpuUsage && process.cpuUsage) {
142
+ const currentCpuUsage = process.cpuUsage();
143
+ const now = Date.now();
144
+ const timeDiff = now - this.lastCpuCheck;
145
+ if (timeDiff > 1000) { // Update CPU every second
146
+ const userDiff = currentCpuUsage.user - this.lastCpuUsage.user;
147
+ const systemDiff = currentCpuUsage.system - this.lastCpuUsage.system;
148
+ const totalDiff = userDiff + systemDiff;
149
+ // CPU percentage (approximate)
150
+ this.metrics.cpuUsage = totalDiff / (timeDiff * 1000);
151
+ this.lastCpuUsage = currentCpuUsage;
152
+ this.lastCpuCheck = now;
153
+ }
154
+ }
155
+ // Get metrics from socket manager
156
+ const socketMetrics = getGlobalSocketManager().getMetrics();
157
+ this.metrics.socketUtilization = socketMetrics.socketUtilization;
158
+ // Get metrics from backpressure system
159
+ const backpressureStatus = getGlobalBackpressure().getStatus();
160
+ this.metrics.queueDepth = backpressureStatus.queueLength;
161
+ }
162
+ /**
163
+ * Calculate overall health score
164
+ */
165
+ calculateHealthScore() {
166
+ let score = 100;
167
+ // Deduct points for high error rate
168
+ if (this.metrics.errorRate > 0.01) {
169
+ score -= Math.min(30, this.metrics.errorRate * 300);
170
+ }
171
+ // Deduct points for high latency
172
+ if (this.metrics.p95Latency > 3000) {
173
+ score -= Math.min(20, (this.metrics.p95Latency - 3000) / 100);
174
+ }
175
+ // Deduct points for high memory usage
176
+ if (this.metrics.memoryUsage > 0.7) {
177
+ score -= Math.min(20, (this.metrics.memoryUsage - 0.7) * 66);
178
+ }
179
+ // Deduct points for high CPU usage
180
+ if (this.metrics.cpuUsage > 0.8) {
181
+ score -= Math.min(15, (this.metrics.cpuUsage - 0.8) * 75);
182
+ }
183
+ // Deduct points for low throughput
184
+ if (this.metrics.operationsPerSecond < 1 && this.metrics.totalOperations > 10) {
185
+ score -= 10;
186
+ }
187
+ // Deduct points for queue depth
188
+ if (this.metrics.queueDepth > 100) {
189
+ score -= Math.min(15, this.metrics.queueDepth / 20);
190
+ }
191
+ this.metrics.healthScore = Math.max(0, Math.min(100, score));
192
+ }
193
+ /**
194
+ * Check for alert conditions
195
+ */
196
+ checkAlerts() {
197
+ const alerts = [];
198
+ if (this.metrics.errorRate > this.thresholds.errorRate) {
199
+ alerts.push(`High error rate: ${(this.metrics.errorRate * 100).toFixed(1)}%`);
200
+ }
201
+ if (this.metrics.p95Latency > this.thresholds.latencyP95) {
202
+ alerts.push(`High P95 latency: ${this.metrics.p95Latency}ms`);
203
+ }
204
+ if (this.metrics.memoryUsage > this.thresholds.memoryUsage) {
205
+ alerts.push(`High memory usage: ${(this.metrics.memoryUsage * 100).toFixed(1)}%`);
206
+ }
207
+ if (this.metrics.cpuUsage > this.thresholds.cpuUsage) {
208
+ alerts.push(`High CPU usage: ${(this.metrics.cpuUsage * 100).toFixed(1)}%`);
209
+ }
210
+ if (this.metrics.healthScore < this.thresholds.healthScore) {
211
+ alerts.push(`Low health score: ${this.metrics.healthScore.toFixed(0)}`);
212
+ }
213
+ if (alerts.length > 0) {
214
+ this.logger.warn('Performance alerts', { alerts, metrics: this.metrics });
215
+ }
216
+ }
217
+ /**
218
+ * Auto-optimize system based on metrics
219
+ */
220
+ autoOptimize() {
221
+ this.recommendations = [];
222
+ // Analyze trends
223
+ const trends = this.analyzeTrends();
224
+ // Generate recommendations based on metrics and trends
225
+ if (this.metrics.errorRate > 0.02) {
226
+ this.recommendations.push('Reduce load or increase timeouts due to high error rate');
227
+ }
228
+ if (this.metrics.p95Latency > 3000) {
229
+ this.recommendations.push('Increase batch size or socket limits to improve latency');
230
+ }
231
+ if (this.metrics.memoryUsage > 0.7) {
232
+ this.recommendations.push('Reduce cache sizes or batch sizes to free memory');
233
+ }
234
+ if (this.metrics.queueDepth > 50) {
235
+ this.recommendations.push('Increase concurrency limits to reduce queue depth');
236
+ }
237
+ // Check for degrading trends
238
+ trends.forEach(trend => {
239
+ if (trend.direction === 'degrading' && Math.abs(trend.changeRate) > 0.1) {
240
+ this.recommendations.push(`${trend.metric} is degrading at ${(trend.changeRate * 100).toFixed(1)}% per minute`);
241
+ }
242
+ });
243
+ // Log recommendations if any
244
+ if (this.recommendations.length > 0) {
245
+ this.logger.info('Performance optimization recommendations', {
246
+ recommendations: this.recommendations,
247
+ metrics: this.metrics
248
+ });
249
+ }
250
+ }
251
+ /**
252
+ * Analyze performance trends
253
+ */
254
+ analyzeTrends() {
255
+ const trends = [];
256
+ if (this.history.length < 10) {
257
+ return trends; // Not enough data
258
+ }
259
+ // Get recent history
260
+ const recent = this.history.slice(-20);
261
+ const older = this.history.slice(-40, -20);
262
+ // Compare key metrics
263
+ const metricsToAnalyze = [
264
+ 'errorRate',
265
+ 'averageLatency',
266
+ 'operationsPerSecond',
267
+ 'memoryUsage',
268
+ 'healthScore'
269
+ ];
270
+ metricsToAnalyze.forEach(metric => {
271
+ const recentAvg = recent.reduce((sum, m) => sum + m[metric], 0) / recent.length;
272
+ const olderAvg = older.length > 0
273
+ ? older.reduce((sum, m) => sum + m[metric], 0) / older.length
274
+ : recentAvg;
275
+ const changeRate = olderAvg !== 0 ? (recentAvg - olderAvg) / olderAvg : 0;
276
+ let direction = 'stable';
277
+ if (Math.abs(changeRate) > 0.05) { // 5% threshold
278
+ // For error rate and latency, increase is bad
279
+ if (metric === 'errorRate' || metric === 'averageLatency' || metric === 'memoryUsage') {
280
+ direction = changeRate > 0 ? 'degrading' : 'improving';
281
+ }
282
+ else {
283
+ // For throughput and health score, increase is good
284
+ direction = changeRate > 0 ? 'improving' : 'degrading';
285
+ }
286
+ }
287
+ // Simple linear prediction
288
+ const prediction = recentAvg + (recentAvg * changeRate);
289
+ trends.push({
290
+ metric,
291
+ direction,
292
+ changeRate,
293
+ prediction
294
+ });
295
+ });
296
+ return trends;
297
+ }
298
+ /**
299
+ * Reset counters
300
+ */
301
+ resetCounters() {
302
+ this.metrics.totalOperations = 0;
303
+ this.metrics.successfulOperations = 0;
304
+ this.metrics.failedOperations = 0;
305
+ this.operationSizes = [];
306
+ this.lastReset = Date.now();
307
+ }
308
+ /**
309
+ * Get current metrics
310
+ */
311
+ getMetrics() {
312
+ return { ...this.metrics };
313
+ }
314
+ /**
315
+ * Get performance trends
316
+ */
317
+ getTrends() {
318
+ return this.analyzeTrends();
319
+ }
320
+ /**
321
+ * Get recommendations
322
+ */
323
+ getRecommendations() {
324
+ return [...this.recommendations];
325
+ }
326
+ /**
327
+ * Get performance report
328
+ */
329
+ getReport() {
330
+ return {
331
+ metrics: this.getMetrics(),
332
+ trends: this.getTrends(),
333
+ recommendations: this.getRecommendations(),
334
+ socketConfig: getGlobalSocketManager().getConfig(),
335
+ backpressureStatus: getGlobalBackpressure().getStatus()
336
+ };
337
+ }
338
+ /**
339
+ * Enable/disable auto-optimization
340
+ */
341
+ setAutoOptimize(enabled) {
342
+ this.autoOptimizeEnabled = enabled;
343
+ this.logger.info(`Auto-optimization ${enabled ? 'enabled' : 'disabled'}`);
344
+ }
345
+ /**
346
+ * Reset all metrics and history
347
+ */
348
+ reset() {
349
+ this.metrics = {
350
+ totalOperations: 0,
351
+ successfulOperations: 0,
352
+ failedOperations: 0,
353
+ averageLatency: 0,
354
+ p95Latency: 0,
355
+ p99Latency: 0,
356
+ operationsPerSecond: 0,
357
+ bytesPerSecond: 0,
358
+ memoryUsage: 0,
359
+ cpuUsage: 0,
360
+ socketUtilization: 0,
361
+ queueDepth: 0,
362
+ errorRate: 0,
363
+ healthScore: 100
364
+ };
365
+ this.history = [];
366
+ this.operationLatencies = [];
367
+ this.operationSizes = [];
368
+ this.recommendations = [];
369
+ this.lastReset = Date.now();
370
+ this.logger.info('Performance monitor reset');
371
+ }
372
+ }
373
+ // Global singleton instance
374
+ let globalMonitor = null;
375
+ /**
376
+ * Get the global performance monitor instance
377
+ */
378
+ export function getGlobalPerformanceMonitor() {
379
+ if (!globalMonitor) {
380
+ globalMonitor = new PerformanceMonitor();
381
+ }
382
+ return globalMonitor;
383
+ }
384
+ //# sourceMappingURL=performanceMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performanceMonitor.js","sourceRoot":"","sources":["../../src/utils/performanceMonitor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soulcraft/brainy",
3
- "version": "0.53.0",
3
+ "version": "0.54.0",
4
4
  "description": "A vector graph database using HNSW indexing with Origin Private File System storage",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",