On Sun, 2007-06-03 at 08:28 +0300, Avi Kivity wrote:
> Sure, 'used' is important (how else do you get the packet size on
> receive?)
Well, the sender can prepend the length, or for networking just leave
Linux to trim packets. It's the trust issue which bugs me.
> , I'm just bitching about the linear scan.
If you're doing interrupt mitigation on a high-bandwidth device, I think
it's optimal. And if you're not, you obviously don't care 8)
That said, thousands of descriptors may not be insane...
> Well, if you have 256 slots per direction, you will scan 4KB of memory
> per interrupt (256 slots x 2 directions x 8 bytes). You may need a
> queue length greater than 256 for a high bandwidth interface, if you
> want to reduce your interrupt rate, or if your guest is scheduled out
> for lengthy periods (say, a millisecond).
Hmm... Perhaps I should move the used arrays into the "struct
virtio_device" and guarantee that the id (returned by add_*buf) is an
index into that. Then we can trivially add a corresponding bit array.
This also makes the "id" easier to use from the driver side: if we add a
"max_id" field it can size its own arrays if it wants to. Gets rid of
the linked-list in the block driver...
Thoughts?
Rusty.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|