> Since there is nothing that changes in the processes over time, the fact 
that it kicks in after a few minutes makes me think it may be a garbage 
collection issue.   

Running with GODEBUG=gctrace=1 will confirm / deny this hypothesis.

On Tuesday, 7 February 2017 16:06:09 UTC+11, Jason E. Aten wrote:
>
>
> On linux/amd64 using go1.8rc3, I'm seeing one Go built process peg one cpu 
> to 100% after running for a few minutes.
>
>
> Tasks: 499 total,   1 running, 497 sleeping,   0 stopped,   1 
> zombie                                                                        
>                                                               
>
> %Cpu(s):  2.8 us,  3.5 sy,  0.0 ni, 93.7 id,  0.0 wa,  0.0 hi,  0.0 si,  
> 0.0 
> st                                                                            
>                                                
>
> KiB Mem : 12356040+total, 65169064 free,  5018704 used, 53372628 
> buff/cache                                                                    
>                                                            
>
> KiB Swap:        0 total,        0 free,        0 used. 11790566+avail 
> Mem                                                                           
>                                                      
>
>                                                                               
>                                                                               
>                                               
>
>   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ 
> COMMAND                                                                       
>                                                         
>
>   84359 jaten     20   0 1156916  52152   4632 S 100.7  0.0   9:05.82 
> vhaline -info -web -addr 
> loc+                                                                          
>                              
>
>   84486 jaten     20   0  941964  19884   4268 S   0.7  0.0   0:05.58 
> vhaline -info -addr 
> localhos+                                                                     
>                                   
>
>   84501 jaten     20   0 1020484  14712   4216 S   0.7  0.0   0:04.95 
> vhaline -info -addr localhos+   
>
>
> when I profile, I get alot fo runtime._ExternalCode. What is that and what 
> does it mean?
>
> $ go tool pprof --nodefraction=0.1 vhaline 
> ./profile.cpu.runaway.rootnode                                   
> Entering interactive mode (type "help" for 
> commands)                                                                     
>      
>
> (pprof) 
> top10                                                                         
>                                         
>
> 21.16s of 29.97s total 
> (70.60%)                                                                      
>                          
>
> Dropped 55 nodes (cum <= 
> 3s)                                                                           
>                        
>
> Showing top 10 nodes out of 16 (cum >= 
> 10.61s)                                                                       
>          
>
>       flat  flat%   sum%        cum   
> cum%                                                                          
>           
>
>     13.55s 45.21% 45.21%     13.55s 45.21%  
> runtime._ExternalCode                                                         
>     
>
>      6.23s 20.79% 66.00%      7.85s 26.19%  
> syscall.Syscall                                                               
>     
>
>      0.27s   0.9% 66.90%     16.42s 54.79%  
> github.com/glycerine/vhaline/vhaline.(*srvReader).start.func1                 
>     
>
>      0.25s  0.83% 67.73%     10.20s 34.03%  
> net.(*netFD).Read                                                             
>     
>
>      0.23s  0.77% 68.50%      3.96s 13.21%  
> net.setDeadlineImpl                                                           
>     
>
>      0.20s  0.67% 69.17%     10.96s 36.57%  
> bufio.(*Reader).Peek                                                          
>     
>
>      0.12s   0.4% 69.57%     10.76s 35.90%  
> bufio.(*Reader).fill                                                          
>     
>
>      0.11s  0.37% 69.94%     11.09s 37.00%  
> github.com/glycerine/tmframe2.(*FrameReader).NextFrame                        
>     
>
>      0.11s  0.37% 70.30%      7.96s 26.56%  
> syscall.read                                                                  
>     
>
>      0.09s   0.3% 70.60%     10.61s 35.40%  
> net.(*conn).Read                                                              
>     
>
> (pprof)  
>
> source code is here; the processes can be built from 
> https://github.com/glycerine/vhaline  at commit commit 
> ca32a98799b87627798e05bb8e6cc29d9cac7ec3 or using tag "runaway".
>
> pprof profiling was turned on; could this account for this peg?
>
> I was running three vhaline processes in a chain; the cpu peg happened to 
> the first process, but I've also seen it happen for the 2nd.
>
> they were started like this, in three separate shells
> $ vhaline -info -web -addr localhost:9000                          # 
> process 84359
> $ vhaline -info -addr localhost:9001 -parent localhost:9000 -cpu   # 
> process 84486
> $ vhaline -info -addr localhost:9002 -parent localhost:9001 -cpu   # 
> process 84501
>
> Since there is nothing that changes in the processes over time, the fact 
> that it kicks in after a few minutes makes me think it may be a garbage 
> collection issue.                                                             
>                                        
>
>
>      
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to