When zonemode=zbd is specified, fio does 'sectors with data' accounting to record the total number of sectors that have been written on a zoned block device. This accounting has two issues: 1) The current implementation counts sectors with data per job, over the IO range of the job. So for a workload with multiple jobs with overlapping IO ranges, the number of sectors with data is overestimated as written sectors common to multiple jobs are counted multiple times. 2) Counting the total number of written sectors requires taking the zone lock of all zones in a job IO range. For a multi-job workload with overlapping IO ranges, this often leads to significant zone lock contention, resulting in some jobs starting doing IOs only after other jobs have completed their work (which looks like an apparent deadlock on startup). This series addresses the issues by dropping the 'sectors with data' accounting. The accounting is used only for two features: 1) randrw first IO direction decision and 2) zone_reset_threshold ratio check. The first two patches modify these two features to not rely on the 'sectors with data' accounting. The third patch drops the 'sectors with data' accounting. The last two patches adjust test cases and an fio example script for the zone_reset_threshold. Shin'ichiro Kawasaki (5): zbd: refer file->last_start[] instead of sectors with data accounting zbd: calculate zone_reset_threshold ratio for device zbd: remove sectors with data accounting feature t/zbd: adjust test cases to zone_reset_threshold change example: adjust example to zone_reset_threshold change HOWTO.rst | 7 +- examples/zbd-rand-write-zone-reset-gc.fio | 20 ++--- examples/zbd-rand-write-zone-reset-gc.png | Bin 59186 -> 62974 bytes fio.1 | 7 +- t/zbd/test-zbd-support | 66 +++++++++++------ zbd.c | 85 +++------------------- zbd.h | 10 +-- 7 files changed, 79 insertions(+), 116 deletions(-) -- 2.38.1