Message ID | 20190524081218.2502-1-jasowang@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | vhost: accelerate metadata access | expand |
From: Jason Wang <jasowang@redhat.com> Date: Fri, 24 May 2019 04:12:12 -0400 > This series tries to access virtqueue metadata through kernel virtual > address instead of copy_user() friends since they had too much > overheads like checks, spec barriers or even hardware feature > toggling like SMAP. This is done through setup kernel address through > direct mapping and co-opreate VM management with MMU notifiers. > > Test shows about 23% improvement on TX PPS. TCP_STREAM doesn't see > obvious improvement. I'm still waiting for some review from mst. If I don't see any review soon I will just wipe these changes from patchwork as it serves no purpose to just let them rot there. Thank you.
On Thu, May 30, 2019 at 11:07:30AM -0700, David Miller wrote: > From: Jason Wang <jasowang@redhat.com> > Date: Fri, 24 May 2019 04:12:12 -0400 > > > This series tries to access virtqueue metadata through kernel virtual > > address instead of copy_user() friends since they had too much > > overheads like checks, spec barriers or even hardware feature > > toggling like SMAP. This is done through setup kernel address through > > direct mapping and co-opreate VM management with MMU notifiers. > > > > Test shows about 23% improvement on TX PPS. TCP_STREAM doesn't see > > obvious improvement. > > I'm still waiting for some review from mst. > > If I don't see any review soon I will just wipe these changes from > patchwork as it serves no purpose to just let them rot there. > > Thank you. I thought we agreed I'm merging this through my tree, not net-next. So you can safely wipe it. Thanks!
From: "Michael S. Tsirkin" <mst@redhat.com> Date: Thu, 30 May 2019 14:13:28 -0400 > On Thu, May 30, 2019 at 11:07:30AM -0700, David Miller wrote: >> From: Jason Wang <jasowang@redhat.com> >> Date: Fri, 24 May 2019 04:12:12 -0400 >> >> > This series tries to access virtqueue metadata through kernel virtual >> > address instead of copy_user() friends since they had too much >> > overheads like checks, spec barriers or even hardware feature >> > toggling like SMAP. This is done through setup kernel address through >> > direct mapping and co-opreate VM management with MMU notifiers. >> > >> > Test shows about 23% improvement on TX PPS. TCP_STREAM doesn't see >> > obvious improvement. >> >> I'm still waiting for some review from mst. >> >> If I don't see any review soon I will just wipe these changes from >> patchwork as it serves no purpose to just let them rot there. >> >> Thank you. > > I thought we agreed I'm merging this through my tree, not net-next. > So you can safely wipe it. Aha, I didn't catch that, thanks!
On Fri, May 24, 2019 at 04:12:12AM -0400, Jason Wang wrote: > Hi: > > This series tries to access virtqueue metadata through kernel virtual > address instead of copy_user() friends since they had too much > overheads like checks, spec barriers or even hardware feature > toggling like SMAP. This is done through setup kernel address through > direct mapping and co-opreate VM management with MMU notifiers. > > Test shows about 23% improvement on TX PPS. TCP_STREAM doesn't see > obvious improvement. > > Thanks Thanks this is queued for next. Did you want to rebase and repost packed ring support on top? IIUC it's on par with split ring with these patches. > Changes from RFC V3: > - rebase to net-next > - Tweak on the comments > Changes from RFC V2: > - switch to use direct mapping instead of vmap() > - switch to use spinlock + RCU to synchronize MMU notifier and vhost > data/control path > - set dirty pages in the invalidation callbacks > - always use copy_to/from_users() friends for the archs that may need > flush_dcache_pages() > - various minor fixes > Changes from V4: > - use invalidate_range() instead of invalidate_range_start() > - track dirty pages > Changes from V3: > - don't try to use vmap for file backed pages > - rebase to master > Changes from V2: > - fix buggy range overlapping check > - tear down MMU notifier during vhost ioctl to make sure > invalidation request can read metadata userspace address and vq size > without holding vq mutex. > Changes from V1: > - instead of pinning pages, use MMU notifier to invalidate vmaps > and remap duing metadata prefetch > - fix build warning on MIPS > > Jason Wang (6): > vhost: generalize adding used elem > vhost: fine grain userspace memory accessors > vhost: rename vq_iotlb_prefetch() to vq_meta_prefetch() > vhost: introduce helpers to get the size of metadata area > vhost: factor out setting vring addr and num > vhost: access vq metadata through kernel virtual address > > drivers/vhost/net.c | 4 +- > drivers/vhost/vhost.c | 850 ++++++++++++++++++++++++++++++++++++------ > drivers/vhost/vhost.h | 38 +- > 3 files changed, 766 insertions(+), 126 deletions(-) > > -- > 2.18.1
On 2019/6/6 上午4:27, Michael S. Tsirkin wrote: > On Fri, May 24, 2019 at 04:12:12AM -0400, Jason Wang wrote: >> Hi: >> >> This series tries to access virtqueue metadata through kernel virtual >> address instead of copy_user() friends since they had too much >> overheads like checks, spec barriers or even hardware feature >> toggling like SMAP. This is done through setup kernel address through >> direct mapping and co-opreate VM management with MMU notifiers. >> >> Test shows about 23% improvement on TX PPS. TCP_STREAM doesn't see >> obvious improvement. >> >> Thanks > Thanks this is queued for next. > > Did you want to rebase and repost packed ring support on top? > IIUC it's on par with split ring with these patches. > > Yes, it's on the way. Thanks