[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 0/2] block/qapi: refactor and optimize the qm
From: |
Max Reitz |
Subject: |
Re: [Qemu-devel] [PATCH v4 0/2] block/qapi: refactor and optimize the qmp_query_blockstats() |
Date: |
Wed, 1 Feb 2017 04:06:10 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 |
On 15.01.2017 09:01, Dou Liyang wrote:
> Change log v3 -> v4:
> 1. Develop these into the non-RFC patches.
> 2. Fix some comments.
> 3. do declarations first.
>
> Change log v2 -> v3:
> 1. Remove the unnecessary code for the bdrv_next_node().
> 2. Remove the change of the locking rules.
> Even if this change can improve the performance, but it may
> effect the consistency.
>
> The Qemu uses the qmp_query_blockstats() function to get the
> blockstats. As the function has been changed several times, it
> becomes more complex and longer.
>
> For the multi-disks guest, if we want to execute I/O operations
> and this function at the same time. we can use the dataplane
> feature to hold I/O performance does not drop. But, Normally
> without this feature, How to reduce the decline in performance?
>
> These patches refactor the qmp_query_blockstats() to make the
> code easier to follow, and shorter as follows:
>
> From:
>
> +--------------+ +---------------------+
> | 1 | | 4. |
> |next_query_bds| |bdrv_query_bds_stats +---+
> | | | | |
> +--------^-----+ +-------------^-------+ |
> | | |
> +---------+----------+ +--------+-------+ |
> | 0. | | 2. | |
> |qmp_query_blockstats+------>bdrv_query_stats<----
> | | | |
> +--------------------+ +--------+-------+
> |
> +-------------v-------+
> | 3. |
> |bdrv_query_blk_stats |
> | |
> +---------------------+
>
> To:
>
> +--------------+
> | |
> +--------v-----------+ |
> +---> 3. | |
> +-------------------+ | |bdrv_query_bds_stats+--+
> | 1. +--+ | |
> | + +--------------------+
> |qmp_query_blockstats--+
> | | |
> +-------------------+ | +--------------------+
> | | 2. |
> +---> |
> |bdrv_query_blk_stats|
> | |
> +--------------------+
>
>
> They also optimize the fuction by reducing its running time.
>
> 1. The function running time
>
> the time it takes(ns) in each requests:
> the disk numbers | 10 | 500
> -------------------------------------
> before these patches | 19429 | 667722
> after these patches | 18536 | 627945
>
> 2. For the performance
> used the dd command likes this to test:
> dd if=date_1.dat of=date_2.dat conv=fsync oflag=direct bs=1k count=100k.
>
> the I/O performance is degraded(%) during the monitor:
> the disk numbers | 10 | 500
> -------------------------------------
> before these patches | 1.3 | 14.2
> after these patches | 1.0 | 11.3
>
> Dou Liyang (2):
> block/qapi: reduce the coupling between the bdrv_query_stats and
> bdrv_query_bds_stats
> block/qapi: reduce the execution time of qmp_query_blockstats
>
> block/qapi.c | 95
> ++++++++++++++++++++++++++----------------------------------
> 1 file changed, 41 insertions(+), 54 deletions(-)
Thanks, dropped one of the duplicate info->value assignments in patch 2
and applied the series to my block tree:
https://github.com/XanClic/qemu/commits/block
(Assuming Markus' R-b meant that he does not intends to take it through
his tree.)
Max
signature.asc
Description: OpenPGP digital signature