Does that mean that I should have the sockets in non-blocking more and set 
read deadlines on them? And also use the default case statement in select 
statements?

On Tuesday, June 23, 2020 at 2:20:12 PM UTC-5, Robert Engels wrote:
>
> You need to keep the routines “hot” - use polling design...
>
> On Jun 23, 2020, at 11:33 AM, Deepak Sirone <deepaks...@gmail.com 
> <javascript:>> wrote:
>
> 
> I have a benchmark (process A) which launches another process (process B) 
> and the two send messages back and forth through a couple of sockets, one 
> for sending and the other for receiving. Both the processes have two 
> go-routines for handling the sending and the receiving side. 
>
> Process A sends a message to B using the "encoding/gob" package to write 
> to the socket which is subsequently decoded. After sending a message, A 
> waits for a response from B. B does some processing on the message and 
> sends a reply back.
>
> The round trip time of getting a response time seemed to be highly 
> variable. I found that the runtime is taking up the bulk of the running 
> time. Also after receiving a message from B, the waiting go-routine takes a 
> long time to wake up, even taking 0.5x to 1x time as the actual round trip 
> time.
>
> Initially the round trip time is around 200 microseconds and it drops to 
> 20 microseconds as more messages are sent. The runtime seems to "learn" the 
> best way to minimize the running time eventually.
>
> How can I reduce the initial overhead incurred by the go runtime? Is there 
> a way to enforce or tweak the scheduling given the above scenario?
>
> Benchmark info from pprof:
>
>       flat  flat%   sum%        cum   cum%
>    93.87ms 33.56% 33.56%    98.80ms 35.33%  syscall.Syscall
>    79.91ms 28.57% 62.14%    79.91ms 28.57%  runtime.futex
>     7.15ms  2.56% 64.69%    54.69ms 19.55%  runtime.findrunnable
>     6.30ms  2.25% 66.94%     6.62ms  2.37%  runtime.runqgrab
>     3.22ms  1.15% 68.10%     3.22ms  1.15%  runtime.(*randomEnum).next
>     2.68ms  0.96% 69.05%     3.96ms  1.42%  runtime.deferreturn
>     2.32ms  0.83% 69.88%     2.38ms  0.85%  runtime.lock
>     2.30ms  0.82% 70.71%     2.30ms  0.82%  runtime.memmove
>     2.24ms   0.8% 71.51%     5.77ms  2.06%  runtime.mallocgc
>     2.21ms  0.79% 72.30%     2.22ms  0.79%  runtime.unlock
>     2.02ms  0.72% 73.02%     2.25ms   0.8%  time.now
>     2.01ms  0.72% 73.74%     8.63ms  3.09%  runtime.runqsteal
>     1.78ms  0.64% 74.37%     1.80ms  0.64%  runtime.casgstatus
>     1.63ms  0.58% 74.96%     3.38ms  1.21%  runtime.exitsyscall
>     1.60ms  0.57% 75.53%    33.05ms 11.82%  runtime.stopm
>     1.56ms  0.56% 76.09%     3.16ms  1.13%  runtime.selectgo
>     1.53ms  0.55% 76.63%    29.86ms 10.68%  runtime.notesleep
>     1.38ms  0.49% 77.13%     1.41ms   0.5%  runtime.newdefer
>     1.30ms  0.46% 77.59%     7.74ms  2.77%  fmt.(*pp).doPrintf
>     1.17ms  0.42% 78.01%     1.95ms   0.7%  runtime.mapaccess2
>     1.03ms  0.37% 78.38%    75.87ms 27.13%  runtime.schedule
>        1ms  0.36% 78.74%    53.46ms 19.11%  runtime.notewakeup
>     0.83ms   0.3% 79.03%     2.34ms  0.84%  runtime.deferproc
>     0.78ms  0.28% 79.31%     1.64ms  0.59%  runtime.chanrecv
>     0.73ms  0.26% 79.57%     4.42ms  1.58%  
> encoding/gob.(*Encoder).encodeStruct
>
> Thanks,
> Deepak Sirone
>
> -- 
> 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 golan...@googlegroups.com <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/b6c8a38d-5351-4abd-9755-b40bfafd256co%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/b6c8a38d-5351-4abd-9755-b40bfafd256co%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/854ca65b-f3c6-4881-9001-487c61dcb256o%40googlegroups.com.

Reply via email to