optimization

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2025 License: MIT Imports: 12 Imported by: 0

README

Typosentinel Optimization System

A comprehensive production optimization system for Typosentinel that provides database query optimization, multi-level caching strategies, and performance monitoring.

Overview

The optimization system consists of several key components:

  • Database Optimizer: Query caching, batch processing, and index management
  • Cache Manager: Multi-level caching (L1: in-memory, L2: file-based, L3: Redis)
  • Performance Optimizer: Resource monitoring, concurrency management, and optimization engine
  • Integration Manager: Unified interface for all optimization features

Features

Database Optimization
  • Query result caching with configurable TTL
  • Batch processing for improved throughput
  • Automatic index management and optimization
  • Query performance analysis and slow query detection
  • Connection pooling and timeout management
Multi-Level Caching
  • L1 Cache (In-Memory): Fast access with LRU/LFU eviction policies
  • L2 Cache (File-Based): Persistent caching with compression
  • L3 Cache (Redis): Distributed caching for scalability
  • Cache warming and preloading strategies
  • Intelligent cache invalidation and refresh
Performance Monitoring
  • Real-time resource usage monitoring (CPU, memory, goroutines)
  • Performance profiling and bottleneck detection
  • Adaptive optimization based on workload patterns
  • Comprehensive metrics collection and reporting
  • Alert system for performance degradation
Optimization Engine
  • Machine learning-based optimization suggestions
  • Automatic parameter tuning based on usage patterns
  • Performance regression detection
  • Workload-specific configuration recommendations

Quick Start

Basic Usage
package main

import (
    "log"
    "typosentinel/internal/database"
    "typosentinel/internal/optimization"
)

func main() {
    // Initialize database
    db, err := database.NewThreatDB("threats.db")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Create optimization manager with production settings
    optManager, err := optimization.QuickOptimizationSetup(db)
    if err != nil {
        log.Fatal(err)
    }

    // Start optimization
    if err := optManager.Start(); err != nil {
        log.Fatal(err)
    }
    defer optManager.Stop()

    // Perform optimized threat lookup
    threat, err := optManager.OptimizedThreatLookup("package-name", "npm")
    if err != nil {
        log.Printf("Lookup error: %v", err)
    }

    // Get optimization statistics
    stats := optManager.GetOptimizationStats()
    log.Printf("Cache hit ratio: %.2f%%", stats.Cache.OverallHitRatio*100)
}
Batch Processing
// Prepare batch of packages
packages := []types.Package{
    {Name: "express", Version: "4.18.0", Registry: "npm"},
    {Name: "lodash", Version: "4.17.21", Registry: "npm"},
    {Name: "react", Version: "18.2.0", Registry: "npm"},
}

// Perform batch optimized lookup
threats, err := optManager.BatchOptimizedThreatLookup(packages)
if err != nil {
    log.Printf("Batch lookup error: %v", err)
}

log.Printf("Checked %d packages, found %d threats", len(packages), len(threats))
Custom Configuration
// Create custom configuration
config := &optimization.PerformanceConfig{
    Database: optimization.DatabaseConfig{
        QueryCacheSize:    1000,
        BatchSize:         100,
        ConnectionTimeout: 30 * time.Second,
        QueryTimeout:      10 * time.Second,
        MaxConnections:    20,
        EnableQueryCache:  true,
        EnableBatching:    true,
    },
    Cache: optimization.CacheConfig{
        L1: optimization.L1CacheConfig{
            Enabled:        true,
            MaxSize:        10000,
            TTL:            5 * time.Minute,
            EvictionPolicy: "lru",
        },
        L2: optimization.L2CacheConfig{
            Enabled:     true,
            MaxSizeMB:   100,
            TTL:         30 * time.Minute,
            Compression: true,
        },
        L3: optimization.L3CacheConfig{
            Enabled:   true,
            RedisURL:  "redis://localhost:6379",
            TTL:       2 * time.Hour,
            KeyPrefix: "typosentinel:",
        },
    },
    // ... other configuration options
}

// Create optimization manager with custom config
optManager := &optimization.OptimizationManager{
    // Initialize with custom config
}

Configuration

Environment-Based Configuration

The system supports different configuration profiles:

  • Production: Optimized for high throughput and reliability
  • Development: Balanced performance with debugging capabilities
  • Testing: Minimal resource usage for testing environments
// Load configuration based on environment
config := optimization.ConfigFromEnvironment("production")

// Get system-optimized configuration
recommendedConfig := optimization.GetRecommendedConfig()

// Validate configuration
if err := optimization.ValidateConfig(config); err != nil {
    log.Fatal("Invalid configuration:", err)
}
Configuration Options
Database Configuration
  • QueryCacheSize: Number of queries to cache
  • BatchSize: Number of operations per batch
  • ConnectionTimeout: Database connection timeout
  • QueryTimeout: Individual query timeout
  • MaxConnections: Maximum database connections
  • EnableQueryCache: Enable/disable query caching
  • EnableBatching: Enable/disable batch processing
Cache Configuration
  • L1 Cache: In-memory cache settings
    • MaxSize: Maximum number of entries
    • TTL: Time-to-live for cache entries
    • EvictionPolicy: LRU, LFU, or FIFO
  • L2 Cache: File-based cache settings
    • MaxSizeMB: Maximum cache size in MB
    • Compression: Enable/disable compression
  • L3 Cache: Redis cache settings
    • RedisURL: Redis connection URL
    • KeyPrefix: Prefix for cache keys
Concurrency Configuration
  • MaxWorkers: Maximum number of worker goroutines
  • QueueSize: Size of work queue
  • WorkerTimeout: Timeout for individual workers
  • GracefulShutdown: Enable graceful shutdown
