The entry number is around 400.
Yes, the clean_inactive option works for controlling the registry size
To optimize the performance and reduce cpu usage, I moved out of the json encoding completely and use a format string output instead. But the cpu is still around 40%. The top 20 functions in the cpu profiling are from runtime. Do you have any idea of this?
(pprof) top20
Showing nodes accounting for 36680ms, 51.62% of 71060ms total
Dropped 390 nodes (cum <= 355.30ms)
Showing top 20 nodes out of 206
flat flat% sum% cum cum%
3260ms 4.59% 4.59% 3260ms 4.59% runtime.futex /usr/local/Cellar/go/1.9.2/libexec/src/runtime/sys_linux_amd64.s
2840ms 4.00% 8.58% 4680ms 6.59% runtime.runqgrab /usr/local/Cellar/go/1.9.2/libexec/src/runtime/proc.go
2690ms 3.79% 12.37% 3410ms 4.80% runtime.lock /usr/local/Cellar/go/1.9.2/libexec/src/runtime/lock_futex.go
2610ms 3.67% 16.04% 2610ms 3.67% runtime.usleep /usr/local/Cellar/go/1.9.2/libexec/src/runtime/sys_linux_amd64.s
2510ms 3.53% 19.58% 6150ms 8.65% runtime.selectgo /usr/local/Cellar/go/1.9.2/libexec/src/runtime/select.go
2450ms 3.45% 23.02% 11620ms 16.35% runtime.findrunnable /usr/local/Cellar/go/1.9.2/libexec/src/runtime/proc.go
2230ms 3.14% 26.16% 2600ms 3.66% runtime.unlock /usr/local/Cellar/go/1.9.2/libexec/src/runtime/lock_futex.go
2140ms 3.01% 29.17% 9320ms 13.12% runtime.mallocgc /usr/local/Cellar/go/1.9.2/libexec/src/runtime/malloc.go
2110ms 2.97% 32.14% 2130ms 3.00% github.com/elastic/beats/vendor/github.com/golang/snappy.encodeBlock /Users/karenyang/work/beats/src/github.com/elastic/beats/vendor/github.com/golang/snappy/encode_amd64.s
2040ms 2.87% 35.01% 2040ms 2.87% runtime.memclrNoHeapPointers /usr/local/Cellar/go/1.9.2/libexec/src/runtime/memclr_amd64.s
1970ms 2.77% 37.78% 4280ms 6.02% runtime.mapassign_faststr /usr/local/Cellar/go/1.9.2/libexec/src/runtime/hashmap_fast.go
1660ms 2.34% 40.12% 1660ms 2.34% runtime.memmove /usr/local/Cellar/go/1.9.2/libexec/src/runtime/memmove_amd64.s
1380ms 1.94% 42.06% 3250ms 4.57% runtime.scanobject /usr/local/Cellar/go/1.9.2/libexec/src/runtime/mgcmark.go
1230ms 1.73% 43.79% 1230ms 1.73% runtime.heapBitsSetType /usr/local/Cellar/go/1.9.2/libexec/src/runtime/mbitmap.go
1140ms 1.60% 45.40% 1140ms 1.60% runtime.nextFreeFast /usr/local/Cellar/go/1.9.2/libexec/src/runtime/malloc.go
960ms 1.35% 46.75% 960ms 1.35% runtime.casgstatus /usr/local/Cellar/go/1.9.2/libexec/src/runtime/proc.go
880ms 1.24% 47.99% 930ms 1.31% runtime.mapiternext /usr/local/Cellar/go/1.9.2/libexec/src/runtime/hashmap.go
880ms 1.24% 49.23% 940ms 1.32% syscall.Syscall /usr/local/Cellar/go/1.9.2/libexec/src/syscall/asm_linux_amd64.s
850ms 1.20% 50.42% 850ms 1.20% runtime.aeshashbody /usr/local/Cellar/go/1.9.2/libexec/src/runtime/asm_amd64.s
850ms 1.20% 51.62% 5590ms 7.87% runtime.runqsteal /usr/local/Cellar/go/1.9.2/libexec/src/runtime/proc.go