giltene / wrk2

A constant throughput, correct latency recording variant of wrk
Apache License 2.0
4.28k stars 395 forks source link

p100 corrected > p100 uncorrected #32

Closed clansley closed 8 years ago

clansley commented 8 years ago

IIRC, a corrected histogram injects additional values between the higher observed value and the expected interval. So it makes sense that the p100 of the uncorrected histogram should be the same as the p100 in the corrected version. I've played with HDRHistogram in java and it does appear to behave as I expect, but wrk2 sometimes produces corrected p100s much higher than the uncorrected version.

Final few lines of the corrected version: 2306.047 1.000000 691130114 447392431.11 2306.047 1.000000 691130114 536870912.00 2306.047 1.000000 691130114 596523251.36 2306.047 1.000000 691130114 671088630.00 2308.095 1.000000 691130115 766958458.78 2308.095 1.000000 691130115 inf

[Mean = 1.335, StdDeviation = 4.240]

[Max = 2306.048, Total count = 691130115]

[Buckets = 27, SubBuckets = 2048]

Final few lines of the uncorrected version: 201.471 1.000000 691130114 383479229.39 201.471 1.000000 691130114 447392431.11 201.471 1.000000 691130114 536870912.00 201.471 1.000000 691130114 596523251.36 201.471 1.000000 691130114 671088630.00 203.775 1.000000 691130115 766958458.78 203.775 1.000000 691130115 inf

[Mean = 0.483, StdDeviation = 0.758]

[Max = 203.648, Total count = 691130115]

[Buckets = 27, SubBuckets = 2048]

[The command line used was: wrk -t5 -c32 -d24h -R8000 -U -sSCRIPT URL DATAFILE version string: wrk 4.0.0 [epoll] Copyright (C) 2012 Will Glozer]

clansley commented 8 years ago

Ignore me - I see it does not actually use HDR_histogram for calculating the corrected value :) But instead takes the start time as the time it should have started (on that thread) rather than the actual start time - which appears to be better than if it had used hdrhistograms recordValueWithExpectedInterval.