Monitoring Configuration
  • MetricsInterval: Frequency of metrics collection
  • AlertThresholds: Thresholds for performance alerts
  • RetentionPeriod: How long to keep metrics data

Monitoring and Metrics

Getting Statistics
stats := optManager.GetOptimizationStats()

// Database statistics
fmt.Printf("Cache hit ratio: %.2f%%\n", stats.Database.CacheHitRatio*100)
fmt.Printf("Average query time: %v\n", stats.Database.AvgQueryTime)
fmt.Printf("Batch efficiency: %.2f%%\n", stats.Database.BatchEfficiency*100)

// Cache statistics
fmt.Printf("L1 hit ratio: %.2f%%\n", stats.Cache.L1HitRatio*100)
fmt.Printf("L2 hit ratio: %.2f%%\n", stats.Cache.L2HitRatio*100)
fmt.Printf("Overall hit ratio: %.2f%%\n", stats.Cache.OverallHitRatio*100)

// Performance statistics
fmt.Printf("Throughput: %.2f ops/sec\n", stats.Performance.Throughput)
fmt.Printf("Latency: %v\n", stats.Performance.Latency)
fmt.Printf("Optimization score: %.2f\n", stats.Performance.OptimizationScore)

// Resource statistics
fmt.Printf("CPU usage: %.2f%%\n", stats.Resource.CPUUsage)
fmt.Printf("Memory usage: %d MB\n", stats.Resource.MemoryUsage/(1024*1024))
fmt.Printf("Goroutines: %d\n", stats.Resource.GoroutineCount)
Generating Reports
report := optManager.GenerateOptimizationReport()

// View recommendations
for _, rec := range report.Recommendations {
    fmt.Printf("Recommendation: %s (Priority: %s)\n", rec.Description, rec.Priority)
    fmt.Printf("Expected impact: %s\n", rec.Impact)
}

// View alerts
for _, alert := range report.Alerts {
    fmt.Printf("Alert: %s (Severity: %s)\n", alert.Message, alert.Severity)
}

// View bottlenecks
for _, bottleneck := range report.Bottlenecks {
    fmt.Printf("Bottleneck in %s: %s\n", bottleneck.Component, bottleneck.Description)
}
Health Monitoring
// Perform health check
health := optManager.OptimizationHealthCheck()
fmt.Printf("Status: %s\n", health["status"])
fmt.Printf("Cache hit ratio: %s\n", health["cache_hit_ratio"])
fmt.Printf("Memory usage: %s\n", health["memory_usage"])
fmt.Printf("Optimization level: %s\n", health["optimization_level"])

Performance Tuning

Cache Optimization
  1. L1 Cache Tuning:

    • Increase MaxSize for better hit ratios
    • Adjust TTL based on data freshness requirements
    • Choose appropriate eviction policy (LRU for temporal locality, LFU for frequency-based)
  2. L2 Cache Tuning:

    • Set MaxSizeMB based on available disk space
    • Enable compression for better space utilization
    • Adjust TTL for longer-term caching
  3. L3 Cache Tuning:

    • Configure Redis for optimal performance
    • Use appropriate KeyPrefix to avoid conflicts
    • Set TTL for distributed cache consistency
Database Optimization
  1. Query Caching:

    • Increase QueryCacheSize for frequently accessed data
    • Monitor cache hit ratios and adjust accordingly
  2. Batch Processing:

    • Optimize BatchSize based on query complexity
    • Enable batching for bulk operations
  3. Connection Management:

    • Set MaxConnections based on database capacity
    • Adjust timeouts based on network conditions
Concurrency Optimization
  1. Worker Pool Tuning:

    • Set MaxWorkers based on CPU cores and workload
    • Adjust QueueSize to handle traffic spikes
  2. Resource Management:

    • Monitor goroutine count and memory usage
    • Enable graceful shutdown for clean termination

Best Practices

Production Deployment
  1. Configuration:

    • Use environment-specific configurations
    • Validate configurations before deployment
    • Monitor configuration changes
  2. Monitoring:

    • Set up alerts for performance degradation
    • Monitor cache hit ratios and adjust cache sizes
    • Track resource usage trends
  3. Maintenance:

    • Regularly review optimization recommendations
    • Update configurations based on usage patterns
    • Perform periodic performance analysis
Development and Testing
  1. Testing:

    • Use test-specific configurations
    • Write performance benchmarks
    • Test with realistic data volumes
  2. Debugging:

    • Enable detailed logging in development
    • Use profiling tools for performance analysis
    • Monitor resource usage during development

Troubleshooting

Common Issues
  1. Low Cache Hit Ratios:

    • Check cache sizes and TTL settings
    • Verify cache warming is working
    • Review access patterns
  2. High Memory Usage:

    • Reduce cache sizes
    • Enable compression
    • Check for memory leaks
  3. Poor Performance:

    • Review optimization recommendations
    • Check for bottlenecks in the report
    • Adjust concurrency settings
  4. Database Timeouts:

    • Increase connection and query timeouts
    • Check database performance
    • Review query complexity
Debugging Tools
  1. Health Checks:

    health := optManager.OptimizationHealthCheck()
    if health["status"] != "healthy" {
        log.Printf("Optimization unhealthy: %s", health["reason"])
    }
    
  2. Performance Reports:

    report := optManager.GenerateOptimizationReport()
    for _, alert := range report.Alerts {
        log.Printf("Alert: %s", alert.Message)
    }
    
  3. Statistics Monitoring:

    stats := optManager.GetOptimizationStats()
    if stats.Performance.OptimizationScore < 0.7 {
        log.Println("Performance below threshold")
    }
    

API Reference

