@Strernd have you noticed a difference in IO after applying the memory leak fix mentioned in Possible memory leak?
I haven’t had a chance to do any profiling yet, but tuning the DHT config might help here, depending on how much of an impact network IO is on the total. Currently random walk is configured to run every minute, this is pretty aggressive. When we update the DHT in JS the random walk will get removed in favor of table refresh logic. In Go we run this no more frequently than 10 minutes. I’d consider bumping that to at least 10mins. You can also increase the timeout (maybe 60 seconds), which will allow for more peers to be discovered in the single query.