ModulesPerformance Optimization
Performance Baseline
Before optimizing, establish a performance baseline using PI System health tags and Windows Performance Monitor.
Key Performance Indicators
| Metric | Healthy Range | Warning | Critical |
|---|---|---|---|
| Archive % Full | < 80% | 80-90% | > 90% |
| Snapshot Queue | < 1000 | 1000-5000 | > 5000 |
| Input Rate | < 80% capacity | 80-90% | > 90% |
| Archive Write Rate | < 50,000/sec | 50-100K/sec | > 100K/sec |
| CPU Usage | < 60% | 60-80% | > 80% |
| Memory Usage | < 70% | 70-85% | > 85% |
PI System Health Tags
PI System automatically creates health tags for monitoring:
System.Archive.PercentFull → Archive disk usage
System.Snapshot.QueueLength → Pending snapshot events
System.Archive.WriteRate → Events written per second
System.Archive.ReadRate → Events read per second
System.Network.BytesSent → Network throughput
System.Network.BytesReceived → Network throughputCompression Tuning
Proper compression settings are the single biggest performance lever:
Compression Deviation Best Practices
For analog process values (temperature, pressure, flow):
ExcDev = 0.1% of span (noise filter)
CompDev = 0.05% of span (storage optimization)
ExcMax = 600 seconds (force write every 10 min)
CompMax = 28800 seconds (force write every 8 hours)
For fast-changing values (vibration, power quality):
ExcDev = 0.5% of span
CompDev = 0.2% of span
ExcMax = 60 seconds
CompMax = 3600 seconds
For slowly changing values (tank levels, temperatures):
ExcDev = 0.05% of span
CompDev = 0.02% of span
ExcMax = 3600 seconds
CompMax = 86400 seconds (24 hours)Snapshot Buffer Optimization
The snapshot buffer holds current values in memory before writing to archive:
# PI Server tuning parameters (piconfig or SMT)
[PI Server]
SnapshotBufferSize = 500000 # Events in memory
SnapshotFlushInterval = 1 # Seconds between flushes
MaxArchiveWriteRate = 100000 # Events/second to archiveNetwork Configuration
PI uses TCP port 5450 by default. Optimize for industrial networks:
Recommended Network Settings:
├── Dedicated VLAN for PI traffic
├── QoS priority for PI Server traffic
├── MTU: 1500 bytes (standard Ethernet)
├── TCP buffer size: 256KB minimum
└── Firewall rules: Allow TCP 5450 bidirectionalCapacity Planning Formula
# PI System Capacity Calculator
tags = 100_000 # Number of PI tags
avg_events_per_day = 1440 # 1 event/minute average
bytes_per_event = 16 # Compressed event size
days_online = 365 # Archive retention
# Storage requirement
storage_gb = (tags * avg_events_per_day * bytes_per_event * days_online) / 1e9
print(f"Storage needed: {storage_gb:.1f} GB/year")
# Network bandwidth
events_per_second = tags * avg_events_per_day / 86400
bandwidth_mbps = (events_per_second * bytes_per_event * 8) / 1e6
print(f"Network bandwidth: {bandwidth_mbps:.2f} Mbps")