Yeah, its not a very well documented feature.
Go to the device properties>Modules>Ports polling options and enabled separate_walk. Some devices have separate_walk enabled by default as we know them to perform better using this method.
Wait a few polling-periods and note the difference in pollingtime, if it improves and completes polling under 300s then we probably should add this device to the list of devices with separate_walk enabled by default.
If the polling does not improve, try to filter out all unnecessary ports by going to Global Settings>Discovery and add an ignore by ifName/ifDescr/ifAlias regex.
This will make Observium to only poll the full IF-table of the device during discovery every 6 hour without an time limit to just get the interface list.
Then during polling it will use snmpgets of each port not ignored instead of trying to walk the whole table.
This will hopefully cause much less load on the snmpagent on the device and will make it possible to poll it in 5min.
/Markus