Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

codec/proto: reuse of marshal byte buffers #3167

Merged
merged 8 commits into from
Dec 20, 2019

Commits on Nov 12, 2019

  1. leakcheck: use a growing buf for stacktraces

    Adhityaa Chandrasekar committed Nov 12, 2019
    Configuration menu
    Copy the full SHA
    9e05de0 View commit details
    Browse the repository at this point in the history

Commits on Nov 15, 2019

  1. codec/proto: allow reuse of marshal byte buffers

    Performance benchmarks can be found below. Obviously, a 8 KiB
    request/response is tailored to showcase this improvement as this is
    where codec buffer reuse shines, but I've run other benchmarks too (like
    1-byte requests and responses) and there's no discernable impact on
    performance.
    
    We do not allow reuse of buffers when stat handlers or binlogs are
    turned on. This is because those two may need access to the data and
    payload even after the data has been written to the wire. In such cases,
    we never return the data back to the pool.
    
    A buffer reuse threshold of 1 KiB was determined after several
    experiments. There's diminished returns when buffer reuse is enabled for
    smaller messages (actually, a negative impact).
    
    unary-networkMode_none-bufConn_false-keepalive_false-benchTime_40s-trace_false-latency_0s-kbps_0-MTU_0-maxConcurrentCalls_6-reqSize_8192B-respSize_8192B-compressor_off-channelz_false-preloader_false
                   Title       Before        After Percentage
                TotalOps       839638       906223     7.93%
                 SendOps            0            0      NaN%
                 RecvOps            0            0      NaN%
                Bytes/op    103788.29     80592.47   -22.35%
               Allocs/op       183.33       189.30     3.27%
                 ReqT/op 1375662899.20 1484755763.20     7.93%
                RespT/op 1375662899.20 1484755763.20     7.93%
                50th-Lat    238.746µs    225.019µs    -5.75%
                90th-Lat    514.253µs    456.439µs   -11.24%
                99th-Lat    711.083µs    702.466µs    -1.21%
                 Avg-Lat     285.45µs    264.456µs    -7.35%
    Adhityaa Chandrasekar committed Nov 15, 2019
    Configuration menu
    Copy the full SHA
    10ad7f1 View commit details
    Browse the repository at this point in the history

Commits on Nov 19, 2019

  1. PATCH V2

    Adhityaa Chandrasekar committed Nov 19, 2019
    Configuration menu
    Copy the full SHA
    4b644e0 View commit details
    Browse the repository at this point in the history

Commits on Nov 20, 2019

  1. PATCH V3

    Adhityaa Chandrasekar committed Nov 20, 2019
    Configuration menu
    Copy the full SHA
    393b356 View commit details
    Browse the repository at this point in the history
  2. PATCH V4

    Adhityaa Chandrasekar committed Nov 20, 2019
    Configuration menu
    Copy the full SHA
    d550783 View commit details
    Browse the repository at this point in the history
  3. PATCH V5

    Adhityaa Chandrasekar committed Nov 20, 2019
    Configuration menu
    Copy the full SHA
    88e6298 View commit details
    Browse the repository at this point in the history

Commits on Dec 19, 2019

  1. PATCH V6

    Adhityaa Chandrasekar committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    3f387e8 View commit details
    Browse the repository at this point in the history
  2. V7: review comments

    Adhityaa Chandrasekar committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    83defe9 View commit details
    Browse the repository at this point in the history