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 |
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
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 >
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
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 --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.
Signed-off-by: Leonid Bloch <lbloch@janustech.com> --- docs/qcow2-cache.txt | 20 +++++++++++++------- qemu-options.hx | 9 ++++++--- 2 files changed, 19 insertions(+), 10 deletions(-)