diff mbox series

[v10,1/9] qcow2: Options' documentation fixes

Message ID 20180921172310.10068-2-lbloch@janustech.com (mailing list archive)
State New, archived
Headers show
Series Take the image size into account when allocating the L2 cache | expand

Commit Message

Leonid Bloch Sept. 21, 2018, 5:23 p.m. UTC
Signed-off-by: Leonid Bloch <lbloch@janustech.com>
---
 docs/qcow2-cache.txt | 20 +++++++++++++-------
 qemu-options.hx      |  9 ++++++---
 2 files changed, 19 insertions(+), 10 deletions(-)

Comments

Alberto Garcia Sept. 24, 2018, 3:04 p.m. UTC | #1
On Fri 21 Sep 2018 07:23:02 PM CEST, Leonid Bloch wrote:
> Signed-off-by: Leonid Bloch <lbloch@janustech.com>
> ---
>  docs/qcow2-cache.txt | 20 +++++++++++++-------
>  qemu-options.hx      |  9 ++++++---
>  2 files changed, 19 insertions(+), 10 deletions(-)
>
> diff --git a/docs/qcow2-cache.txt b/docs/qcow2-cache.txt
> index 8a09a5cc5f..013991e21c 100644
> --- a/docs/qcow2-cache.txt
> +++ b/docs/qcow2-cache.txt
> @@ -77,7 +77,7 @@ aforementioned L2 cache, and its size can also be configured.
>  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 the allocated space.

I'm not a native English speaker, but the current version sounds correct
to me. Why do you need to add an article there? :-?

> +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
> +
> +A default refcount cache is 4 times the cluster size, which defaults to
> +256 KB (262144 bytes). This is sufficient for 8 GB of image size:

"A default ... which defaults to" sounds a bit strange I think.

> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -742,15 +742,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)

Oh, so this had been wrong all the time? Good that you saw it!

Berto
Leonid Bloch Sept. 24, 2018, 4:53 p.m. UTC | #2
On 9/24/18 6:04 PM, Alberto Garcia wrote:
> On Fri 21 Sep 2018 07:23:02 PM CEST, Leonid Bloch wrote:
>> Signed-off-by: Leonid Bloch <lbloch@janustech.com>
>> ---
>>   docs/qcow2-cache.txt | 20 +++++++++++++-------
>>   qemu-options.hx      |  9 ++++++---
>>   2 files changed, 19 insertions(+), 10 deletions(-)
>>
>> diff --git a/docs/qcow2-cache.txt b/docs/qcow2-cache.txt
>> index 8a09a5cc5f..013991e21c 100644
>> --- a/docs/qcow2-cache.txt
>> +++ b/docs/qcow2-cache.txt
>> @@ -77,7 +77,7 @@ aforementioned L2 cache, and its size can also be configured.
>>   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 the allocated space.
> 
> I'm not a native English speaker, but the current version sounds correct
> to me. Why do you need to add an article there? :-?

I'm not a native speaker as well, but "the" seems to be needed there:
- Which allocated space?
- __The__ allocated space!

But I really do not insist on this one - it's clear enough. :)

> 
>> +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
>> +
>> +A default refcount cache is 4 times the cluster size, which defaults to
>> +256 KB (262144 bytes). This is sufficient for 8 GB of image size:
> 
> "A default ... which defaults to" sounds a bit strange I think.

Indeed. I'll reword. Thanks.

Leonid.

> 
>> --- a/qemu-options.hx
>> +++ b/qemu-options.hx
>> @@ -742,15 +742,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)
> 
> Oh, so this had been wrong all the time? Good that you saw it!
> 
> Berto
>
Max Reitz Sept. 24, 2018, 7:34 p.m. UTC | #3
On 24.09.18 18:53, Leonid Bloch wrote:
> On 9/24/18 6:04 PM, Alberto Garcia wrote:
>> On Fri 21 Sep 2018 07:23:02 PM CEST, Leonid Bloch wrote:
>>> Signed-off-by: Leonid Bloch <lbloch@janustech.com>
>>> ---
>>>   docs/qcow2-cache.txt | 20 +++++++++++++-------
>>>   qemu-options.hx      |  9 ++++++---
>>>   2 files changed, 19 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/docs/qcow2-cache.txt b/docs/qcow2-cache.txt
>>> index 8a09a5cc5f..013991e21c 100644
>>> --- a/docs/qcow2-cache.txt
>>> +++ b/docs/qcow2-cache.txt
>>> @@ -77,7 +77,7 @@ aforementioned L2 cache, and its size can also be configured.
>>>   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 the allocated space.
>>
>> I'm not a native English speaker, but the current version sounds correct
>> to me. Why do you need to add an article there? :-?
> 
> I'm not a native speaker as well, but "the" seems to be needed there:
> - Which allocated space?
> - __The__ allocated space!

It doesn't seem to be needed to me, as, well, it would be wrong in German.

I tried to come up with explanations, and it's really difficult.  So
there are measures where you'd use an article (e.g. "size of the
allocated space"), but I wouldn't do that with "amount".

It's like with "amount" you have some form of infinite supply of
something ("space" in this case) and then you get some amount of it, and
then you continue to talk about that amount.

It's different with quantities like "size", "volume", etc.  There, you
already have your amount, and then you measure it.

So you can say "Some amount of space", but you cannot say "Some size of
the space".  Or you can say "The amount of space that is X", but not
"The size of space that is X".

So "size", "volume", those quantities are measuring something.  "amount"
just refers to something, not a quantity.  So if you want to use an
article, it'd have to go in front of "amount" -- and in fact, it's there
already.