OptimizationManager
  • NewOptimizationManager(db, environment): Create new optimization manager
  • Start(): Start optimization processes
  • Stop(): Stop optimization processes
  • OptimizedThreatLookup(package, registry): Perform optimized threat lookup
  • BatchOptimizedThreatLookup(packages): Perform batch optimized lookups
  • GetOptimizationStats(): Get current optimization statistics
  • GenerateOptimizationReport(): Generate comprehensive optimization report
  • OptimizationHealthCheck(): Perform health check
  • GetConfiguration(): Get current configuration
  • UpdateConfiguration(config): Update configuration
  • IsRunning(): Check if optimization is running
Configuration Functions
  • ConfigFromEnvironment(env): Load configuration for environment
  • GetProductionConfig(): Get production configuration
  • GetDevelopmentConfig(): Get development configuration
  • GetTestConfig(): Get test configuration
  • GetRecommendedConfig(): Get system-optimized configuration
  • ValidateConfig(config): Validate configuration
Convenience Functions
  • QuickOptimizationSetup(db): Quick setup with production settings
  • DevelopmentOptimizationSetup(db): Setup for development
  • TestOptimizationSetup(db): Setup for testing

Examples

See examples.go for comprehensive usage examples including:

  • Basic optimization setup
  • Batch processing
  • Advanced configuration
  • Health monitoring
  • Configuration management
  • Performance benchmarking

Testing

Run the test suite:

go test ./internal/optimization/...

Run benchmarks:

go test -bench=. ./internal/optimization/...

Contributing

When contributing to the optimization system:

  1. Write comprehensive tests for new features
  2. Update documentation for configuration changes
  3. Add benchmarks for performance-critical code
  4. Follow the existing code style and patterns
  5. Ensure backward compatibility when possible

License

This optimization system is part of the Typosentinel project and follows the same license terms.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExampleAdvancedOptimization

func ExampleAdvancedOptimization()

ExampleAdvancedOptimization demonstrates advanced optimization features

func ExampleBasicOptimization

func ExampleBasicOptimization()

ExampleBasicOptimization demonstrates basic optimization setup and usage

func ExampleBatchOptimization

func ExampleBatchOptimization()

ExampleBatchOptimization demonstrates batch processing optimization

func ExampleConfigurationManagement

func ExampleConfigurationManagement()

ExampleConfigurationManagement demonstrates configuration management

func ExampleHealthMonitoring

func ExampleHealthMonitoring()

ExampleHealthMonitoring demonstrates health monitoring and alerting

func ExamplePerformanceBenchmarking

func ExamplePerformanceBenchmarking()

ExamplePerformanceBenchmarking demonstrates performance benchmarking

func ValidateConfig

func ValidateConfig(config *PerformanceConfig) error

ValidateConfig validates the optimization configuration

Types

type AnalysisConfig

type AnalysisConfig struct {
	Enabled          bool
	AnalysisInterval time.Duration
	RetentionPeriod  time.Duration
	Recommendations  bool
}

AnalysisConfig configures cache analysis

type AnalysisRule

type AnalysisRule struct {
	Name      string
	Condition func(*CacheMetrics) bool
	Action    func(*CacheManager) error
	Enabled   bool
}

AnalysisRule defines rules for cache analysis

type AppliedOptimization

type AppliedOptimization struct {
	Rule       string
	Applied    time.Time
	Impact     *OptimizationImpact
	Reverted   bool
	RevertTime time.Time
}

AppliedOptimization tracks applied optimizations

type BatchOperation

type BatchOperation struct {
	Type      string // INSERT, UPDATE, DELETE
	Table     string
	Data      interface{}
	Callback  func(error)
	Timestamp time.Time
}

BatchOperation represents a database operation to be batched

type BatchProcessor

type BatchProcessor struct {
	// contains filtered or unexported fields
}

BatchProcessor handles batch database operations for improved performance

func (*BatchProcessor) AddOperation

func (bp *BatchProcessor) AddOperation(op BatchOperation)

Batch processor methods

type Bottleneck

type Bottleneck struct {
	Type        string
	Location    string
	Description string
	Impact      string
	Severity    int
	Detected    time.Time
	Resolved    bool
}

Bottleneck represents a performance bottleneck

type CacheAnalyzer

type CacheAnalyzer struct {
	// contains filtered or unexported fields
}

CacheAnalyzer analyzes cache performance and provides insights

type CacheConfig

type CacheConfig struct {
	L1Config *L1Config
	L2Config *L2Config
	L3Config *L3Config
	Warming  *WarmingConfig
	Analysis *AnalysisConfig
}

CacheConfig contains cache configuration

func DefaultCacheConfig

func DefaultCacheConfig() *CacheConfig

DefaultCacheConfig returns default cache configuration

type CacheEntry

type CacheEntry struct {
	Key         string
	Value       interface{}
	Timestamp   time.Time
	TTL         time.Duration
	AccessCount int64
	LastAccess  time.Time
	Size        int64
	Tags        []string
	Priority    CachePriority
}

CacheEntry represents a cached item with metadata

type CacheManager

type CacheManager struct {
	// contains filtered or unexported fields
}

CacheManager provides comprehensive caching strategies

func NewCacheManager

func NewCacheManager(config *CacheConfig, db *database.ThreatDB) *CacheManager

NewCacheManager creates a new comprehensive cache manager

func (*CacheManager) Delete

func (cm *CacheManager) Delete(key string)

Delete removes a value from all cache layers

func (*CacheManager) Get

func (cm *CacheManager) Get(key string) (interface{}, bool)

Get retrieves a value from the cache hierarchy

func (*CacheManager) GetMetrics

func (cm *CacheManager) GetMetrics() *CacheMetrics

Public API methods

func (*CacheManager) GetPerformanceLog

func (cm *CacheManager) GetPerformanceLog() []*CacheOperation

func (*CacheManager) GetRecommendations

func (cm *CacheManager) GetRecommendations() []*CacheRecommendation

