Filebeat Consumes High CPU:

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