The Go runtime has several threads, for GC, scheduler, etc. > On Jun 26, 2019, at 4:48 AM, Subramanian Sridharan <clawsonfir...@gmail.com> > wrote: > > Hi guys > > Today while analyzing CPU usage of one of our processes written in go, I > noticed that there were multiple threads associated with the process which is > actually serial. (Doesn't make use of goroutines) > I wanted to know if it was the expected behaviour or some issue in our > service. > > So I tested the same with this snippet: > func main() { > for { > } > } > > > And to my surprise, even this ever running process had multiple threads > associated with it: > > ➜ go build everRunningProgram.go > ➜ ./everRunningProgram & > [1] 13745 > ➜ top -b -n 1 -H -p 13745 > top - 15:07:38 up 4:03, 1 user, load average: 0.63, 0.80, 0.72 > Threads: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie > %Cpu(s): 4.9 us, 1.1 sy, 0.3 ni, 93.2 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 > st > KiB Mem : 16301396 total, 4780820 free, 5033472 used, 6487104 buff/cache > KiB Swap: 0 total, 0 free, 0 used. 10270784 avail Mem > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 13745 mani-86+ 25 5 101856 764 584 R 99.9 0.0 0:10.38 > everRunningProg > 13746 mani-86+ 25 5 101856 764 584 S 0.0 0.0 0:00.00 > everRunningProg > 13747 mani-86+ 25 5 101856 764 584 S 0.0 0.0 0:00.00 > everRunningProg > 13748 mani-86+ 25 5 101856 764 584 S 0.0 0.0 0:00.00 > everRunningProg > 13749 mani-86+ 25 5 101856 764 584 S 0.0 0.0 0:00.00 > everRunningProg > > I tried the same with other programming languages and they didn't seem to > exhibit this behaviour. > > Rust: > fn main() { > loop {} > } > > ➜ rustc everRunningProgram.rs > ➜ ./everRunningProgram & > [2] 14265 > ➜ top -b -n 1 -H -p 14265 > top - 15:11:36 up 4:07, 1 user, load average: 1.59, 1.29, 0.95 > Threads: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie > %Cpu(s): 4.9 us, 1.1 sy, 0.5 ni, 93.0 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 > st > KiB Mem : 16301396 total, 4584980 free, 5132508 used, 6583908 buff/cache > KiB Swap: 0 total, 0 free, 0 used. 10111372 avail Mem > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 14265 mani-86+ 25 5 13156 980 868 R 99.9 0.0 0:10.22 > everRunningProg > > C: > int main() { > while(1); > } > > ➜ cc everRunningProgram.c > ➜ ./a.out & > [3] 14413 > ➜ top -b -n 1 -H -p 14413 > top - 15:14:34 up 4:10, 1 user, load average: 2.43, 1.81, 1.22 > Threads: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie > %Cpu(s): 4.8 us, 1.1 sy, 0.8 ni, 92.7 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 > st > KiB Mem : 16301396 total, 4603696 free, 5098020 used, 6599680 buff/cache > KiB Swap: 0 total, 0 free, 0 used. 10134048 avail Mem > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 14413 mani-86+ 25 5 4380 712 648 R 99.9 0.0 0:06.07 a.out > > Python: > while True: > pass > > ➜ scripts python3 everRunningProgram.py & > [4] 14587 > ➜ scripts top -b -n 1 -H -p 14587 > top - 15:16:35 up 4:12, 1 user, load average: 4.08, 2.62, 1.59 > Threads: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie > %Cpu(s): 4.8 us, 1.1 sy, 1.1 ni, 92.5 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 > st > KiB Mem : 16301396 total, 4551664 free, 5146576 used, 6603156 buff/cache > KiB Swap: 0 total, 0 free, 0 used. 10082516 avail Mem > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 14587 mani-86+ 25 5 33056 8736 5472 R 99.9 0.1 0:06.63 python3 > > > Is there any explanation for this behaviour on Go? > What's really happening behind the scenes? > > -- > 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/a15cf939-02cb-4c51-af20-f0109ffe63df%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout.
-- 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/8CEACBA6-925B-459D-8F2C-32ACAFE85DB6%40ix.netcom.com. For more options, visit https://groups.google.com/d/optout.