One more related question, this time about clojure.core.async.pool-size - I see it has been deprecated in favor of the new executor-factory hook. I also see that in parallel with this, the default threadpool for async dispatch got changed from a fixed pool to an unbounded cached one. I would like to understand the background of this and I couldn't mine this info from git or jira.
1. Why the change from fixed to cached?
2. Why was it fixed in the first place pre-1.8?
I'm curious about more detail here, since we used to set pool-size (higher than the default).
I'm noticing something similar with our services. In one case there's a setting of 64. In case of another service it's 4 (half the default). I'm also trying to find out why those settings were used but it's proving a bit difficult.
@seancorfield did you implement a custom factory or just went with the new defaults? If the latter, have you experienced any change in performance you could attribute to the change?
No custom factory, just new defaults. We also couldn't figure out the history of why we changed the pool size 🙂 As for performance changes... I'd have to go digging... I discussed some of this with Ghadi, Alex, and maybe Fogus, a while back when we first upgraded but that was "ages ago", and most of our focus has been on trying to switch to vthreads (which has not been going so well).
As I recall, we saw higher CPU, but overall better throughput. But the variance was pretty small.