qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Alberto Garcia <berto@igalia.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, "Denis V . Lunev" <den@openvz.org>,
	qemu-block@nongnu.org, Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 31/32] qcow2: Allow configuring the L2 slice size
Date: Tue, 16 Jan 2018 17:18:25 -0600	[thread overview]
Message-ID: <6f573609-a04e-b3c5-6359-b6e08b138549@redhat.com> (raw)
In-Reply-To: <8525e16caa2fecac537aa62a449ea8626f5c7e36.1513342045.git.berto@igalia.com>

[-- Attachment #1: Type: text/plain, Size: 1903 bytes --]

On 12/15/2017 06:53 AM, Alberto Garcia wrote:
> Now that the code is ready to handle L2 slices we can finally add an
> option to allow configuring their size.
> 
> An L2 slice is the portion of an L2 table that is read by the qcow2
> cache. Until now the cache was always reading full L2 tables, and
> since the L2 table size is equal to the cluster size this was not very
> efficient with large clusters. Here's a more detailed explanation of
> why it makes sense to have smaller cache entries in order to load L2
> data:
> 
>    https://lists.gnu.org/archive/html/qemu-block/2017-09/msg00635.html
> 
> This patch introduces a new command-line option to the qcow2 driver
> named l2-cache-entry-size (cf. l2-cache-size). The cache entry size
> has the same restrictions as the cluster size: it must be a power of
> two and it has the same range of allowed values, with the additional
> requirement that it must not be larger than the cluster size.
> 
> The L2 cache entry size (L2 slice size) remains equal to the cluster
> size for now by default, so this feature must be explicitly enabled.
> Although my tests show that 4KB slices consistently improve
> performance and give the best results, let's wait and make more tests
> with different cluster sizes before deciding on an optimal default.
> 
> Signed-off-by: Alberto Garcia <berto@igalia.com>
> ---
>  block/qcow2-cache.c | 10 ++++++++--
>  block/qcow2.c       | 33 +++++++++++++++++++++++++++------
>  block/qcow2.h       |  4 +++-
>  3 files changed, 38 insertions(+), 9 deletions(-)

Is there a QMP counterpart to the command-line option?  I suspect
Kevin's work on making a QMP command for image creation will also be
impacted.

I haven't reviewed the patch closely, yet.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]

  parent reply	other threads:[~2018-01-16 23:18 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-15 12:53 [Qemu-devel] [PATCH v2 00/32] Allow configuring the qcow2 L2 cache entry size Alberto Garcia
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 01/32] qcow2: Fix documentation of get_cluster_table() Alberto Garcia
2018-01-16 20:47   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 02/32] qcow2: Add table size field to Qcow2Cache Alberto Garcia
2018-01-16 21:05   ` Eric Blake
2018-01-17 12:54     ` Alberto Garcia
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 03/32] qcow2: Remove BDS parameter from qcow2_cache_get_table_addr() Alberto Garcia
2018-01-16 21:25   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 04/32] qcow2: Remove BDS parameter from qcow2_cache_get_table_idx() Alberto Garcia
2018-01-16 21:30   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 05/32] qcow2: Remove BDS parameter from qcow2_cache_table_release() Alberto Garcia
2018-01-16 21:32   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 06/32] qcow2: Remove BDS parameter from qcow2_cache_entry_mark_dirty() Alberto Garcia
2018-01-16 21:39   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 07/32] qcow2: Remove BDS parameter from qcow2_cache_put() Alberto Garcia
2018-01-16 21:42   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 08/32] qcow2: Remove BDS parameter from qcow2_cache_destroy() Alberto Garcia
2018-01-16 21:46   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 09/32] qcow2: Remove BDS parameter from qcow2_cache_clean_unused() Alberto Garcia
2018-01-16 21:47   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 10/32] qcow2: Remove BDS parameter from qcow2_cache_discard() Alberto Garcia
2018-01-16 21:50   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 11/32] qcow2: Remove BDS parameter from qcow2_cache_is_table_offset() Alberto Garcia
2018-01-16 21:50   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 12/32] qcow2: Add offset_to_l1_index() Alberto Garcia
2018-01-16 22:03   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 13/32] qcow2: Add l2_slice_size field to BDRVQcow2State Alberto Garcia
2018-01-16 22:06   ` Eric Blake
2018-01-17 15:30     ` Alberto Garcia
2018-01-17 16:04       ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 14/32] qcow2: Add offset_to_l2_slice_index() Alberto Garcia
2018-01-16 22:10   ` Eric Blake
2018-01-17 14:55     ` Alberto Garcia
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 15/32] qcow2: Update l2_load() to support L2 slices Alberto Garcia
2018-01-16 22:14   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 16/32] qcow2: Update l2_allocate() " Alberto Garcia
2018-01-16 16:52   ` Anton Nefedov
2018-01-17 15:42     ` Alberto Garcia
2018-01-17 16:57       ` Anton Nefedov
2018-01-18 14:46         ` Alberto Garcia
2018-01-16 22:26   ` Eric Blake
2018-01-17 15:55     ` Alberto Garcia
2018-01-17 16:06       ` Eric Blake
2018-01-17 16:13         ` Alberto Garcia
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 17/32] qcow2: Update get_cluster_table() " Alberto Garcia
2018-01-16 22:31   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 18/32] qcow2: Update qcow2_get_cluster_offset() " Alberto Garcia
2018-01-16 22:42   ` Eric Blake
2018-01-19 13:28     ` Alberto Garcia
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 19/32] qcow2: Update qcow2_alloc_cluster_link_l2() " Alberto Garcia
2018-01-16 22:49   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 20/32] qcow2: Update handle_copied() " Alberto Garcia
2018-01-16 22:51   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 21/32] qcow2: Update handle_alloc() " Alberto Garcia
2018-01-16 22:52   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 22/32] qcow2: Update discard_single_l2() " Alberto Garcia
2018-01-16 22:55   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 23/32] qcow2: Update zero_single_l2() " Alberto Garcia
2018-01-16 22:58   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 24/32] qcow2: Update qcow2_update_snapshot_refcount() " Alberto Garcia
2018-01-16 23:00   ` Eric Blake
2018-01-18 15:43     ` Alberto Garcia
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 25/32] qcow2: Update expand_zero_clusters_in_l1() " Alberto Garcia
2018-01-16 16:54   ` Anton Nefedov
2018-01-16 23:09   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 26/32] qcow2: Update qcow2_truncate() " Alberto Garcia
2018-01-16 23:14   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 27/32] qcow2: Rename l2_table in qcow2_alloc_compressed_cluster_offset() Alberto Garcia
2018-01-17 16:31   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 28/32] qcow2: Rename l2_table in count_contiguous_clusters() Alberto Garcia
2018-01-17 16:57   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 29/32] qcow2: Rename l2_table in count_contiguous_clusters_unallocated() Alberto Garcia
2018-01-22 20:34   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 30/32] qcow2: Rename l2_table in count_cow_clusters() Alberto Garcia
2018-01-22 20:39   ` Eric Blake
2017-12-15 12:53 ` [Qemu-devel] [PATCH v2 31/32] qcow2: Allow configuring the L2 slice size Alberto Garcia
2018-01-16 16:57   ` Anton Nefedov
2018-01-22 15:56     ` Alberto Garcia
2018-01-16 23:18   ` Eric Blake [this message]
2018-01-18 16:08     ` Alberto Garcia
2017-12-15 12:54 ` [Qemu-devel] [PATCH v2 32/32] iotests: Add test for l2-cache-entry-size Alberto Garcia
2017-12-15 13:26 ` [Qemu-devel] [PATCH v2 00/32] Allow configuring the qcow2 L2 cache entry size no-reply
2017-12-15 13:37 ` no-reply
2018-01-12 11:58 ` Alberto Garcia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6f573609-a04e-b3c5-6359-b6e08b138549@redhat.com \
    --to=eblake@redhat.com \
    --cc=berto@igalia.com \
    --cc=den@openvz.org \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).