public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* Elvis upstreaming plan
@ 2013-11-24  9:22 Razya Ladelsky
  2013-11-24 10:26 ` Michael S. Tsirkin
                   ` (4 more replies)
  0 siblings, 5 replies; 39+ messages in thread
From: Razya Ladelsky @ 2013-11-24  9:22 UTC (permalink / raw)
  To: kvm
  Cc: anthony, mst, gleb, pbonzini, asias, jasowang, digitaleric,
	abel.gordon, Abel Gordon, Eran Raichstein, Joel Nider

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


^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2013-12-02 15:11 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-24  9:22 Elvis upstreaming plan Razya Ladelsky
2013-11-24 10:26 ` Michael S. Tsirkin
2013-11-25 11:06   ` Razya Ladelsky
2013-11-26 15:50 ` Stefan Hajnoczi
2013-11-26 18:05 ` Anthony Liguori
2013-11-26 18:53   ` Abel Gordon
2013-11-26 21:11     ` Michael S. Tsirkin
2013-11-27  7:43       ` Joel Nider
2013-11-27 10:27         ` Michael S. Tsirkin
2013-11-27 10:41           ` Abel Gordon
2013-11-27 10:59             ` Michael S. Tsirkin
2013-11-27 11:02               ` Abel Gordon
2013-11-27 11:36                 ` Michael S. Tsirkin
2013-11-27 22:33             ` Anthony Liguori
2013-11-28  8:25               ` Abel Gordon
2013-11-27 15:00         ` Stefan Hajnoczi
2013-11-27 15:30           ` Michael S. Tsirkin
2013-11-28  7:24           ` Joel Nider
2013-11-28  7:31           ` Abel Gordon
2013-11-28 11:01             ` Michael S. Tsirkin
2013-12-02 15:11             ` Stefan Hajnoczi
2013-11-27  9:03       ` Abel Gordon
2013-11-27  9:21         ` Michael S. Tsirkin
2013-11-27  9:49           ` Abel Gordon
2013-11-27 10:29             ` Michael S. Tsirkin
2013-11-27 10:55               ` Abel Gordon
2013-11-27 11:03                 ` Michael S. Tsirkin
2013-11-27 11:05                   ` Abel Gordon
2013-11-27 11:40                     ` Michael S. Tsirkin
2013-11-26 22:27 ` Bandan Das
2013-11-27  2:49 ` Jason Wang
2013-11-27  7:35   ` Gleb Natapov
2013-11-27  7:45     ` Joel Nider
2013-11-27  9:18     ` Abel Gordon
2013-11-27  9:21       ` Gleb Natapov
2013-11-27  9:33         ` Abel Gordon
2013-11-27  9:48           ` Gleb Natapov
2013-11-27 10:18   ` Abel Gordon
2013-11-27 10:37     ` Michael S. Tsirkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox