[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 36/39] qcow2: Allow configuring the L2 slice
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v3 36/39] qcow2: Allow configuring the L2 slice size |
Date: |
Wed, 31 Jan 2018 13:20:26 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 |
On 01/26/2018 09:00 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.
>
> Now that the cache entry size is not necessarily equal to the cluster
> size we need to reflect that in the MIN_L2_CACHE_SIZE documentation.
> That minimum value is a requirement of the COW algorithm: we need to
> read two L2 slices (and not two L2 tables) in order to do COW, see
> l2_allocate() for the actual code.
>
> Signed-off-by: Alberto Garcia <address@hidden>
> ---
Reviewed-by: Eric Blake <address@hidden>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v3 13/39] qcow2: Add l2_slice_size field to BDRVQcow2State, (continued)
- [Qemu-devel] [PATCH v3 13/39] qcow2: Add l2_slice_size field to BDRVQcow2State, Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 09/39] qcow2: Remove BDS parameter from qcow2_cache_clean_unused(), Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 11/39] qcow2: Remove BDS parameter from qcow2_cache_is_table_offset(), Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 25/39] qcow2: Update zero_single_l2() to support L2 slices, Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 07/39] qcow2: Remove BDS parameter from qcow2_cache_put(), Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 36/39] qcow2: Allow configuring the L2 slice size, Alberto Garcia, 2018/01/26
- Re: [Qemu-devel] [PATCH v3 36/39] qcow2: Allow configuring the L2 slice size,
Eric Blake <=
- [Qemu-devel] [PATCH v3 30/39] qcow2: Update expand_zero_clusters_in_l1() to support L2 slices, Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 24/39] qcow2: Update discard_single_l2() to support L2 slices, Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 22/39] qcow2: Update handle_copied() to support L2 slices, Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 21/39] qcow2: Update qcow2_alloc_cluster_link_l2() to support L2 slices, Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 05/39] qcow2: Remove BDS parameter from qcow2_cache_table_release(), Alberto Garcia, 2018/01/26
- [Qemu-devel] [PATCH v3 14/39] qcow2: Add offset_to_l2_slice_index(), Alberto Garcia, 2018/01/26