Hi Guys,

So, we wrote a Go service which does some heavy network IO over ZMQ (using 
cgo calls).

Now, we have to put this service on a VM in private cloud which has 56 
cores and 256GB of physical memory.

I am guessing it is mostly a dual core NUMA Intel Xeon machine with Xen 
installed on it.

We want to horizontally scale the application by launching 4 instances of 
this service in this VM.

We have tested the code for 30K+ QPS on a 16 core EC2 AMI.

There are two ways we can do it.

1. Run 4 instances of the application as it is without changing any 
defaults except configuration files and output data folders.

2. Run 4 instances of the application after modifying GOMAXPROCS.
    - GOMAXPROCS=16 ./run-my-unoptimized-app

Which of these 2 scenarios would benefits us more in terms of performance.

Does it makes sense to run all with default GOMAXPROCS value, which would 
be 56 for all the 4 instances?

Or it would be wise to follow option 2 with possibly pinning each to a 
range of 16 cores using taskset.

Would pinning help in second scenario?

Thanks,

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to