Commit 80668d0f authored by Leonid Bloch's avatar Leonid Bloch Committed by Kevin Wolf
Browse files

qcow2: Increase the default upper limit on the L2 cache size



The upper limit on the L2 cache size is increased from 1 MB to 32 MB
on Linux platforms, and to 8 MB on other platforms (this difference is
caused by the ability to set intervals for cache cleaning on Linux
platforms only).

This is done in order to allow default full coverage with the L2 cache
for images of up to 256 GB in size (was 8 GB). Note, that only the
needed amount to cover the full image is allocated. The value which is
changed here is just the upper limit on the L2 cache size, beyond which
it will not grow, even if the size of the image will require it to.

Signed-off-by: default avatarLeonid Bloch <lbloch@janustech.com>
Reviewed-by: default avatarAlberto Garcia <berto@igalia.com>
Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent b749562d
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -74,7 +74,11 @@
/* Must be at least 4 to cover all cases of refcount table growth */
#define MIN_REFCOUNT_CACHE_SIZE 4 /* clusters */

#define DEFAULT_L2_CACHE_MAX_SIZE S_1MiB
#ifdef CONFIG_LINUX
#define DEFAULT_L2_CACHE_MAX_SIZE S_32MiB
#else
#define DEFAULT_L2_CACHE_MAX_SIZE S_8MiB
#endif

#define DEFAULT_CLUSTER_SIZE S_64KiB

+9 −6
Original line number Diff line number Diff line
@@ -125,12 +125,15 @@ There are a few things that need to be taken into account:
 - Both caches must have a size that is a multiple of the cluster size
   (or the cache entry size: see "Using smaller cache sizes" below).

 - The maximum L2 cache size is 1 MB by default (enough for full coverage
   of 8 GB images, with the default cluster size). This value can be
   modified using the "l2-cache-size" option. QEMU will not use more memory
   than needed to hold all of the image's L2 tables, regardless of this max.
   value. The minimal L2 cache size is 2 clusters (or 2 cache entries, see
   below).
 - The maximum L2 cache size is 32 MB by default on Linux platforms (enough
   for full coverage of 256 GB images, with the default cluster size). This
   value can be modified using the "l2-cache-size" option. QEMU will not use
   more memory than needed to hold all of the image's L2 tables, regardless
   of this max. value.
   On non-Linux platforms the maximal value is smaller by default (8 MB) and
   this difference stems from the fact that on Linux the cache can be cleared
   periodically if needed, using the "cache-clean-interval" option (see below).
   The minimal L2 cache size is 2 clusters (or 2 cache entries, see below).

 - The default (and minimum) refcount cache size is 4 clusters.

+3 −3
Original line number Diff line number Diff line
@@ -736,9 +736,9 @@ The maximum total size of the L2 table and refcount block caches in bytes

@item l2-cache-size
The maximum size of the L2 table cache in bytes
(default: if cache-size is not specified - 1M; otherwise, as large as possible
within the cache-size, while permitting the requested or the minimal refcount
cache size)
(default: if cache-size is not specified - 32M on Linux platforms, and 8M on
non-Linux platforms; otherwise, as large as possible within the cache-size,
while permitting the requested or the minimal refcount cache size)

@item refcount-cache-size
The maximum size of the refcount block cache in bytes