func (*CacheManager) InvalidateByTags

func (cm *CacheManager) InvalidateByTags(tags []string)

InvalidateByTags removes all entries with specified tags

func (*CacheManager) Set

func (cm *CacheManager) Set(key string, value interface{}, ttl time.Duration, priority CachePriority)

Set stores a value in the cache hierarchy

func (*CacheManager) Shutdown

func (cm *CacheManager) Shutdown() error

Shutdown gracefully shuts down the cache manager

type CacheMetrics

type CacheMetrics struct {
	L1Metrics *LayerMetrics
	L2Metrics *LayerMetrics
	L3Metrics *LayerMetrics
	Overall   *OverallMetrics
	// contains filtered or unexported fields
}

CacheMetrics tracks cache performance

type CacheOperation

type CacheOperation struct {
	Type      string // GET, SET, DELETE, EVICT
	Key       string
	Layer     string // L1, L2, L3
	Timestamp time.Time
	Duration  time.Duration
	Hit       bool
	Size      int64
}

CacheOperation represents a cache operation for analysis

type CachePriority

type CachePriority int

CachePriority defines cache entry priority levels

const (
	PriorityLow CachePriority = iota
	PriorityNormal
	PriorityHigh
	PriorityCritical
)

type CacheRecommendation

type CacheRecommendation struct {
	Type        string
	Description string
	Impact      string
	Action      string
	Timestamp   time.Time
}

CacheRecommendation provides optimization suggestions

type CacheStats

type CacheStats struct {
	L1HitRatio      float64 `json:"l1_hit_ratio"`
	L2HitRatio      float64 `json:"l2_hit_ratio"`
	L3HitRatio      float64 `json:"l3_hit_ratio"`
	OverallHitRatio float64 `json:"overall_hit_ratio"`
	MemoryUsage     int64   `json:"memory_usage"`
	EntryCount      int64   `json:"entry_count"`
	Evictions       int64   `json:"evictions"`
}

CacheStats contains cache performance statistics

type CacheWarmer

type CacheWarmer struct {
	// contains filtered or unexported fields
}

CacheWarmer proactively warms cache with frequently accessed data

type CachedQuery

type CachedQuery struct {
	Result    interface{}
	Timestamp time.Time
	HitCount  int64
}

CachedQuery represents a cached database query result

type ConcurrencyConfig

type ConcurrencyConfig struct {
	MaxWorkers     int
	WorkerPoolSize int
	QueueSize      int
	RateLimit      int
	BatchSize      int
	LoadBalancing  bool
	Adaptive       bool
}

ConcurrencyConfig configures concurrency optimization

func DefaultConcurrencyConfig

func DefaultConcurrencyConfig() *ConcurrencyConfig

DefaultConcurrencyConfig returns default concurrency settings

type ConcurrencyManager

type ConcurrencyManager struct {
	// contains filtered or unexported fields
}

ConcurrencyManager optimizes concurrent operations

type ConcurrencyMetrics

type ConcurrencyMetrics struct {
	ActiveWorkers   int
	QueuedTasks     int
	CompletedTasks  int64
	FailedTasks     int64
	AvgTaskDuration time.Duration
	Throughput      float64
	LastUpdated     time.Time
}

ConcurrencyMetrics tracks concurrency performance

type DatabaseOptimizer

type DatabaseOptimizer struct {
	// contains filtered or unexported fields
}

DatabaseOptimizer provides advanced database optimization features

func NewDatabaseOptimizer

func NewDatabaseOptimizer(db *database.ThreatDB, config *OptimizationConfig) *DatabaseOptimizer

NewDatabaseOptimizer creates a new database optimizer

func (*DatabaseOptimizer) BatchAddThreats

func (do *DatabaseOptimizer) BatchAddThreats(threats []*database.ThreatRecord) error

BatchAddThreats adds multiple threats efficiently using batch processing

func (*DatabaseOptimizer) GetOptimizationMetrics

func (do *DatabaseOptimizer) GetOptimizationMetrics() *OptimizationMetrics

GetOptimizationMetrics returns current optimization metrics

func (*DatabaseOptimizer) GetSlowQueries

func (do *DatabaseOptimizer) GetSlowQueries() []*SlowQuery

GetSlowQueries returns queries that exceed performance thresholds

func (*DatabaseOptimizer) OptimizedGetThreat

func (do *DatabaseOptimizer) OptimizedGetThreat(packageName, registry string) (*database.ThreatRecord, error)

OptimizedGetThreat retrieves threat with caching and optimization

func (*DatabaseOptimizer) OptimizedGetThreats

func (do *DatabaseOptimizer) OptimizedGetThreats(registry, threatType string, limit int) ([]*database.ThreatRecord, error)

OptimizedGetThreats retrieves threats with advanced filtering and caching

func (*DatabaseOptimizer) Shutdown

func (do *DatabaseOptimizer) Shutdown() error

Shutdown gracefully shuts down the optimizer

type DatabaseStats

type DatabaseStats struct {
	QueryCount       int64         `json:"query_count"`
	SlowQueries      int64         `json:"slow_queries"`
	CacheHitRatio    float64       `json:"cache_hit_ratio"`
	AvgQueryTime     time.Duration `json:"avg_query_time"`
	BatchEfficiency  float64       `json:"batch_efficiency"`
	OptimizedQueries int64         `json:"optimized_queries"`
}

DatabaseStats contains database optimization statistics

type GCStats

type GCStats struct {
	NumGC      uint32
	PauseTotal time.Duration
	LastGC     time.Time
	HeapSize   uint64
	HeapInUse  uint64
	StackInUse uint64
	NextGC     uint64
}

GCStats tracks garbage collection statistics

type IndexInfo

type IndexInfo struct {
	Name       string
	Table      string
	Columns    []string
	UsageCount int64
	CreatedAt  time.Time
	LastUsed   time.Time
	Efficiency float64
}

IndexInfo contains information about database indexes

type IndexManager

type IndexManager struct {
	// contains filtered or unexported fields
}

IndexManager optimizes database indexes based on query patterns

func (*IndexManager) RecordQueryPattern

func (im *IndexManager) RecordQueryPattern(query string)

Index manager methods

type L1Cache

type L1Cache struct {
	// contains filtered or unexported fields
}

L1Cache represents the fastest in-memory cache layer

type L1Config

type L1Config struct {
	MaxSize        int
	MaxMemory      int64
	DefaultTTL     time.Duration
	EvictionPolicy string // LRU, LFU, FIFO
}

L1Config configures in-memory cache

type L2Cache

type L2Cache struct {
	// contains filtered or unexported fields
}

L2Cache represents file-based persistent cache

type L2Config

type L2Config struct {
	CacheDir    string
	MaxSize     int64
	DefaultTTL  time.Duration
	Compression bool
	Encryption  bool
}

L2Config configures file-based cache

type L3Cache

type L3Cache struct {
	// contains filtered or unexported fields
}

L3Cache represents distributed Redis cache

type L3Config

type L3Config struct {
	Enabled    bool
	RedisURL   string
	DefaultTTL time.Duration
	MaxRetries int
	RetryDelay time.Duration
}

L3Config configures Redis cache

type LayerMetrics

type LayerMetrics struct {
	Hits        int64
	Misses      int64
	Sets        int64
	Deletes     int64
	Evictions   int64
	HitRatio    float64
	AvgLatency  time.Duration
	MemoryUsage int64
	EntryCount  int64
	LastUpdated time.Time
}

LayerMetrics tracks metrics for a specific cache layer

type LoadBalancer

type LoadBalancer struct {
	// contains filtered or unexported fields
}

LoadBalancer distributes load across multiple resources

type LoadBalancerMetrics

type LoadBalancerMetrics struct {
	RequestsDistributed int64
	ActiveResources     int
	AvgLatency          time.Duration
	LoadDistribution    map[string]float64
}

LoadBalancerMetrics tracks load balancer performance

type LoadBalancingStrategy

type LoadBalancingStrategy int

LoadBalancingStrategy defines load balancing strategies

const (
	RoundRobin LoadBalancingStrategy = iota
	WeightedRoundRobin
	LeastConnections
	LeastLatency
	ResourceBased
)

type MonitoringConfig

type MonitoringConfig struct {
	Enabled            bool
	MonitoringInterval time.Duration
	AlertThresholds    *ResourceThresholds
	MetricsRetention   time.Duration
}

MonitoringConfig configures performance monitoring

func DefaultMonitoringConfig

func DefaultMonitoringConfig() *MonitoringConfig

DefaultMonitoringConfig returns default monitoring settings

type OptimizationAlert

type OptimizationAlert struct {
	ID        string    `json:"id"`
	Type      string    `json:"type"`
	Severity  string    `json:"severity"`
	Message   string    `json:"message"`
	Value     float64   `json:"value"`
	Threshold float64   `json:"threshold"`
	Triggered time.Time `json:"triggered"`
	Resolved  bool      `json:"resolved"`
}

OptimizationAlert represents performance alerts

type OptimizationConfig

type OptimizationConfig struct {
	CacheTTL           time.Duration
	CacheMaxSize       int
	BatchSize          int
	FlushInterval      time.Duration
	SlowQueryThreshold time.Duration
	IndexOptimization  bool
	ConnectionPoolSize int
	QueryTimeout       time.Duration
}

OptimizationConfig contains configuration for database optimization

func DefaultDatabaseOptimizationConfig

func DefaultDatabaseOptimizationConfig() *OptimizationConfig

DefaultDatabaseOptimizationConfig returns default database optimization settings

type OptimizationEngine

type OptimizationEngine struct {
	// contains filtered or unexported fields
}

OptimizationEngine automatically applies performance optimizations

type OptimizationEngineConfig

type OptimizationEngineConfig struct {
	Enabled              bool
	AutoOptimize         bool
	OptimizationInterval time.Duration
	SafetyMode           bool
	RevertOnFailure      bool
}

OptimizationEngineConfig configures the optimization engine

func DefaultOptimizationEngineConfig

func DefaultOptimizationEngineConfig() *OptimizationEngineConfig

DefaultOptimizationEngineConfig returns default optimization engine settings

type OptimizationImpact

type OptimizationImpact struct {
	LatencyImprovement    time.Duration
	ThroughputImprovement float64
	MemoryReduction       int64
	CPUReduction          float64
	ErrorRateReduction    float64
}

OptimizationImpact measures the impact of an optimization

type OptimizationImprovement

type OptimizationImprovement struct {
	ID              string        `json:"id"`
	Type            string        `json:"type"`
	Description     string        `json:"description"`
	Applied         time.Time     `json:"applied"`
	LatencyGain     time.Duration `json:"latency_gain"`
	ThroughputGain  float64       `json:"throughput_gain"`
	MemoryReduction int64         `json:"memory_reduction"`
	EfficiencyGain  float64       `json:"efficiency_gain"`
}

OptimizationImprovement tracks applied optimizations

type OptimizationManager

type OptimizationManager struct {
	// contains filtered or unexported fields
}

OptimizationManager provides a unified interface for all optimization features

func DevelopmentOptimizationSetup

func DevelopmentOptimizationSetup(db *database.ThreatDB) (*OptimizationManager, error)

DevelopmentOptimizationSetup sets up optimization for development

func NewOptimizationManager

func NewOptimizationManager(db *database.ThreatDB, environment string) (*OptimizationManager, error)

