thank you。 在2021年2月2日星期二 UTC+8 下午4:17:46<axel.wa...@googlemail.com> 写道:
> On Tue, Feb 2, 2021 at 8:48 AM 颜文泽 <nnsm...@gmail.com> wrote: > >> And then this is the result, it's amazing.I think I know why my program >> is slow, the number of routines is too high > > > 13 goroutines is certainly not "too high". > > >> but I found that the GOMAXPROCS function doesn't work, it's a really >> confusing phenomenon for me. >> > My example did not do anything, my understanding of the number of runtines >> should be 1 only Ah. >> > > GOMAXPROCS specifies the maximum number of goroutines executing go code at > the same time - it does not limit the number of threads or the number of > goroutines you can start. The extra goroutines are probably both from > third-party dependencies and from the runtime itself (e.g. for the GC). > > >> [image: 2021-02-02 15-45-49 的屏幕截图.png] >> 在2021年2月2日星期二 UTC+8 下午3:27:45<Amnon> 写道: >> >>> Vtune is very useful for squeezing the ultimate performance out of Go >>> programs, once you have done >>> the usual optimisation, mimized allocations, io etc. >>> >>> pprof is more than adequate for the average programmer. But when you >>> need to super-optimise >>> functions which implement math kernels, crypto functions, video codecs >>> etc, then without a HW perfomance >>> counter based profiler such as vtune or linux perf, ( >>> https://perf.wiki.kernel.org/index.php/Main_Page) you are shooting in >>> the dark. >>> vtune not only tells you which functions are taking the most time, but >>> WHY these are taking a long time, >>> how long the code is spending waiting for cache misses, and the >>> different kind of stall cycles which >>> kill performance on a modern CPU. >>> >>> Vtune or perf is also a great tool for teaching us about processors, and >>> helping us understand what influences >>> the rate at which instructions are executed by them. >>> >>> The problem with vtune is that it is quite unfriendly and expensive (> >>> $3000 for a single floating license)! >>> It also does not work on ARM processors (such as Apple M1). >>> >>> There has been a proposal to add performance counters to pprof. >>> >>> https://go.googlesource.com/proposal/+/refs/changes/08/219508/2/design/36821-perf-counter-pprof.md >>> If accepted, this would give the power of vtune to the masses for free.. >>> >>> On Tuesday, 2 February 2021 at 06:37:37 UTC nnsm...@gmail.com wrote: >>> >>>> One more question, is it effective to use vtune to tune golang. I am >>>> afraid that vtune is not suitable, although intel claims to be effective. >>>> 在2021年2月2日星期二 UTC+8 下午2:32:40<颜文泽> 写道: >>>> >>>>> Thanks, it's not memory db, but my current test is not involving io. >>>>> I'll take time to look at your information, thanks a lot. Also I found >>>>> that >>>>> many of the functions with high cpi rate are runtime functions, is the >>>>> overhead of these functions unavoidable?The following diagram is for a >>>>> single routine: >>>>> [image: 2021-02-02 14-25-33 的屏幕截图.png] >>>>> The following chart is for the 8 routines: >>>>> [image: 2021-02-02 14-25-56 的屏幕截图.png] >>>>> 在2021年2月2日星期二 UTC+8 下午2:27:39<ren...@ix.netcom.com> 写道: >>>>> >>>>>> Unless it is an in memory database, I would expect the IO costs to >>>>>> dwarf the cpu costs, but I guess a lot depends on how you define >>>>>> ‘analytical processing’. >>>>>> >>>>>> In my experience, “out of the box” performance of Go routines in IO >>>>>> processing is outstanding. >>>>>> >>>>>> For the cpu bound case, I think with threads, cpu assignments >>>>>> (cpuset), etc. you can probably create a higher performing system in >>>>>> some >>>>>> cases - but it’s a lot of work. >>>>>> >>>>>> Even without that, I think the scheduler in most Linux systems is >>>>>> more mature than the Go scheduler, and makes better choices for cache >>>>>> affinity, etc. It’s very hard to design a high performance cpu bound >>>>>> system >>>>>> that runs on a general purpose OS or language/platform. Without >>>>>> knowledge >>>>>> of the olap db design it is very hard to make a recommendation. >>>>>> >>>>>> This is some suggested reading to help you in your journey >>>>>> https://dave.cheney.net/high-performance-go-workshop/dotgo-paris.html >>>>>> >>>>>> On Feb 2, 2021, at 12:07 AM, 颜文泽 <nnsm...@gmail.com> wrote: >>>>>> >>>>>> I don't know much about the internal implementation of golang, sorry. >>>>>> I was a c programmer and I tried to implement the original logic (olap >>>>>> database) by using routine as a thread replacement. But I found that I >>>>>> would encounter bottlenecks, and I don't know how to solve them. Maybe I >>>>>> should study the implementation of routine before I can write the right >>>>>> code. >>>>>> >>>>>> 在2021年2月2日星期二 UTC+8 下午12:21:44<ren...@ix.netcom.com> 写道: >>>>>> >>>>>>> You wrote “I found that cache misses from routines switching is also >>>>>>> a headache”. >>>>>>> >>>>>>> They would not be switching if they are cpu bound and there are less >>>>>>> of than number of cpus. Remember too that you need some % of the cpus >>>>>>> to >>>>>>> execute the runtime GC code and other housekeeping. >>>>>>> >>>>>>> > On Feb 1, 2021, at 10:04 PM, 颜文泽 <nnsm...@gmail.com> wrote: >>>>>>> > >>>>>>> > I found that cache misses from routines switching is also a >>>>>>> headache >>>>>>> >>>>>>> >>>>>> -- >>>>>> 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. >>>>>> >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/golang-nuts/35bccad0-64a9-4796-bc3f-a9cdb8c82961n%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/golang-nuts/35bccad0-64a9-4796-bc3f-a9cdb8c82961n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>>> >>>>>> -- >> 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. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/26052e54-4049-4a77-bb19-7b11cb02f7can%40googlegroups.com >> >> <https://groups.google.com/d/msgid/golang-nuts/26052e54-4049-4a77-bb19-7b11cb02f7can%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- 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/5135a96c-61bb-4ed2-9e95-c63923c2d3bcn%40googlegroups.com.