Thread (1 message) 1 message, 1 author, 2017-02-22

RE: [virtio-dev] packed ring layout proposal - todo list

From: Gray, Mark D <hidden>
Date: 2017-02-22 09:19:41

From: virtio-dev@lists.oasis-open.org [mailto:virtio-dev@lists.oasis-
open.org] On Behalf Of Michael S. Tsirkin

Here is an attempt to summarise the list of things we need to do with respect
to this proposal.
Thanks for outlining this, it makes it a lot clearer.

Stage 1: update prototype and finalize proposal

At this stage we need to update the prototype under
tools/virtio/ringtest/ring.c to make it match latest proposal, adding in verious
Would a DPDK based prototype be good aswell or would you rather 
everything be prototyped here?
options under discussion.
Then we will measure performance. While more ideas are welcome there
won't be useful without ability to test!

Tasks:

- update tools/virtio/ringtest/ring.c to proposal, adding
  options as listed below.
- compare performance with and without indirect buffers
  issue: how to estimate cost of memory allocations?
- batching descriptors - is it worth it?
- three ways to suppress interrupts/exits
  which works better?
  issue: how to estimate cost of interrupts/exits?
We need to ensure we have a proposal that is suitable for
implementation in hardware.
More ideas:

- current tests all indicate cache synchronizations due to r/w descriptors
  cost as much as read-only/write-only descriptors,
  and there are less of these synchronizations.
  Disagree? Write a patch and benchmark.
- some devices could use smaller descriptors. For example,
  if you don't need length, id (e.g. using in-order, fixed length) or flags, you
can
  use a single 64 bit pointer as a descriptor. This can sometimes work
  e.g. for networking rx rings.
  Not clear whether this gains/costs us anything. Disagree? Write a patch and
benchmark.

Stage 2: prototype guest/host drivers

At this stage we need real guest and host drivers to be able to test real life
performance.
I suggest dpdk drivers + munimal hack in qemu to pass features around.

Tasks:

- implement vhost-user support in dpdk
- implement virtio support in dpdk
- implement minimal stub in qemu
- test performance. Possibly revisit questions from stage 2
  if any are left open


Stage 3: complete guest/host drivers

At this stage we need to add linux support in virtio and vhost, and complete
qemu support.

Tasks:

- implement vhost support in kernel
- implement virtio support in kernel
- complete virtio support in qemu
- test performance. Possibly revisit questions from stage 2
  if any are left open



Stage X: Finalizing the spec

When are we ready to put out a spec draft? Surely not before Stage 1 is
done. Surely no later than stage 3.  A driver could be wish for some party to
productize an implementation.

Interested? Join TC and start discussion on timing and which features should
be included.


--
MST

---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help