NewOptimizationManager creates a new optimization manager

func QuickOptimizationSetup

func QuickOptimizationSetup(db *database.ThreatDB) (*OptimizationManager, error)

QuickOptimizationSetup sets up optimization with sensible defaults

func TestOptimizationSetup

func TestOptimizationSetup(db *database.ThreatDB) (*OptimizationManager, error)

TestOptimizationSetup sets up optimization for testing

func (*OptimizationManager) ApplyOptimizationRecommendation

func (om *OptimizationManager) ApplyOptimizationRecommendation(recommendationID string) error

ApplyOptimizationRecommendation applies a specific optimization recommendation

func (*OptimizationManager) BatchOptimizedThreatLookup

func (om *OptimizationManager) BatchOptimizedThreatLookup(packages []types.Package) ([]*database.ThreatRecord, error)

BatchOptimizedThreatLookup performs batch optimized threat lookups

func (*OptimizationManager) GenerateOptimizationReport

func (om *OptimizationManager) GenerateOptimizationReport() *OptimizationReport

GenerateOptimizationReport creates a comprehensive optimization report

func (*OptimizationManager) GetConfiguration

func (om *OptimizationManager) GetConfiguration() *PerformanceConfig

GetConfiguration returns the current optimization configuration

func (*OptimizationManager) GetOptimizationStats

func (om *OptimizationManager) GetOptimizationStats() *OptimizationStats

GetOptimizationStats returns current optimization statistics

func (*OptimizationManager) IsRunning

func (om *OptimizationManager) IsRunning() bool

IsRunning returns whether the optimization manager is currently running

func (*OptimizationManager) OptimizationHealthCheck

func (om *OptimizationManager) OptimizationHealthCheck() map[string]string

OptimizationHealthCheck performs a health check on optimization components

func (*OptimizationManager) OptimizedThreatLookup

func (om *OptimizationManager) OptimizedThreatLookup(packageName, registry string) (*database.ThreatRecord, error)

OptimizedThreatLookup performs an optimized threat lookup

func (*OptimizationManager) Start

func (om *OptimizationManager) Start() error

Start begins the optimization processes

func (*OptimizationManager) Stop

func (om *OptimizationManager) Stop() error

Stop gracefully stops the optimization processes

func (*OptimizationManager) UpdateConfiguration

func (om *OptimizationManager) UpdateConfiguration(config *PerformanceConfig) error

UpdateConfiguration updates the optimization configuration

type OptimizationMetrics

type OptimizationMetrics struct {
	CacheHitRatio    float64
	AvgQueryTime     time.Duration
	BatchEfficiency  float64
	IndexUtilization float64
	OptimizedQueries int64
	// contains filtered or unexported fields
}

OptimizationMetrics tracks optimization performance

type OptimizationRecommendation

type OptimizationRecommendation struct {
	ID          string    `json:"id"`
	Type        string    `json:"type"`
	Title       string    `json:"title"`
	Description string    `json:"description"`
	Priority    string    `json:"priority"`
	Impact      string    `json:"impact"`
	Complexity  string    `json:"complexity"`
	Action      string    `json:"action"`
	Created     time.Time `json:"created"`
}

OptimizationRecommendation provides specific optimization suggestions

type OptimizationReport

type OptimizationReport struct {
	Stats           *OptimizationStats            `json:"stats"`
	Recommendations []*OptimizationRecommendation `json:"recommendations"`
	Alerts          []*OptimizationAlert          `json:"alerts"`
	Bottlenecks     []*PerformanceBottleneck      `json:"bottlenecks"`
	Improvements    []*OptimizationImprovement    `json:"improvements"`
	GeneratedAt     time.Time                     `json:"generated_at"`
}

OptimizationReport provides detailed optimization analysis

type OptimizationRule

type OptimizationRule struct {
	Name        string
	Condition   func(*PerformanceMetrics) bool
	Action      func(*PerformanceOptimizer) error
	Enabled     bool
	Priority    int
	Cooldown    time.Duration
	LastApplied time.Time
}

OptimizationRule defines conditions and actions for optimization

type OptimizationStats

type OptimizationStats struct {
	Database    *DatabaseStats    `json:"database"`
	Cache       *CacheStats       `json:"cache"`
	Performance *PerformanceStats `json:"performance"`
	Resource    *ResourceStats    `json:"resource"`
	Overall     *OverallStats     `json:"overall"`
	Timestamp   time.Time         `json:"timestamp"`
}

OptimizationStats provides comprehensive optimization statistics

type OptimizationSuggestion

type OptimizationSuggestion struct {
	Type         string
	Description  string
	ExpectedGain string
	Complexity   string
	Priority     int
	Created      time.Time
	Implemented  bool
}

OptimizationSuggestion provides performance optimization suggestions

type OverallMetrics

type OverallMetrics struct {
	TotalHits       int64
	TotalMisses     int64
	OverallHitRatio float64
	AvgLatency      time.Duration
	TotalMemory     int64
	Efficiency      float64
	LastUpdated     time.Time
}

OverallMetrics tracks overall cache performance

type OverallPerformanceMetrics

type OverallPerformanceMetrics struct {
	Latency           time.Duration
	Throughput        float64
	ErrorRate         float64
	Availability      float64
	Efficiency        float64
	OptimizationScore float64
	LastUpdated       time.Time
}

OverallPerformanceMetrics tracks overall system performance

type OverallStats

type OverallStats struct {
	EfficiencyScore   float64       `json:"efficiency_score"`
	OptimizationLevel string        `json:"optimization_level"`
	Recommendations   int           `json:"recommendations"`
	ActiveAlerts      int           `json:"active_alerts"`
	Uptime            time.Duration `json:"uptime"`
}

OverallStats contains overall optimization statistics

type PerformanceBottleneck

