tigerbeetle icon indicating copy to clipboard operation
tigerbeetle copied to clipboard

IO: Async disk I/O on Windows

Open kprotty opened this issue 9 months ago • 0 comments

Enables ReadFile and WriteFile to use Overlapped IO instead of being synchronous. A "why not" idea given io_uring. Doesn't seem to affect performance (similar to async file IO on macos using a thread pool).

# main
1226 batches in 118.97 s
load offered = 1000000 tx/s
load accepted = 84051 tx/s
batch latency p00 = 0 ms
batch latency p10 = 20 ms
batch latency p20 = 22 ms
batch latency p30 = 23 ms
batch latency p40 = 23 ms
batch latency p50 = 24 ms
batch latency p60 = 25 ms
batch latency p70 = 26 ms
batch latency p80 = 27 ms
batch latency p90 = 29 ms
batch latency p100 = 5835 ms
transfer latency p00 = 0 ms
transfer latency p10 = 2760 ms
transfer latency p20 = 6519 ms
transfer latency p30 = 13511 ms
transfer latency p40 = 24259 ms
transfer latency p50 = 38511 ms
transfer latency p60 = 52677 ms
transfer latency p70 = 62096 ms
transfer latency p80 = 76953 ms
transfer latency p90 = 91595 ms
transfer latency p100 = 108992 ms

# this PR
1226 batches in 119.57 s
load offered = 1000000 tx/s
load accepted = 83633 tx/s
batch latency p00 = 0 ms
batch latency p10 = 20 ms
batch latency p20 = 22 ms
batch latency p30 = 23 ms
batch latency p40 = 24 ms
batch latency p50 = 25 ms
batch latency p60 = 26 ms
batch latency p70 = 28 ms
batch latency p80 = 31 ms
batch latency p90 = 38 ms
batch latency p100 = 7671 ms
transfer latency p00 = 0 ms
transfer latency p10 = 2753 ms
transfer latency p20 = 5453 ms
transfer latency p30 = 10180 ms
transfer latency p40 = 15838 ms
transfer latency p50 = 33078 ms
transfer latency p60 = 51713 ms
transfer latency p70 = 68226 ms
transfer latency p80 = 86862 ms
transfer latency p90 = 101590 ms
transfer latency p100 = 109586 ms

kprotty avatar Aug 15 '23 23:08 kprotty