Hello,
I noticed that polling and discovering at the same time causes CPU peak on some devices (ex: Juniper QFX5100 and QFX5110).
Oct 25 02:06:29 librenms-prod1 librenms-service.py[2962]: Poller_0-11(INFO):Polling device 91
Oct 25 02:06:29 librenms-prod1 librenms-service.py[2962]: Discovery_0-8(INFO):Discovering device 91
Oct 25 02:06:43 librenms-prod1 librenms-service.py[2962]: Poller_0-11(INFO):Completed poller run for 91 in 14.85s
Oct 25 02:07:09 librenms-prod1 librenms-service.py[2962]: Discovery_0-8(INFO):Completed discovery run for 91 in 40.74s
In Librenms/service.py, I suggest to wait for polling to end before proceeding with polling.
for device in devices:
device_id = device[0]
group = device[1]
if device[2]: # polling
self.dispatch_immediate_polling(device_id, group)
if device[3]: # discovery
self.dispatch_immediate_discovery(device_id, group)