start distinct Go process per 2 (virtual) cores.#1472
start distinct Go process per 2 (virtual) cores.#1472LadyMozzarella merged 3 commits intoTechEmpower:masterfrom
Conversation
It is very similar to usage nodejs cluster package or Ruby Unicorn server, so that i think it is legitimate. It is simple version, just to benchmark, but it could be easily extended to match Ruby Unicorn or nodejs cluster functionality.
|
While I'm interested in effect of this change, I think preforking is not a usual way in Go's world. I want to see future version of Go resolve scaling issue. |
|
But "prefork" helps even with "plain text" and "json" benchmarks. So it is not tied to database/sql. If i made it as a public library, will you use it for benchmark? Perhaps, as a separate "framework". Or as external tool like https://github.com/stripe/einhorn with library as adapter for? |
|
First of all, this PR may not be merged Round 10 because Round 10 is in final phase for now. General requirements says:
So I want our code and configuration are good enough for reference. If the answer is yes, I'm OK to merge this. Split benchmark doesn't require split the code. Adding |
|
I agree with @methane |
default mode is classic one-process. preforking for special benchmarking mode go-prefork
|
I've modified code, so by default it runs in one process. If flag |
If this is good with both of you, it's good with our team. You'll need to add the new configuration to the benchmark_config, and create a new setup file like |
|
Ok, i've edit benchmark_config and add setup_prefork.sh . Hope i've done it right. |
|
@funny-falcon Yup, that looks correct to me! We will now see what travis says |
|
looks like travis doesn't mind. |
start distinct Go process per 2 (virtual) cores.
|
:( why results could not be viewed? |
|
I suppose it because it's too late for Round 10. FYI, Go 1.5 improved schedular: So performance of Go without prefork will be improved slightly. |
It is very similar to usage nodejs cluster package or Ruby Unicorn server, so i think it is legitimate.
It is simple version, just to benchmark, but it could be easily extended to match Ruby Unicorn or nodejs cluster functionality.
I think it is able to greatly improve Go performance on Peak and EC2. Even i7 benchmark can benefit from this change.