I think saying "the amount of space is 1 GB" is just a shortcut like
saying "the space is 1 GB".  Using "amount of" is not measuring like
saying "size of" is.  In this case, it's just hinting at the fact that
we're rather interested in the extent rather than the entity itself.

A final note: I don't think you'd ask "Which allocated space?".  I think
it'd be "What allocated space?", which further hints towards not using
an article after "of" here.

What I do take a bit of an issue with is actually the next sentence in
this document:

> The amount of virtual disk that can be mapped by the L2 and refcount



> caches (in bytes) is:

"Amount of disk" sounds like "amount of car" or "amount of person".
Which is to say, it sounds wrong.  Those are discrete things, but
"amount" sounds like something continuous.  Measuring "virtual disk" in
bytes is like measuring "car" in kilograms.

And in fact, we are not interested in bytes of virtual disk (it's a big
difference whether we're talking about one or four disks) but in bytes
of a single virtual disk.  So the fact that we cannot get an article in
here signifies that something's wrong.

Therefore, this might be better as "The part/portion/fraction of the
virtual disk...".

Max
Leonid Bloch Sept. 24, 2018, 10:52 p.m. UTC | #4
On 9/24/18 10:34 PM, Max Reitz wrote:
> On 24.09.18 18:53, Leonid Bloch wrote:
>> On 9/24/18 6:04 PM, Alberto Garcia wrote:
>>> On Fri 21 Sep 2018 07:23:02 PM CEST, Leonid Bloch wrote:
>>>> Signed-off-by: Leonid Bloch <lbloch@janustech.com>
>>>> ---
>>>>    docs/qcow2-cache.txt | 20 +++++++++++++-------
>>>>    qemu-options.hx      |  9 ++++++---
>>>>    2 files changed, 19 insertions(+), 10 deletions(-)
>>>>
>>>> diff --git a/docs/qcow2-cache.txt b/docs/qcow2-cache.txt
>>>> index 8a09a5cc5f..013991e21c 100644
>>>> --- a/docs/qcow2-cache.txt
>>>> +++ b/docs/qcow2-cache.txt
>>>> @@ -77,7 +77,7 @@ aforementioned L2 cache, and its size can also be configured.
>>>>    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 the allocated space.
>>>
>>> I'm not a native English speaker, but the current version sounds correct
>>> to me. Why do you need to add an article there? :-?
>>
>> I'm not a native speaker as well, but "the" seems to be needed there:
>> - Which allocated space?
>> - __The__ allocated space!
> 
> It doesn't seem to be needed to me, as, well, it would be wrong in German.
> 
> I tried to come up with explanations, and it's really difficult.  So
> there are measures where you'd use an article (e.g. "size of the
> allocated space"), but I wouldn't do that with "amount".
> 
> It's like with "amount" you have some form of infinite supply of
> something ("space" in this case) and then you get some amount of it, and
> then you continue to talk about that amount.
> 
> It's different with quantities like "size", "volume", etc.  There, you
> already have your amount, and then you measure it.
> 
> So you can say "Some amount of space", but you cannot say "Some size of
> the space".  Or you can say "The amount of space that is X", but not
> "The size of space that is X".
> 
> So "size", "volume", those quantities are measuring something.  "amount"
> just refers to something, not a quantity.  So if you want to use an
> article, it'd have to go in front of "amount" -- and in fact, it's there
> already.
> 
> I think saying "the amount of space is 1 GB" is just a shortcut like
> saying "the space is 1 GB".  Using "amount of" is not measuring like
> saying "size of" is.  In this case, it's just hinting at the fact that
> we're rather interested in the extent rather than the entity itself.
> 
> A final note: I don't think you'd ask "Which allocated space?".  I think
> it'd be "What allocated space?", which further hints towards not using
> an article after "of" here.
> 
> What I do take a bit of an issue with is actually the next sentence in
> this document:
> 
>> The amount of virtual disk that can be mapped by the L2 and refcount
> 
> 
> 
>> caches (in bytes) is:
> 
> "Amount of disk" sounds like "amount of car" or "amount of person".
> Which is to say, it sounds wrong.  Those are discrete things, but
> "amount" sounds like something continuous.  Measuring "virtual disk" in
> bytes is like measuring "car" in kilograms.
> 
> And in fact, we are not interested in bytes of virtual disk (it's a big
> difference whether we're talking about one or four disks) but in bytes
> of a single virtual disk.  So the fact that we cannot get an article in
> here signifies that something's wrong.
> 
> Therefore, this might be better as "The part/portion/fraction of the
> virtual disk...".
> 
> Max
> 

Max,

Thanks for the detailed explanation! I'm still not really convinced 
about the first point, but grammar corrections are not the aim of this 
series, and it also might be correct - as you've written, so I won't 
touch it.
About the second point - you're absolutely right, I didn't notice this 
part. Including in v11.

Leonid.
diff mbox series

Patch

diff --git a/docs/qcow2-cache.txt b/docs/qcow2-cache.txt
index 8a09a5cc5f..013991e21c 100644
--- a/docs/qcow2-cache.txt
+++ b/docs/qcow2-cache.txt
@@ -77,7 +77,7 @@  aforementioned L2 cache, and its size can also be configured.
 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 the allocated space.
 
 The amount of virtual disk that can be mapped by the L2 and refcount
 caches (in bytes) is:
@@ -86,7 +86,7 @@  caches (in bytes) is:
    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,15 @@  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
+
+A default refcount cache is 4 times the cluster size, which defaults to
+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 +133,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 654ef484d9..ab1a3b240e 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -742,15 +742,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.