Architecture improvements: - Add Task.Supervisor (PollerTaskSupervisor) to supervision tree for parallel operations - Parallelize device-level operations: sensors, interfaces, changes, neighbors run concurrently - Parallelize sensor polling within device using Task.async_stream (max 10 concurrent) - Parallelize interface polling using Task.async_stream (max 10 concurrent) - Parallelize interface changes checking using Task.async_stream (max 10 concurrent) Benefits: - Device with 50 sensors: ~5x faster (10 parallel vs sequential) - Device with 24 interfaces: ~2.4x faster (10 parallel vs sequential) - 4 device operations (sensors/interfaces/changes/neighbors): run concurrently - Proper supervision and timeout handling with Task.Supervisor.async_nolink - Graceful failure handling with Task.yield_many Example: Device with 50 sensors + 24 interfaces: - Before: ~74 seconds (50 + 24 sequential) - After: ~7.4 seconds (5 + 2.4 parallel + concurrent operations) |
||
|---|---|---|
| .. | ||
| mix/tasks | ||
| towerops | ||
| towerops_web | ||
| towerops.ex | ||
| towerops_web.ex | ||