Conversation
| include: | ||
| - elixirbase: "1.11.4-erlang-23.3.4.9-alpine-3.16.9" | ||
| postgres: "16.2-alpine" | ||
| pool_count: "4" |
There was a problem hiding this comment.
I think this was not picked up? 🤔
There was a problem hiding this comment.
@greg-rychlewski do you know if this was meant to be picked up? Or only after we merge?
There was a problem hiding this comment.
@josevalim sorry I missed this. do you still want me to look at it?
There was a problem hiding this comment.
Please do! I tried investigating this but I could not come up with anything. It seems the whole include is ignored. :(
There was a problem hiding this comment.
Oh, I think I know what it is. I think I need a default pool_count 1. Let me give it a try.
|
The following benchmark: Goes from 20k (per process) with pool_count of 1, 30k with pool count of 4, to 48k with pool count of 8 on a machine with 10 cores. When doing a |
|
Sorry I might be mistaken because I haven't looked at partition supervisor. Are you basically starting multiple pools to reduce contention at checkout time? If this is the case, I was wondering if your tests were run by splitting up the total number of connections. For example if you would start 100 connections on 1 pool did you start 100 / num_partitions connections on each partitioned pool? The reason I ask is because normally it's better to watch the number of connections you are making to your db to avoid issues. |
|
Good call. I double checked and here are the numbers:
One may ask: should we instead aim for a high So in case of benchmarks, were all queries take roughly the same time, But the benchmarks also show the pool itself has some contention over high concurrency count. I am unsure how much it matters in practice, but it will definitely help us squeeze additional performance in benchmarks such as TechEmpower. |
|
💚 💙 💜 💛 ❤️ I will investigate CI if it continues to not run the new build post-merging. |
Benchmarks coming soon.