-
Notifications
You must be signed in to change notification settings - Fork 312
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for pool_count #636
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this was not picked up? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@josevalim sorry I missed this. do you still want me to look at it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.