type PerformanceBottleneck struct {
	ID          string    `json:"id"`
	Component   string    `json:"component"`
	Description string    `json:"description"`
	Impact      string    `json:"impact"`
	Suggestion  string    `json:"suggestion"`
	Detected    time.Time `json:"detected"`
}

PerformanceBottleneck identifies performance bottlenecks

type PerformanceConfig

type PerformanceConfig struct {
	Database     *OptimizationConfig
	Cache        *CacheConfig
	Concurrency  *ConcurrencyConfig
	Profiling    *ProfilingConfig
	Optimization *OptimizationEngineConfig
	Monitoring   *MonitoringConfig
}

PerformanceConfig contains performance optimization configuration

func ConfigFromEnvironment

func ConfigFromEnvironment(env string) *PerformanceConfig

ConfigFromEnvironment creates configuration based on environment variables

func DefaultOptimizationConfig

func DefaultOptimizationConfig() *PerformanceConfig

DefaultOptimizationConfig returns a production-ready optimization configuration

func DevelopmentOptimizationConfig

func DevelopmentOptimizationConfig() *PerformanceConfig

DevelopmentOptimizationConfig returns settings optimized for development

func GetRecommendedConfig

func GetRecommendedConfig() *PerformanceConfig

GetRecommendedConfig returns a recommended configuration based on system resources

func GetRecommendedConfiguration

func GetRecommendedConfiguration() *PerformanceConfig

GetRecommendedConfiguration returns a system-optimized configuration

func OptimizeConfigForWorkload

func OptimizeConfigForWorkload(config *PerformanceConfig, workload WorkloadProfile) *PerformanceConfig

OptimizeConfigForWorkload adjusts configuration based on expected workload

func ProductionOptimizationConfig

func ProductionOptimizationConfig() *PerformanceConfig

ProductionOptimizationConfig returns optimized settings for production

func TestOptimizationConfig

func TestOptimizationConfig() *PerformanceConfig

TestOptimizationConfig returns settings optimized for testing

type PerformanceMetrics

type PerformanceMetrics struct {
	Database    *OptimizationMetrics
	Cache       *CacheMetrics
	Resource    *ResourceMetrics
	Concurrency *ConcurrencyMetrics
	Overall     *OverallPerformanceMetrics
	// contains filtered or unexported fields
}

PerformanceMetrics tracks overall performance metrics

type PerformanceOptimizer

type PerformanceOptimizer struct {
	// contains filtered or unexported fields
}

PerformanceOptimizer provides comprehensive performance optimization

func NewPerformanceOptimizer

func NewPerformanceOptimizer(config *PerformanceConfig, db *database.ThreatDB) *PerformanceOptimizer

NewPerformanceOptimizer creates a new performance optimizer

func (*PerformanceOptimizer) BatchThreatLookup

func (po *PerformanceOptimizer) BatchThreatLookup(packages []types.Package) ([]*database.ThreatRecord, error)

BatchThreatLookup performs batch threat lookups with optimized concurrency

func (*PerformanceOptimizer) GetBottlenecks

func (po *PerformanceOptimizer) GetBottlenecks() []*Bottleneck

func (*PerformanceOptimizer) GetOptimizationSuggestions

func (po *PerformanceOptimizer) GetOptimizationSuggestions() []*OptimizationSuggestion

func (*PerformanceOptimizer) GetPerformanceMetrics

func (po *PerformanceOptimizer) GetPerformanceMetrics() *PerformanceMetrics

Public API methods

func (*PerformanceOptimizer) GetResourceAlerts

func (po *PerformanceOptimizer) GetResourceAlerts() []*ResourceAlert

func (*PerformanceOptimizer) OptimizedThreatLookup

func (po *PerformanceOptimizer) OptimizedThreatLookup(packageName, registry string) (*database.ThreatRecord, error)

OptimizedThreatLookup performs optimized threat lookup with caching and batching

func (*PerformanceOptimizer) Shutdown

func (po *PerformanceOptimizer) Shutdown() error

Shutdown gracefully shuts down the performance optimizer

type PerformanceProfile

type PerformanceProfile struct {
	Name           string
	ExecutionTimes []time.Duration
	MemoryUsage    []int64
	CPUUsage       []float64
	Throughput     float64
	Latency        PerformanceStatistics
	ErrorRate      float64
	LastUpdated    time.Time
}

PerformanceProfile contains performance data for a specific operation

type PerformanceProfiler

type PerformanceProfiler struct {
	// contains filtered or unexported fields
}

PerformanceProfiler profiles application performance

type PerformanceStatistics

type PerformanceStatistics struct {
	Min    time.Duration
	Max    time.Duration
	Mean   time.Duration
	Median time.Duration
	P95    time.Duration
	P99    time.Duration
}

PerformanceStatistics contains statistical performance data

type PerformanceStats

type PerformanceStats struct {
	Throughput        float64       `json:"throughput"`
	Latency           time.Duration `json:"latency"`
	ErrorRate         float64       `json:"error_rate"`
	ConcurrentTasks   int           `json:"concurrent_tasks"`
	CompletedTasks    int64         `json:"completed_tasks"`
	OptimizationScore float64       `json:"optimization_score"`
}

PerformanceStats contains performance optimization statistics

type ProfilingConfig

type ProfilingConfig struct {
	Enabled             bool
	SamplingRate        float64
	ProfileInterval     time.Duration
	RetentionPeriod     time.Duration
	BottleneckDetection bool
}

ProfilingConfig configures performance profiling

func DefaultProfilingConfig

func DefaultProfilingConfig() *ProfilingConfig

DefaultProfilingConfig returns default profiling settings

type QueryAnalyzer

type QueryAnalyzer struct {
	// contains filtered or unexported fields
}

