Dor Laor wrote:
2) We either need huge descriptors or some chaining
mechanism to
handle scatter-gather.
Or, my preference, have a small sglist in the descriptor;
Define "small" ;)
There a certainly patterns that cannot/will-not take advantage of SG
(for instance, your typical network rx path), and therefore the sg
entries are wasted in some cases. Since they need to be (IMHO) u64,
they suck down at least 8 bytes a piece. Because of this I elected to
use the model of one pointer per descriptor, with an external
descriptor
for SG. What are your thoughts on this?
Using Rusty's code there is no waste.
Each descriptor has a flag (head|next). Next flag stands for pointer to
the
next descriptor with u32 next index. So the waste is 4 bytes.
Sg descriptors are chained on the same descriptor ring.
Block I/O can easily require 256 sglist entries, eating up your ring.
--
error compiling committee.c: too many arguments to function
_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/virtualization