Re: [PATCH v2] md: raid0: account for split bio in iostat accounting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Aug 16, 2023 at 11:14 AM David Jeffery <djeffery@xxxxxxxxxx> wrote:
>
> When a bio is split by md raid0, the newly created bio will not be tracked
> by md for I/O accounting. Only the portion of I/O still assigned to the
> original bio which was reduced by the split will be accounted for. This
> results in md iostat data sometimes showing I/O values far below the actual
> amount of data being sent through md.
>
> md_account_bio() needs to be called for all bio generated by the bio split.
>
> A simple example of the issue was generated using a raid0 device on partitions
> to the same device. Since all raid0 I/O then goes to one device, it makes it
> easy to see a gap between the md device and its sd storage. Reading an lvm
> device on top of the md device, the iostat output (some 0 columns and extra
> devices removed to make the data more compact) was:
>
> Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read
> md2               0.00         0.00         0.00         0.00          0
> sde               0.00         0.00         0.00         0.00          0
> md2            1364.00    411496.00         0.00         0.00     411496
> sde            1734.00    646144.00         0.00         0.00     646144
> md2            1699.00    510680.00         0.00         0.00     510680
> sde            2155.00    802784.00         0.00         0.00     802784
> md2             803.00    241480.00         0.00         0.00     241480
> sde            1016.00    377888.00         0.00         0.00     377888
> md2               0.00         0.00         0.00         0.00          0
> sde               0.00         0.00         0.00         0.00          0
>
> I/O was generated doing large direct I/O reads (12M) with dd to a linear
> lvm volume on top of the 4 leg raid0 device.
>
> The md2 reads were showing as roughly 2/3 of the reads to the sde device
> containing all of md2's raid partitions. The sum of reads to sde was
> 1826816 kB, which was the expected amount as it was the amount read by
> dd. With the patch, the total reads from md will match the reads from
> sde and be consistent with the amount of I/O generated.
>
> Fixes: 10764815ff47 ("md: add io accounting for raid0 and raid5")
> Signed-off-by: David Jeffery <djeffery@xxxxxxxxxx>
> Tested-by: Laurence Oberman <loberman@xxxxxxxxxx>
> Reviewed-by: Laurence Oberman <loberman@xxxxxxxxxx>
> Reviewed-by: Yu Kuai <yukuai3@xxxxxxxxxx>

Applied to md-next. Thanks!

Song

> ---
>
> Patch v2: ported to apply on top of md-next
>
>  drivers/md/raid0.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
> index abbd77977f98..c50a7abda744 100644
> --- a/drivers/md/raid0.c
> +++ b/drivers/md/raid0.c
> @@ -553,8 +553,7 @@ static void raid0_map_submit_bio(struct mddev *mddev, struct bio *bio)
>         sector_t bio_sector = bio->bi_iter.bi_sector;
>         sector_t sector = bio_sector;
>
> -       if (bio->bi_pool != &mddev->bio_set)
> -               md_account_bio(mddev, &bio);
> +       md_account_bio(mddev, &bio);
>
>         zone = find_zone(mddev->private, &sector);
>         switch (conf->layout) {
> --
> 2.41.0
>




[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux