lkml.org 
[lkml]   [2021]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH net-next v2 1/2] selftests/ptr_ring: add benchmark application for ptr_ring
    From
    Date
    On 2021/6/27 14:09, Michael S. Tsirkin wrote:
    > On Fri, Jun 25, 2021 at 11:52:16AM +0800, Yunsheng Lin wrote:
    >> On 2021/6/25 11:36, Jason Wang wrote:
    >>>
    >>> 在 2021/6/25 上午11:18, Yunsheng Lin 写道:
    >>>> Currently ptr_ring selftest is embedded within the virtio
    >>>> selftest, which involves some specific virtio operation,
    >>>> such as notifying and kicking.
    >>>>
    >>>> As ptr_ring has been used by various subsystems, it deserves
    >>>> it's owner's selftest in order to benchmark different usecase
    >>>> of ptr_ring, such as page pool and pfifo_fast qdisc.
    >>>>
    >>>> So add a simple application to benchmark ptr_ring performance.
    >>>> Currently two test mode is supported:
    >>>> Mode 0: Both enqueuing and dequeuing is done in a single thread,
    >>>> it is called simple test mode in the test app.
    >>>> Mode 1: Enqueuing and dequeuing is done in different thread
    >>>> concurrently, also known as SPSC(single-producer/
    >>>> single-consumer) test.
    >>>>
    >>>> The multi-producer/single-consumer test for pfifo_fast case is
    >>>> not added yet, which can be added if using CAS atomic operation
    >>>> to enable lockless multi-producer is proved to be better than
    >>>> using r->producer_lock.
    >>>>
    >>>> Only supported on x86 and arm64 for now.
    >>>>
    >>>> Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
    >>>> ---
    >>>> MAINTAINERS | 5 +
    >>>> tools/testing/selftests/ptr_ring/Makefile | 6 +
    >>>> tools/testing/selftests/ptr_ring/ptr_ring_test.c | 249 +++++++++++++++++++++++
    >>>> tools/testing/selftests/ptr_ring/ptr_ring_test.h | 150 ++++++++++++++
    >>>> 4 files changed, 410 insertions(+)
    >>>
    >>>
    >>> Why can't you simply reuse tools/virtio/ringtest?
    >>
    >> The main reason is stated in the commit log:
    >> "Currently ptr_ring selftest is embedded within the virtio
    >> selftest, which involves some specific virtio operation,
    >> such as notifying and kicking.
    >>
    >> As ptr_ring has been used by various subsystems, it deserves
    >> it's owner's selftest in order to benchmark different usecase
    >> of ptr_ring, such as page pool and pfifo_fast qdisc."
    >>
    >> More specificly in tools/virtio/ringtest/main.c and
    >> tools/virtio/ringtest/ptr_ring.c, there are a lot of operation
    >> related to virtio usecase, such as start_guest(), start_host(),
    >> poll_used(), notify() or kick() ....., so it makes more sense
    >> to add a generic selftest for ptr ring as it is not only used
    >> by virtio now.
    >
    >
    > Okay that answers why you didn't just run main.c
    > but why not add a new test under tools/virtio/ringtest/
    > reusing the rest of infrastructure that you currently copied?

    Actually, my first attempt was to reuse the infrastructure in
    tools/virtio/ or tools/virtio/ringtest/, and neither of them
    was able to be compiled in the latest kernel.

    And then I read through the code to try fixing the compile error,
    I found that the testcase under tools/virtio/ is coupled deeply
    to virtio as explained above, which was difficult to read for
    someone who is not fimiliar with virtio.

    So I searched for how testing is supposed to be added in the kernel,
    it seems it is more common to add the testing in tools/testing or
    tools/testing/selftest, and ptr ring is not only used by virtio now,
    so it seems more appropriate to add a sperate testing for virtio by
    instinct.

    Most of tools/virtio/ is to do testing related to virtio testing, IMHO,
    most of them are better to be in tools/testing/selftest. Even if most of
    virtio testing is moved to tools/testing/selftest, I think it makes more
    sense to decouple the virtio testing to ptr_ring testing too if we can
    find some mechanism to share the abstract infrastructure in ptr_ring_test.h
    for both virtio and ptr_ring testing.


    >
    >>
    >>>
    >>> Thanks
    >>>
    >>>
    >>> .
    >>>
    >
    >
    > .
    >

    \
     
     \ /
      Last update: 2021-06-28 03:43    [W:5.851 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site