From: Pavel Butsykin <pbutsykin@virtuozzo.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com,
stefanha@redhat.com, den@openvz.org, jsnow@redhat.com,
eblake@redhat.com, famz@redhat.com
Subject: Re: [Qemu-devel] [PATCH RFC v2 00/22] I/O prefetch cache
Date: Tue, 6 Sep 2016 15:36:16 +0300 [thread overview]
Message-ID: <57CEB840.4000809@virtuozzo.com> (raw)
In-Reply-To: <20160901141718.GB6355@noname.redhat.com>
On 01.09.2016 17:17, Kevin Wolf wrote:
> Am 29.08.2016 um 19:09 hat Pavel Butsykin geschrieben:
>> The prefetch cache aims to improve the performance of sequential read data.
>> Of most interest here are the requests of a small size of data for sequential
>> read, such requests can be optimized by extending them and moving into
>> the prefetch cache.
>> [...]
>
> Before I start actually looking into your code, I read both this cover
> letter and your KVM Forum slides, and as far as I can say, the
> fundamental idea and your design look sound to me. It was a good read,
> too, so thanks for writing all the explanations!
>
Thank you!
> One thing that came to mind is that we have more caches elsewhere, most
> notably the qcow2 metadata cache, and I still have that private branch
> that adds a qcow2 data cache, too (for merging small allocating writes,
> if you remember my talk from last year). However, the existing
> Qcow2Cache has a few problems like being tied to the cluster size.
>
> So I wondered how hard you think it would be to split pcache into a
> reusable cache core that just manages the contents based on calls like
> "allocate/drop/get cached memory for bytes x...y", and the actual
> pcache code that implements the read-ahead policy. Then qcow2 could
> reuse the core and use its own policy about what metadata to cache etc.
>
I think it's a good idea, and at first glance, this seems achievable.
But if we consider more I need a little more information about the
interfaces that can use your private cache. Probably for all operations
that require increase or decrease the reference count on the object
memory will need to make interfaces which will be sufficient to
implement the read-ahead policy. But in generally, the separation of
memory resources and different policies over the cache memory seems
very correct decision.
> Of course, this can be done incrementally on top and should by no means
> block the inclusion of your code, but if it's possible, it might be an
> interesting thought to keep in mind.
>
I like the idea, so I'm ready to work on more effective solutions. For
a start, it would be nice to designate the interfaces of the cache core.
The next version I could build, based on anticipated interfaces. Also I
might suggest these interfaces in the next version of pcache, your
requirements to the interfaces might help me for this.
> Kevin
>
next prev parent reply other threads:[~2016-09-06 15:10 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-29 17:09 [Qemu-devel] [PATCH RFC v2 00/22] I/O prefetch cache Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 01/22] block/pcache: empty pcache driver filter Pavel Butsykin
2016-09-01 14:31 ` Kevin Wolf
2016-09-06 15:20 ` Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 02/22] block/pcache: add own AIOCB block Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 03/22] util/rbtree: add rbtree from linux kernel Pavel Butsykin
2016-09-01 14:37 ` Kevin Wolf
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 04/22] block/pcache: add pcache debug build Pavel Butsykin
2016-09-08 15:11 ` Eric Blake
2016-09-08 15:49 ` Pavel Butsykin
2016-09-08 16:05 ` Pavel Butsykin
2016-09-08 18:42 ` Eric Blake
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 05/22] block/pcache: add aio requests into cache Pavel Butsykin
2016-09-01 15:28 ` Kevin Wolf
2016-09-06 16:54 ` Pavel Butsykin
2016-09-06 17:07 ` Kevin Wolf
2016-09-07 16:21 ` Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 06/22] block/pcache: restrict cache size Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 07/22] block/pcache: introduce LRU as method of memory Pavel Butsykin
2016-09-02 8:49 ` Kevin Wolf
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 08/22] block/pcache: implement pickup parts of the cache Pavel Butsykin
2016-09-02 8:59 ` Kevin Wolf
2016-09-08 12:29 ` Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 09/22] block/pcache: separation AIOCB on requests Pavel Butsykin
2016-09-02 9:10 ` Kevin Wolf
2016-09-08 15:47 ` Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 10/22] block/pcache: add check node leak Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 11/22] add QEMU style defines for __sync_add_and_fetch Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 12/22] block/pcache: implement read cache to qiov and drop node during aio write Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 13/22] block/pcache: add generic request complete Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 14/22] block/pcache: add support for rescheduling requests Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 15/22] block/pcache: simple readahead one chunk forward Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 16/22] block/pcache: pcache readahead node around Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 17/22] block/pcache: skip readahead for non-sequential requests Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 18/22] block/pcache: add pcache skip large aio read Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 19/22] block/pcache: add pcache node assert Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 20/22] block/pcache: implement pcache error handling of aio cb Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 21/22] block/pcache: add write through node Pavel Butsykin
2016-08-29 17:10 ` [Qemu-devel] [PATCH RFC v2 22/22] block/pcache: drop used pcache node Pavel Butsykin
2016-09-01 14:17 ` [Qemu-devel] [PATCH RFC v2 00/22] I/O prefetch cache Kevin Wolf
2016-09-06 12:36 ` Pavel Butsykin [this message]
2016-09-01 15:26 ` Avi Kivity
2016-09-06 12:40 ` Pavel Butsykin
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=57CEB840.4000809@virtuozzo.com \
--to=pbutsykin@virtuozzo.com \
--cc=den@openvz.org \
--cc=eblake@redhat.com \
--cc=famz@redhat.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.