On 10/3/22 11:02, Sagi Grimberg wrote:
3. Do you have some performance numbers (we're touching the fast path
here) ?
This is pretty light-weight, accounting is per-cpu and only wrapped by
preemption disable. This is a very small price to pay for what we
gain.
It does add up, though, and some environments disable stats to skip the
overhead. At a minimum, you need to add a check for
blk_queue_io_stat() before
assuming you need to account for stats.
But QUEUE_FLAG_IO_STAT is set by nvme-mpath itself?
You mean disable IO stats in runtime?
Yes, the user can disable it at any time. That actually makes things a
bit
tricky since it can be enabled at the start of an IO and disabled by
the time
it completes.
That is what blk_do_io_stat is for, we can definitely export that.
Actually, blk_do_io_stat refers to the bottom request queue. you're
right, we can do the same trick for nvme.