Hi,While examining the stack trace from a crash where the process seems to have become extremely slow, I see a lot of these goroutines:goroutine 66 [mark worker (idle)]:runtime.gopark(0x2cf6cf0, 0xc820d10000, 0x29268b0, 0x12, 0x14, 0x0)/usr/local/go/src/runtime/proc.go:185 +0x163 fp=0xc82006ff50 sp=0xc82006ff28runtime.gcBgMarkWorker(0xc820016000)/usr/local/go/src/runtime/mgc.go:1289 +0xf7 fp=0xc82006ffb8 sp=0xc82006ff50runtime.goexit()/usr/local/go/src/runtime/asm_amd64.s:1696 +0x1 fp=0xc82006ffc0 sp=0xc82006ffb8created by runtime.gcBgMarkStartWorkers/usr/local/go/src/runtime/mgc.go:1239 +0x93There are 65 such goroutines according to stack trace. Can someone help me understand what could be going on ?1. Why does go need so many routines gcBgMarkWorkers ?
2. Does it indicate that the process is thrashing memory somehow ? Does it indicate to any specific symtoms ?
3. Can it make the process super slow ?
Ø Any insight into why setting GOMAXPROCS > numCPU is a win might lead to improving the Go scheduler or perhaps Go / OS interaction.
I’ve found it useful if you happen to have a number of compute-bound goroutines which don’t reschedule. Setting more processes than CPUs causes the kernel to do some scheduling for them.
John
John Souvestre - New Orleans LA
--
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...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.