[go: up one dir, main page]

DoTagify very slow processing on single core

Expunge has been significantly improved since #369 (closed), now the conversion is onto:

=Z tagify --tagify-merges

but is sat churning away on a single core. Is there any performance improvement, or parallelization that could be made here?

Note my build is from 84a0deb0 but it doesn't look like there have been any changes to tagify since then.

CPL and Memory stats: image

Backtrace:

Thread 68 (Thread 0x7fa23affd700 (LWP 17247)):
#0  runtime.memmove () at /usr/lib/go-1.17/src/runtime/memmove_amd64.s:439
#1  0x0000000000415386 in runtime.typedslicecopy (typ=<optimized out>, dstPtr=0xc5800423b0, dstLen=<optimized out>, srcPtr=0xc5800423c0, srcLen=<optimized out>) at /usr/lib/go-1.17/src/runtime/mbarrier.go:285
#2  0x00000000007537fc in main.commitRemove (commitlist=..., commit=...) at /home/ubuntu/gitconvert/reposurgeon/surgeon/inner.go:3118
#3  main.(*Commit).setParents (commit=0xc031064c60, parents=...) at /home/ubuntu/gitconvert/reposurgeon/surgeon/inner.go:3137
#4  0x000000000076d389 in main.(*Repository).squash (repo=0xc0002da540, selected=..., policy=<error reading variable: access outside bounds of object referenced via synthetic pointer>, baton=0xc0002da000) at /home/ubuntu/gitconvert/reposurgeon/surgeon/inner.go:6464
#5  0x0000000000767c67 in main.(*Repository).delete (repo=0xc0002da540, policy=..., baton=0xc0002da000, selected=...) at /home/ubuntu/gitconvert/reposurgeon/surgeon/inner.go:6625
#6  main.(*Repository).tagifyEmpty (repo=0xc0002da540, selection=..., tipdeletes=false, tagifyMerges=true, canonicalize=<optimized out>, nameFunc={void (main.Commit *, string *)} 0xc19fae67e8, legendFunc={void (main.Commit *, string *)} 0xc19fae67f0, createTags=true, baton=0xc0002da000) at /home/ubuntu/gitconvert/reposurgeon/surgeon/inner.go:5707
#7  0x00000000007ab305 in main.(*Reposurgeon).DoTagify (rs=0xc0002dc000, line=..., ~r1=<optimized out>) at /home/ubuntu/gitconvert/reposurgeon/surgeon/reposurgeon.go:4598
#8  0x0000000000468749 in runtime.call32 () at /usr/lib/go-1.17/src/runtime/asm_amd64.s:626
#9  0x000000000046ca5c in runtime.reflectcall (stackArgsType=0xc5800423b0, fn=0x11a4b70, stackArgs=0xc586ae9fb0, stackArgsSize=2241090496, stackRetOffset=2241090512, frameSize=2147754928, regArgs=0xc56a00 <golang.org/x/text/encoding/simplifiedchinese.encode0+49824>) at <autogenerated>:1
#10 0x00000000004990b8 in reflect.callMethod (ctxt=0xc20f2bb400, frame=0xc19fae7060, retValid=0xc19fae6f38, regs=0xc19fae6f40) at /usr/lib/go-1.17/src/reflect/value.go:1055
#11 0x00000000004a1f0b in reflect.callMethod (ctxt=0xc20f2bb400, frame=0xc19fae7060, retValid=0xc19fae6f38, regs=0xc19fae6f40) at <autogenerated>:1
#12 0x00000000004a1e51 in reflect.methodValueCall () at /usr/lib/go-1.17/src/reflect/asm_amd64.s:80
#13 0x0000000000707957 in gitlab.com/ianbruene/kommandant.(*Kmdt).bind.func1 (ctx=..., line=...) at /home/ubuntu/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:296
#14 0x00000000007096b5 in gitlab.com/ianbruene/kommandant.(*Kmdt).OneCmd_core (k=0xc000219080, ctx=..., lineIn=..., stopOut=false) at /home/ubuntu/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:711
#15 0x00000000007918d5 in main.(*Reposurgeon).SetCore.func1 (ctx=..., line=..., stop=false) at /home/ubuntu/gitconvert/reposurgeon/surgeon/reposurgeon.go:469
#16 0x0000000000705d12 in gitlab.com/ianbruene/kommandant.(*Kmdt).OneCmd (k=0xc000219080, ctx=..., lineIn=...) at /home/ubuntu/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:251
#17 0x00000000007badab in main.(*Reposurgeon).DoScript (rs=0xc0002dc000, ctx=..., line=<error reading variable: access outside bounds of object referenced via synthetic pointer>, ~r2=<optimized out>) at /home/ubuntu/gitconvert/reposurgeon/surgeon/reposurgeon.go:7508
#18 0x00000000004687e9 in runtime.call64 () at /usr/lib/go-1.17/src/runtime/asm_amd64.s:627
#19 0x000000000046ca5c in runtime.reflectcall (stackArgsType=0xc5800423b0, fn=0x11a4b70, stackArgs=0xc586ae9fb0, stackArgsSize=2241090496, stackRetOffset=2241090512, frameSize=2147754928, regArgs=0xc56a00 <golang.org/x/text/encoding/simplifiedchinese.encode0+49824>) at <autogenerated>:1
#20 0x00000000004990b8 in reflect.callMethod (ctxt=0xc000153500, frame=0xc19fae7cd8, retValid=0xc19fae7bb0, regs=0xc19fae7bb8) at /usr/lib/go-1.17/src/reflect/value.go:1055
#21 0x00000000004a1f0b in reflect.callMethod (ctxt=0xc000153500, frame=0xc19fae7cd8, retValid=0xc19fae7bb0, regs=0xc19fae7bb8) at <autogenerated>:1
#22 0x00000000004a1e51 in reflect.methodValueCall () at /usr/lib/go-1.17/src/reflect/asm_amd64.s:80
#23 0x00000000007096b5 in gitlab.com/ianbruene/kommandant.(*Kmdt).OneCmd_core (k=0xc000219080, ctx=..., lineIn=..., stopOut=false) at /home/ubuntu/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:711
#24 0x00000000007918d5 in main.(*Reposurgeon).SetCore.func1 (ctx=..., line=..., stop=false) at /home/ubuntu/gitconvert/reposurgeon/surgeon/reposurgeon.go:469
#25 0x0000000000705d12 in gitlab.com/ianbruene/kommandant.(*Kmdt).OneCmd (k=0xc000219080, ctx=..., lineIn=...) at /home/ubuntu/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:251
#26 0x00000000007bcd72 in main.main () at /home/ubuntu/gitconvert/reposurgeon/surgeon/reposurgeon.go:7724