diff options
author | Artur Paszkiewicz <artur.paszkiewicz@intel.com> | 2020-07-03 12:13:09 +0300 |
---|---|---|
committer | Song Liu <songliubraving@fb.com> | 2020-07-14 09:06:56 +0300 |
commit | 41d2d848e5c09209bdb57ff9c0ca34075e22783d (patch) | |
tree | e4c114e4a7d2c0381cd30ebc8eaf5caa118ecbb4 /drivers/md/md-bitmap.c | |
parent | 9a5a85972c073f720d81a7ebd08bfe278e6e16db (diff) | |
download | linux-41d2d848e5c09209bdb57ff9c0ca34075e22783d.tar.xz |
md: improve io stats accounting
Use generic io accounting functions to manage io stats. There was an
attempt to do this earlier in commit 18c0b223cf99 ("md: use generic io
stats accounting functions to simplify io stat accounting"), but it did
not include a call to generic_end_io_acct() and caused issues with
tracking in-flight IOs, so it was later removed in commit 74672d069b29
("md: fix md io stats accounting broken").
This patch attempts to fix this by using both disk_start_io_acct() and
disk_end_io_acct(). To make it possible, a struct md_io is allocated for
every new md bio, which includes the io start_time. A new mempool is
introduced for this purpose. We override bio->bi_end_io with our own
callback and call disk_start_io_acct() before passing the bio to
md_handle_request(). When it completes, we call disk_end_io_acct() and
the original bi_end_io callback.
This adds correct statistics about in-flight IOs and IO processing time,
interpreted e.g. in iostat as await, svctm, aqu-sz and %util.
It also fixes a situation where too many IOs where reported if a bio was
re-submitted to the mddev, because io accounting is now performed only
on newly arriving bios.
Acked-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
Diffstat (limited to 'drivers/md/md-bitmap.c')
0 files changed, 0 insertions, 0 deletions