On Fri, Jul 02, 2021 at 05:04:44PM +0800, Jason Wang wrote: > > 在 2021/7/2 下午4:46, Yunsheng Lin 写道: > > On 2021/7/2 16:30, Michael S. Tsirkin wrote: > > > On Fri, Jul 02, 2021 at 04:17:17PM +0800, Yunsheng Lin wrote: > > > > > Let's reuse ptr_ring.c in tools/virtio/ringtest. Nothing virt specific there. > > > > It *does* have some virtio specific at the end of ptr_ring.c. > > > They are just wrappers to make ptr ring works like a virtio ring. We can > split them out into another file if necessary. > > > > > > It can be argued that the ptr_ring.c in tools/virtio/ringtest > > > > could be refactored to remove the function related to virtio. > > > > > > > > But as mentioned in the previous disscusion [1], the tools/virtio/ > > > > seems to have compile error in the latest kernel, it does not seems > > > > right to reuse that. > > > > And most of testcase in tools/virtio/ seems > > > > better be in tools/virtio/ringtest instead,so until the testcase > > > > in tools/virtio/ is compile-error-free and moved to tools/testing/ > > > > selftests/, it seems better not to reuse it for now. > > > > > > That's a great reason to reuse - so tools/virtio/ stays working. > > > Please just fix that. > > > +1 > > > > I understand that you guys like to see a working testcase of virtio. > > I would love to do that if I have the time and knowledge of virtio, > > But I do not think I have the time and I am familiar enough with > > virtio to fix that now. > > > So ringtest is used for bench-marking the ring performance for different > format. Virtio is only one of the supported ring format, ptr ring is > another. Wrappers were used to reuse the same test logic. > > Though you may see host/guest in the test, it's in fact done via two > processes. > > We need figure out: > > 1) why the current ringtest.c does not fit for your requirement (it has SPSC > test) > 2) why can't we tweak the ptr_ring.c to be used by both ring_test and your > benchmark > > If neither of the above work, we can invent new ptr_ring infrastructure > under tests/ > > Thanks For me 1) is not a question. All the available/used terminology is not an ideal fit for ptr ring. With virtio buffers are always owned by driver (producer) so producer has a way to find out if a buffer has been consumed. With ptr ring there's no way for producer to know a buffer has been consumed. The test hacks around that but it is very reasonable not to want to rely on that. However 2) is very much a question. We can split ptr_ring to the preamble and virtio related hacks. So all the portability infrastructure for building kernel code from userspace, command line parsing, run-on-all.sh to figure out affinity effects, all that can and should IMHO be reused and not copy-pasted. > > > > >