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

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to