From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: Elvis upstreaming plan Date: Sun, 24 Nov 2013 12:26:15 +0200 Message-ID: <20131124102615.GB6234@redhat.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org, anthony@codemonkey.ws, gleb@redhat.com, pbonzini@redhat.com, asias@redhat.com, jasowang@redhat.com, digitaleric@google.com, abel.gordon@gmail.com, Abel Gordon , Eran Raichstein , Joel Nider To: Razya Ladelsky Return-path: Received: from mx1.redhat.com ([209.132.183.28]:63507 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751666Ab3KXKXH (ORCPT ); Sun, 24 Nov 2013 05:23:07 -0500 Content-Disposition: inline In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: On Sun, Nov 24, 2013 at 11:22:17AM +0200, Razya Ladelsky wrote: > Hi all, > > I am Razya Ladelsky, I work at IBM Haifa virtualization team, which > developed Elvis, presented by Abel Gordon at the last KVM forum: > ELVIS video: https://www.youtube.com/watch?v=9EyweibHfEs > ELVIS slides: https://drive.google.com/file/d/0BzyAwvVlQckeQmpnOHM5SnB5UVE > > > According to the discussions that took place at the forum, upstreaming > some of the Elvis approaches seems to be a good idea, which we would like > to pursue. > > Our plan for the first patches is the following: > > 1.Shared vhost thread between mutiple devices > This patch creates a worker thread and worker queue shared across multiple > virtio devices > We would like to modify the patch posted in > https://github.com/abelg/virtual_io_acceleration/commit/3dc6a3ce7bcbe87363c2df8a6b6fee0c14615766 > to limit a vhost thread to serve multiple devices only if they belong to > the same VM as Paolo suggested to avoid isolation or cgroups concerns. > > Another modification is related to the creation and removal of vhost > threads, which will be discussed next. > > 2. Sysfs mechanism to add and remove vhost threads > This patch allows us to add and remove vhost threads dynamically. > > A simpler way to control the creation of vhost threads is statically > determining the maximum number of virtio devices per worker via a kernel > module parameter (which is the way the previously mentioned patch is > currently implemented) > > I'd like to ask for advice here about the more preferable way to go: > Although having the sysfs mechanism provides more flexibility, it may be a > good idea to start with a simple static parameter, and have the first > patches as simple as possible. What do you think? > > 3.Add virtqueue polling mode to vhost > Have the vhost thread poll the virtqueues with high I/O rate for new > buffers , and avoid asking the guest to kick us. > https://github.com/abelg/virtual_io_acceleration/commit/26616133fafb7855cc80fac070b0572fd1aaf5d0 > > 4. vhost statistics > This patch introduces a set of statistics to monitor different performance > metrics of vhost and our polling and I/O scheduling mechanisms. The > statistics are exposed using debugfs and can be easily displayed with a > Python script (vhost_stat, based on the old kvm_stats) > https://github.com/abelg/virtual_io_acceleration/commit/ac14206ea56939ecc3608dc5f978b86fa322e7b0 > > > 5. Add heuristics to improve I/O scheduling > This patch enhances the round-robin mechanism with a set of heuristics to > decide when to leave a virtqueue and proceed to the next. > https://github.com/abelg/virtual_io_acceleration/commit/f6a4f1a5d6b82dc754e8af8af327b8d0f043dc4d > > This patch improves the handling of the requests by the vhost thread, but > could perhaps be delayed to a > later time , and not submitted as one of the first Elvis patches. > I'd love to hear some comments about whether this patch needs to be part > of the first submission. > > Any other feedback on this plan will be appreciated, > Thank you, > Razya How about we start with the stats patch? This will make it easier to evaluate the other patches.