QueryAnalyzer analyzes query performance and suggests optimizations

func (*QueryAnalyzer) RecordQuery

func (qa *QueryAnalyzer) RecordQuery(queryType string, duration time.Duration)

Query analyzer methods

type QueryCache

type QueryCache struct {
	// contains filtered or unexported fields
}

QueryCache implements intelligent query result caching

func (*QueryCache) Get

func (qc *QueryCache) Get(key string) *CachedQuery

Query cache methods

func (*QueryCache) Set

func (qc *QueryCache) Set(key string, result interface{})

type QueryStats

type QueryStats struct {
	Query         string
	ExecutionTime time.Duration
	Count         int64
	AvgTime       time.Duration
	MaxTime       time.Duration
	MinTime       time.Duration
	LastExecuted  time.Time
}

QueryStats tracks performance statistics for database queries

type RateLimiter

type RateLimiter struct {
	// contains filtered or unexported fields
}

RateLimiter implements token bucket rate limiting

type RequestLimiter

type RequestLimiter struct {
	// contains filtered or unexported fields
}

RequestLimiter implements rate limiting and throttling

type Resource

type Resource struct {
	ID       string
	Weight   int
	Active   bool
	Load     int
	Capacity int
	Latency  time.Duration
}

Resource represents a resource that can handle requests

type ResourceAlert

type ResourceAlert struct {
	Type      string
	Message   string
	Severity  string
	Timestamp time.Time
	Value     interface{}
	Threshold interface{}
	Resolved  bool
}

ResourceAlert represents a resource usage alert

type ResourceMetrics

type ResourceMetrics struct {
	CPUUsage       float64
	MemoryUsage    int64
	GoroutineCount int
	GCMetrics      *GCStats
	LastUpdated    time.Time
}

ResourceMetrics tracks resource usage metrics

type ResourceMonitor

type ResourceMonitor struct {
	// contains filtered or unexported fields
}

ResourceMonitor tracks system resource usage

type ResourceStats

type ResourceStats struct {
	CPUUsage       float64 `json:"cpu_usage"`
	MemoryUsage    int64   `json:"memory_usage"`
	GoroutineCount int     `json:"goroutine_count"`
	GCPauses       int64   `json:"gc_pauses"`
	HeapSize       uint64  `json:"heap_size"`
}

ResourceStats contains resource usage statistics

type ResourceThresholds

type ResourceThresholds struct {
	MaxCPUUsage    float64
	MaxMemoryUsage int64
	MaxGoroutines  int
	MaxGCPause     time.Duration
	MaxHeapSize    uint64
}

ResourceThresholds defines resource usage thresholds

func DefaultResourceThresholds

func DefaultResourceThresholds() *ResourceThresholds

DefaultResourceThresholds returns default resource usage thresholds

type SamplingConfig

type SamplingConfig struct {
	Enabled         bool
	SampleRate      float64
	MaxSamples      int
	RetentionPeriod time.Duration
}

SamplingConfig configures performance sampling

type ScheduledRule

type ScheduledRule struct {
	Rule     *WarmingRule
	NextRun  time.Time
	Interval time.Duration
	Enabled  bool
}

ScheduledRule represents a scheduled cache warming rule

type SlowQuery

type SlowQuery struct {
	Query         string
	ExecutionTime time.Duration
	Timestamp     time.Time
	Optimization  string
}

SlowQuery represents a query that exceeds performance thresholds

type Task

type Task struct {
	ID       string
	Type     string
	Data     interface{}
	Callback func(TaskResult)
	Priority int
	Timeout  time.Duration
	Created  time.Time
}

Task represents a task to be executed by workers

type TaskResult

type TaskResult struct {
	TaskID    string
	Result    interface{}
	Error     error
	Duration  time.Duration
	WorkerID  int
	Completed time.Time
}

TaskResult represents the result of a task execution

type WarmingConfig

type WarmingConfig struct {
	Enabled         bool
	WarmingInterval time.Duration
	MaxConcurrency  int
	PredictiveMode  bool
}

WarmingConfig configures cache warming

type WarmingRule

type WarmingRule struct {
	Name       string
	Condition  func() bool
	DataLoader func() (interface{}, error)
	CacheKey   string
	Priority   CachePriority
	TTL        time.Duration
	Schedule   string // Cron-like schedule
	Enabled    bool
}

WarmingRule defines conditions for cache warming

type WarmingSchedule

type WarmingSchedule struct {
	// contains filtered or unexported fields
}

WarmingSchedule manages cache warming schedules

type Worker

type Worker struct {
	// contains filtered or unexported fields
}

Worker represents a worker in the pool

type WorkerMetrics

type WorkerMetrics struct {
	TasksProcessed int64
	TasksFailed    int64
	AvgProcessTime time.Duration
	LastActive     time.Time
	Utilization    float64
}

WorkerMetrics tracks individual worker performance

type WorkerPool

type WorkerPool struct {
	// contains filtered or unexported fields
}

WorkerPool manages a pool of workers for specific tasks

type WorkerPoolMetrics

type WorkerPoolMetrics struct {
	ActiveWorkers  int
	IdleWorkers    int
	QueueLength    int
	TasksProcessed int64
	TasksFailed    int64
	AvgProcessTime time.Duration
	Throughput     float64
}

WorkerPoolMetrics tracks worker pool performance

type WorkloadProfile

type WorkloadProfile struct {
	Type                string // high_throughput, low_latency, memory_constrained, cpu_intensive, io_intensive
	ExpectedRPS         int    // Expected requests per second
	ExpectedConcurrency int    // Expected concurrent operations
	MemoryBudget        int64  // Available memory budget
	CPUCores            int    // Available CPU cores
	StorageType         string // SSD, HDD, Network
}

WorkloadProfile describes the expected workload characteristics

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL