From: "Michael S. Tsirkin" <mst@redhat.com>
To: Sasha Levin <levinsasha928@gmail.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org, avi@redhat.com,
Thomas Lendacky <tahm@linux.vnet.ibm.com>
Subject: Re: [PATCH v2 2/2] virtio-ring: Allocate indirect buffers from cache when possible
Date: Tue, 23 Oct 2012 17:14:43 +0200 [thread overview]
Message-ID: <20121023151442.GA27478@redhat.com> (raw)
In-Reply-To: <5050679F.9030002@gmail.com>
On Wed, Sep 12, 2012 at 12:44:47PM +0200, Sasha Levin wrote:
> On 09/12/2012 08:13 AM, Rusty Russell wrote:
> > The real question is now whether we'd want a separate indirect cache for
> > the 3 case (so num above should be a bitmap?), or reuse the same one, or
> > not use it at all?
> >
> > Benchmarking will tell...
>
> Since there are no specific decisions about actual values, I'll just modify the
> code to use cache per-vq instead of per-device.
>
>
> Thanks,
> Sasha
One wonders whether we can still use the slab caches
and improve the locality by aligning the size.
Something like the below - this passed basic testing but
didn't measure performance yet.
virtio: align size for indirect buffers
Improve locality for indirect buffer allocations
and avoid false cache sharing by aligning
allocations to cache line size.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 2fc85f2..93e6c3a 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -119,7 +119,8 @@ static int vring_add_indirect(struct vring_virtqueue *vq,
unsigned head;
int i;
- desc = kmalloc((out + in) * sizeof(struct vring_desc), GFP_ATOMIC);
+ desc = kmalloc(L1_CACHE_ALIGN((out + in) * sizeof(struct vring_desc)),
+ GFP_ATOMIC);
if (!desc)
return vq->vring.num;
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Sasha Levin <levinsasha928@gmail.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>,
Thomas Lendacky <tahm@linux.vnet.ibm.com>,
virtualization@lists.linux-foundation.org,
linux-kernel@vger.kernel.org, avi@redhat.com,
kvm@vger.kernel.org
Subject: Re: [PATCH v2 2/2] virtio-ring: Allocate indirect buffers from cache when possible
Date: Tue, 23 Oct 2012 17:14:43 +0200 [thread overview]
Message-ID: <20121023151442.GA27478@redhat.com> (raw)
In-Reply-To: <5050679F.9030002@gmail.com>
On Wed, Sep 12, 2012 at 12:44:47PM +0200, Sasha Levin wrote:
> On 09/12/2012 08:13 AM, Rusty Russell wrote:
> > The real question is now whether we'd want a separate indirect cache for
> > the 3 case (so num above should be a bitmap?), or reuse the same one, or
> > not use it at all?
> >
> > Benchmarking will tell...
>
> Since there are no specific decisions about actual values, I'll just modify the
> code to use cache per-vq instead of per-device.
>
>
> Thanks,
> Sasha
One wonders whether we can still use the slab caches
and improve the locality by aligning the size.
Something like the below - this passed basic testing but
didn't measure performance yet.
virtio: align size for indirect buffers
Improve locality for indirect buffer allocations
and avoid false cache sharing by aligning
allocations to cache line size.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 2fc85f2..93e6c3a 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -119,7 +119,8 @@ static int vring_add_indirect(struct vring_virtqueue *vq,
unsigned head;
int i;
- desc = kmalloc((out + in) * sizeof(struct vring_desc), GFP_ATOMIC);
+ desc = kmalloc(L1_CACHE_ALIGN((out + in) * sizeof(struct vring_desc)),
+ GFP_ATOMIC);
if (!desc)
return vq->vring.num;
next prev parent reply other threads:[~2012-10-23 15:14 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-28 13:04 [PATCH v2 1/2] virtio-ring: Use threshold for switching to indirect descriptors Sasha Levin
2012-08-28 13:04 ` Sasha Levin
2012-08-28 13:04 ` [PATCH v2 2/2] virtio-ring: Allocate indirect buffers from cache when possible Sasha Levin
2012-08-28 13:04 ` Sasha Levin
2012-08-28 13:20 ` Michael S. Tsirkin
2012-08-28 13:20 ` Michael S. Tsirkin
2012-08-28 13:35 ` Sasha Levin
2012-08-28 13:35 ` Sasha Levin
2012-08-29 11:07 ` Michael S. Tsirkin
2012-08-29 11:07 ` Michael S. Tsirkin
2012-08-29 15:03 ` Sasha Levin
2012-08-29 15:03 ` Sasha Levin
2012-08-29 15:14 ` Michael S. Tsirkin
2012-08-29 15:14 ` Michael S. Tsirkin
2012-08-30 10:34 ` Sasha Levin
2012-08-30 10:34 ` Sasha Levin
2012-08-29 15:38 ` Michael S. Tsirkin
2012-08-29 15:38 ` Michael S. Tsirkin
2012-08-29 16:50 ` Sasha Levin
2012-08-29 16:50 ` Sasha Levin
2012-09-06 1:02 ` Rusty Russell
2012-09-06 1:02 ` Rusty Russell
2012-09-06 5:02 ` Michael S. Tsirkin
2012-09-06 5:02 ` Michael S. Tsirkin
2012-09-06 7:57 ` Rusty Russell
2012-09-06 8:45 ` Michael S. Tsirkin
2012-09-06 8:45 ` Michael S. Tsirkin
2012-09-06 23:49 ` Rusty Russell
2012-09-07 0:06 ` Michael S. Tsirkin
2012-09-07 0:06 ` Michael S. Tsirkin
2012-09-10 15:47 ` Thomas Lendacky
2012-09-10 16:08 ` Michael S. Tsirkin
2012-09-10 16:08 ` Michael S. Tsirkin
2012-09-12 6:13 ` Rusty Russell
2012-09-12 10:44 ` Sasha Levin
2012-09-12 10:44 ` Sasha Levin
2012-10-23 15:14 ` Michael S. Tsirkin [this message]
2012-10-23 15:14 ` Michael S. Tsirkin
2012-09-12 6:13 ` Rusty Russell
2012-09-10 16:01 ` Thomas Lendacky
2012-09-10 16:01 ` Thomas Lendacky
2012-09-06 23:49 ` Rusty Russell
2012-09-06 7:57 ` Rusty Russell
2012-09-10 15:52 ` Paolo Bonzini
2012-09-10 15:52 ` Paolo Bonzini
2012-09-06 0:02 ` Rusty Russell
2012-09-06 0:02 ` Rusty Russell
2012-08-29 15:38 ` Michael S. Tsirkin
2012-08-29 15:38 ` Michael S. Tsirkin
2012-08-29 17:14 ` Sasha Levin
2012-08-29 17:14 ` Sasha Levin
2012-08-29 18:12 ` Michael S. Tsirkin
2012-08-29 18:12 ` Michael S. Tsirkin
2012-08-29 20:46 ` Sasha Levin
2012-08-29 20:46 ` Sasha Levin
2012-08-29 22:52 ` Michael S. Tsirkin
2012-08-29 22:52 ` Michael S. Tsirkin
2012-08-28 13:20 ` [PATCH v2 1/2] virtio-ring: Use threshold for switching to indirect descriptors Michael S. Tsirkin
2012-08-28 13:20 ` Michael S. Tsirkin
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=20121023151442.GA27478@redhat.com \
--to=mst@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=levinsasha928@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tahm@linux.vnet.ibm.com \
--cc=virtualization@lists.linux-foundation.org \
/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.