On 2024/9/10 1:28, Mina Almasry wrote: > On Mon, Sep 9, 2024 at 2:25 AM Yunsheng Lin <linyunsheng@xxxxxxxxxx> wrote: >> >> The testing is done by ensuring that the page allocated from >> the page_pool instance is pushed into a ptr_ring instance in >> a kthread/napi binded to a specified cpu, and a kthread/napi >> binded to a specified cpu will pop the page from the ptr_ring >> and free it back to the page_pool. >> >> Signed-off-by: Yunsheng Lin <linyunsheng@xxxxxxxxxx> > > It seems this test is has a correctness part and a performance part. > For the performance test, Jesper has out of tree tests for the > page_pool: > https://github.com/netoptimizer/prototype-kernel/blob/master/kernel/lib/bench_page_pool_simple.c > > I have these rebased on top of net-next and use them to verify devmem > & memory-provider performance: > https://github.com/mina/linux/commit/07fd1c04591395d15d83c07298b4d37f6b56157f Yes, I used that testing ko too when adding frag API support for page_pool. The main issue I remembered was that it only support x86:( > > My preference here (for the performance part) is to upstream the > out-of-tree tests that Jesper (and probably others) are using, rather > than adding a new performance test that is not as battle-hardened. I looked through the out-of-tree tests again, it seems we can take the best of them. For Jesper' ko: It seems we can do prefill as something that pp_fill_ptr_ring() does in bench_page_pool_simple.c to avoid the noise from the page allocator. For the ko in this patch: It uses NAPI instead of tasklet mimicking the NAPI context, support PP_FLAG_DMA_MAP flag testing, and return '-EAGAIN' in module_init() to use perf stat for collecting and calculating performance data. Is there other testcase or better practicing that we can learn from Jesper' out of tree ko? > > -- > Thanks, > Mina >