Thanks a lot! You are so kind and nice :-D I tried golang's heap profile and found it is very helpful. By the way, what do you think about this article:
https://dgraph.io/blog/post/manual-memory-management-golang-jemalloc/ On Sunday, July 18, 2021 at 11:27:38 PM UTC+8 jake...@gmail.com wrote: > Two other replies have mentioned Sync.Pool. I agree that Sync.Pool is a > valuable tool. > > However, for the benefit of any beginning gophers who may read this > thread, I wanted to point out that, in a situation like yours, I would want > to try to reduce heap allocation in other ways first. Not that Sync.pool is > a last resort exactly, but it does have non-trivial overhead, and is not a > substitute for thinking about other ways to clean up heap allocations. For > example, pulling allocations out of loops, or manual object re-use where it > fits naturally into the code. > > On Friday, July 16, 2021 at 8:27:03 AM UTC-4 rmfr wrote: > >> I run it at an 8 cores 16GB machine and it occupies all cpu cores it >> could. >> >> 1. It is ~95% cpu intensive and with ~5% network communications. >> >> 2. The codebase is huge and has more than 300 thousands of lines of code >> (even didn't count the third party library yet). >> >> 3. The tool pprof tells nearly 50% percent of the time is spending on the >> runtime, something related to gc, mallocgc, memclrNoHeapPointers, and so on. >> >> 4. It has ~100 million dynamic objects. >> >> Do you guys have some good advice to optimize the performance? >> >> One idea that occurs to me is to do something like sync.Pool to buffer >> some most frequently allocated and freed objects. But the problem is I >> didn't manage to find a golang tool to find such objects. The runtime >> provides api to get the amount of objects but it didn't provide api to get >> the detailed statistics of all objects. Please correct me if I'm wrong. >> Thanks a lot :-) >> > -- 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/9708e407-60ab-4e0d-97df-e3f6b5997dd4n%40googlegroups.com.