| From a608710425e4de7446a0ca5591f00751af971b0a Mon Sep 17 00:00:00 2001 |
| From: Kevin Wolf <kwolf@redhat.com> |
| Date: Thu, 6 Dec 2018 17:12:30 +0000 |
| Subject: [PATCH 05/15] qcow2: Options' documentation fixes |
| |
| RH-Author: Kevin Wolf <kwolf@redhat.com> |
| Message-id: <20181206171240.5674-6-kwolf@redhat.com> |
| Patchwork-id: 83285 |
| O-Subject: [RHEL-8.0 qemu-kvm PATCH 05/15] qcow2: Options' documentation fixes |
| Bugzilla: 1656507 |
| RH-Acked-by: Max Reitz <mreitz@redhat.com> |
| RH-Acked-by: John Snow <jsnow@redhat.com> |
| RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com> |
| |
| From: Leonid Bloch <lbloch@janustech.com> |
| |
| Signed-off-by: Leonid Bloch <lbloch@janustech.com> |
| Reviewed-by: Alberto Garcia <berto@igalia.com> |
| Reviewed-by: Kevin Wolf <kwolf@redhat.com> |
| Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
| (cherry picked from commit 40fb215d483ce510e211b843352288894eb13285) |
| Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
| Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> |
| |
| docs/qcow2-cache.txt | 21 ++++++++++++++------- |
| qemu-options.hx | 9 ++++++--- |
| 2 files changed, 20 insertions(+), 10 deletions(-) |
| |
| diff --git a/docs/qcow2-cache.txt b/docs/qcow2-cache.txt |
| index 8a09a5c..7e28b41 100644 |
| |
| |
| @@ -79,14 +79,14 @@ Choosing the right cache sizes |
| In order to choose the cache sizes we need to know how they relate to |
| the amount of allocated space. |
| |
| -The amount of virtual disk that can be mapped by the L2 and refcount |
| +The part of the virtual disk that can be mapped by the L2 and refcount |
| caches (in bytes) is: |
| |
| disk_size = l2_cache_size * cluster_size / 8 |
| disk_size = refcount_cache_size * cluster_size * 8 / refcount_bits |
| |
| With the default values for cluster_size (64KB) and refcount_bits |
| -(16), that is |
| +(16), this becomes: |
| |
| disk_size = l2_cache_size * 8192 |
| disk_size = refcount_cache_size * 32768 |
| @@ -97,12 +97,16 @@ need: |
| l2_cache_size = disk_size_GB * 131072 |
| refcount_cache_size = disk_size_GB * 32768 |
| |
| -QEMU has a default L2 cache of 1MB (1048576 bytes) and a refcount |
| -cache of 256KB (262144 bytes), so using the formulas we've just seen |
| -we have |
| +For example, 1MB of L2 cache is needed to cover every 8 GB of the virtual |
| +image size (given that the default cluster size is used): |
| |
| - 1048576 / 131072 = 8 GB of virtual disk covered by that cache |
| - 262144 / 32768 = 8 GB |
| + 8 GB / 8192 = 1 MB |
| + |
| +The refcount cache is 4 times the cluster size by default. With the default |
| +cluster size of 64 KB, it is 256 KB (262144 bytes). This is sufficient for |
| +8 GB of image size: |
| + |
| + 262144 * 32768 = 8 GB |
| |
| |
| How to configure the cache sizes |
| @@ -130,6 +134,9 @@ There are a few things that need to be taken into account: |
| memory as possible to the L2 cache before increasing the refcount |
| cache size. |
| |
| + - At most two of "l2-cache-size", "refcount-cache-size", and "cache-size" |
| + can be set simultaneously. |
| + |
| Unlike L2 tables, refcount blocks are not used during normal I/O but |
| only during allocations and internal snapshots. In most cases they are |
| accessed sequentially (even during random guest I/O) so increasing the |
| diff --git a/qemu-options.hx b/qemu-options.hx |
| index 2e05112..5e15d6f 100644 |
| |
| |
| @@ -752,15 +752,18 @@ image file) |
| |
| @item cache-size |
| The maximum total size of the L2 table and refcount block caches in bytes |
| -(default: 1048576 bytes or 8 clusters, whichever is larger) |
| +(default: the sum of l2-cache-size and refcount-cache-size) |
| |
| @item l2-cache-size |
| The maximum size of the L2 table cache in bytes |
| -(default: 4/5 of the total cache size) |
| +(default: if cache-size is not defined - 1048576 bytes or 8 clusters, whichever |
| +is larger; otherwise, as large as possible or needed 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 |
| -(default: 1/5 of the total cache size) |
| +(default: 4 times the cluster size; or if cache-size is specified, the part of |
| +it which is not used for the L2 cache) |
| |
| @item cache-clean-interval |
| Clean unused entries in the L2 and refcount caches. The interval is in seconds. |
| -- |
| 1.8.3.1 |
| |