From: Max Reitz <mreitz@redhat.com>
To: Alberto Garcia <berto@igalia.com>, qemu-devel@nongnu.org
Cc: Stefan Hajnoczi <stefanha@redhat.com>, qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH 5/7] qcow2: use a hash to look for entries in the L2 cache
Date: Fri, 08 May 2015 17:46:57 +0200 [thread overview]
Message-ID: <554CDA71.8060606@redhat.com> (raw)
In-Reply-To: <38be38957aff5457fd811db71706a6f645df5c7e.1430919406.git.berto@igalia.com>
On 06.05.2015 15:39, Alberto Garcia wrote:
> The current cache algorithm traverses the array starting always from
> the beginning, so the average number of comparisons needed to perform
> a lookup is proportional to the size of the array.
>
> By using a hash of the offset as the starting point, lookups are
> faster and independent from the array size.
>
> The hash is computed using the cluster number of the table, multiplied
> by 4 to make it perform better when there are collisions.
>
> In my tests, using a cache with 2048 entries, this reduces the average
> number of comparisons per lookup from 430 to 2.5.
>
> Signed-off-by: Alberto Garcia <berto@igalia.com>
> ---
> block/qcow2-cache.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
So it's a direct-mapped cache, unless the entry has been used, in which
case it becomes a fully associative cache...
Let's assume the cache is full. Now this hash algorithm (direct mapped
cache) basically becomes futile, because the LRU algorithm (fully
associative cache) takes over, and any entry (the LRU entry) is
replaced, independently of the cache. Thus, the entry will most probably
not be placed at its hashed position. So once the cache is full, I guess
this algorithm doesn't help a lot, does it?
(I'm sorry if you had this discussion before...)
Max
next prev parent reply other threads:[~2015-05-08 15:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-06 13:39 [Qemu-devel] [PATCH v2 0/7] qcow2 L2/refcount cache improvements Alberto Garcia
2015-05-06 13:39 ` [Qemu-devel] [PATCH 1/7] qcow2: use one single memory block for the L2/refcount cache tables Alberto Garcia
2015-05-07 10:14 ` Stefan Hajnoczi
2015-05-08 15:03 ` [Qemu-devel] [Qemu-block] " Max Reitz
2015-05-06 13:39 ` [Qemu-devel] [PATCH 2/7] qcow2: simplify qcow2_cache_put() and qcow2_cache_entry_mark_dirty() Alberto Garcia
2015-05-07 10:15 ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-05-08 15:12 ` Max Reitz
2015-05-06 13:39 ` [Qemu-devel] [PATCH 3/7] qcow2: use an LRU algorithm to replace entries from the L2 cache Alberto Garcia
2015-05-07 10:16 ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-05-07 14:55 ` [Qemu-devel] " Eric Blake
2015-05-07 15:01 ` Alberto Garcia
2015-05-08 15:22 ` [Qemu-devel] [Qemu-block] " Max Reitz
2015-05-06 13:39 ` [Qemu-devel] [PATCH 4/7] qcow2: remove qcow2_cache_find_entry_to_replace() Alberto Garcia
2015-05-07 10:17 ` Stefan Hajnoczi
2015-05-08 15:27 ` [Qemu-devel] [Qemu-block] " Max Reitz
2015-05-06 13:39 ` [Qemu-devel] [PATCH 5/7] qcow2: use a hash to look for entries in the L2 cache Alberto Garcia
2015-05-07 10:18 ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-05-08 15:46 ` Max Reitz [this message]
2015-05-08 16:48 ` Alberto Garcia
2015-05-06 13:39 ` [Qemu-devel] [PATCH 6/7] qcow2: make qcow2_cache_put() a void function Alberto Garcia
2015-05-07 10:20 ` Stefan Hajnoczi
2015-05-08 15:51 ` [Qemu-devel] [Qemu-block] " Max Reitz
2015-05-08 16:59 ` Alberto Garcia
2015-05-06 13:39 ` [Qemu-devel] [PATCH 7/7] qcow2: style fixes in qcow2-cache.c Alberto Garcia
2015-05-07 10:20 ` Stefan Hajnoczi
2015-05-08 15:52 ` [Qemu-devel] [Qemu-block] " Max Reitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=554CDA71.8060606@redhat.com \
--to=mreitz@redhat.com \
--cc=berto@igalia.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).