Hi All,

Golang version 1.18.2

Have a kvstore implemented in golang. There is a proxy layer that 
communicates with storage that uses CGo for data access from storage 
engine. Both proxy and storage are implemented in golang. I observe that 
there are occasional spikes in the latency.  (< 0.01% of client request 
timeout due to this).

This is affecting the tail latency performance. Traces on both proxy and 
storage show that there are high latency in STW (mark setup) phase. 
Sometimes , it is higher than 100ms as highlighted in shared trace. Need 
advice to debug further and understand the potential reasons.

In my test setup, 

GCP VM: vCPu 64 , 500GB RAM

Linux, Ubuntu 16.04

Go version: 1.18.2

with high payloads request, high STW are happening often.

With low payloads, this  behavior is rare.


I do not have much experience with golang internals . Curious to learn. 
Appreciate your help.


Sharing traces for high payload tests

gc 34757 @5898.241s 1%: *11+2.0+0.20 ms* clock, 747+1.2/13/0.008+12 ms cpu, 
42->44->gc 2135135 MB,  @5898.23042s  MB goal, 10%:  MB stacks, 21+02.2 MB 
globals, +0.07964 ms clock,  P1398

gc 35136 @5898.365s 1%: *54+2.1+0.16* ms clock, 3507+0.13/13/0+10 ms cpu, 
44->45->22 MB, 48 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 32914 @5898.272s 1%: *147+2.3+0.19 *ms clock, 9465+0.27/15/0.008+12 ms 
cpu, 44->47->24 MB, 47 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 34758 @5898.411s 1%: *9.4+2.6+0.20 ms* clock, 606+0.26/11/0+12 ms cpu, 
41->43->21 MB, 43 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35137 @5898.488s 1%: 0.22+1.5+0.13 ms clock, 14+0.22/12/0.17+8.8 ms cpu, 
39->41->23 MB, 46 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35079 @5898.554s 1%: 0.11+1.4+0.18 ms clock, 7.2+0/11/0.22+11 ms cpu, 
47->48->22 MB, 48 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 34759 @5898.574s 1%: 0.19+1.6+0.084 ms clock, 12+0.27/12/0.49+5.3 ms 
cpu, 44->44->21 MB, 44 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35138 @5898.580s 1%: 0.24+1.6+0.15 ms clock, 15+0.81/12/0.36+9.6 ms cpu, 
43->44->23 MB, 47 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 32915 @5898.680s 1%: 0.12+1.7+0.099 ms clock, 8.2+0.35/12/0.093+6.3 ms 
cpu, 47->49->23 MB, 50 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35139 @5898.688s 1%: 0.30+1.6+0.21 ms clock, 19+0.15/11/0.10+14 ms cpu, 
39->41->23 MB, 47 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35080 @5898.780s 1%: 0.10+1.8+0.14 ms clock, 7.0+0.64/13/0.60+9.2 ms 
cpu, 45->46->22 MB, 46 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 34760 @5898.838s 1%: *124+1.9+0.14* ms clock, 7955+0.59/12/0+9.5 ms cpu, 
42->43->21 MB, 43 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35081 @5898.894pacer: s 125%: 69% CPU (+252.2 exp.) for +0.1415557280 ms 
clock, +4420571392+0.10+/32993615/ B work (0.09816468824+ B exp.) 9.4gc in  
ms cpu, 444600279332916-> B -> 46 @48641064->5898.81823 B (∆goal s  MB, 
1-45%:  MB goal, 6339921440 MB stacks, +, cons/mark 01.7+6.634698e-002+ MB 
globals, )0.4164 P ms clock, 

gc 35140 @5898.821s 1%: *141+2.6+0.25 ms* clock, 9049+0.061/14/0+16 ms cpu, 
43->46->24 MB, 46 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35082 @5899.017s 1%: 0.18+1.9+0.10 ms clock, 11+1.9/12/0.29+6.9 ms cpu, 
47->49->23 MB, 48 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 32917 @5899.058s 1%: 0.21+1.5+0.096 ms clock, 13+0.59/12/0.33+6.1 ms 
cpu, 45->46->23 MB, 47 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35141 @5899.062s 1%: 0.20+1.5+0.11 ms clock, 12+0.26/14/0.31+7.4 ms cpu, 
47->49->23 MB, 48 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35083 @5899.138s 1%: 0.14+1.3+0.048 ms clock, 9.1+0.51/11/0.22+3.0 ms 
cpu, 45->46->22 MB, 47 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 34761 @5899.160s 1%: 0.18+1.7+0.053 ms clock, 11+0.32/9.4/2.1+3.4 ms 
cpu, 42->43->21 MB, 43 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 32918 @5899.187s 1%: 0.26+1.6+0.087 ms clock, 16+0.55/11/0.19+5.6 ms 
cpu, 46->47->23 MB, 47 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35142 @5899.206s 1%: 0.21+1.3+0.063 ms clock, 13+0.80/11/0.14+4.0 ms 
cpu, 45->46->22 MB, 48 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 32919 @5899.322s 1%: 0.11+1.3+0.080 ms clock, 7.4+0.39/11/0.34+5.1 ms 
cpu, 45->46->23 MB, 47 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35143 @5899.352s 1%: 0.20+1.8+0.11 ms clock, 13+0.30/12/0.63+7.6 ms cpu, 
45->47->23 MB, 46 MB goal, 0 MB stacks, 0 MB globals, 64 P

gc 35084 @5899.368s 1%: 0.21+1.5+0.094 ms clock, 13+1.7/11/0.20+6.0 ms cpu, 
45->47->23 MB, 46 MB goal, 0 MB stacks, 0 MB globals, 64 P


Full_Trace_high_payload: 
https://raw.githubusercontent.com/NeetishPathak/GolangDebug/main/0110_proxy_gc_high_payload

Full_Trace_low_payload: 
https://raw.githubusercontent.com/NeetishPathak/GolangDebug/main/0122_proxy_gc_low_payload

I cannot share the code as it is proprietary.

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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/320d6ab0-cf35-4352-8406-c8aca665f9e8n%40googlegroups.com.

Reply via email to