Messages in this thread | | | From | Yanchao Yang (杨彦超) <> | Subject | Re: [PATCH net-next v1 02/13] net: wwan: tmi: Add buffer management | Date | Fri, 9 Dec 2022 10:26:09 +0000 |
| |
Hello Sergey,
On Sun, 2022-12-04 at 22:58 +0400, Sergey Ryazanov wrote: > On 22.11.2022 15:11, Yanchao Yang wrote: > > From: MediaTek Corporation <linuxwwan@mediatek.com> > > > > To malloc I/O memory as soon as possible, buffer management comes > > into being. > > It creates buffer pools that reserve some buffers through deferred > > works when > > the driver isn't busy. > > > > The buffer management provides unified memory allocation/de- > > allocation > > interfaces for other modules. It supports two buffer types of SKB > > and page. > > Two reload work queues with different priority values are provided > > to meet > > various requirements of the control plane and the data plane. > > > > When the reserved buffer count of the pool is less than a threshold > > (default > > is 2/3 of the pool size), the reload work will restart to allocate > > buffers > > from the OS until the buffer pool becomes full. When the buffer > > pool fills, > > the OS will recycle the buffer freed by the user. > > > > Signed-off-by: Mingliang Xu <mingliang.xu@mediatek.com> > > Signed-off-by: MediaTek Corporation <linuxwwan@mediatek.com> > > --- > > drivers/net/wwan/mediatek/Makefile | 3 +- > > drivers/net/wwan/mediatek/mtk_bm.c | 369 > > ++++++++++++++++++++++++++++ > > drivers/net/wwan/mediatek/mtk_bm.h | 79 ++++++ > > drivers/net/wwan/mediatek/mtk_dev.c | 11 +- > > drivers/net/wwan/mediatek/mtk_dev.h | 1 + > > 5 files changed, 461 insertions(+), 2 deletions(-) > > create mode 100644 drivers/net/wwan/mediatek/mtk_bm.c > > create mode 100644 drivers/net/wwan/mediatek/mtk_bm.h > > Yanchao, can you share some numbers, how this custom pool is > outperform > the regular kernel allocator? Prepare 2 drivers *.ko for comparison. Driver A (following named A): enable pre-allocate buffer pool. Driver B (following named A): disenable pre-allocate buffer pool. It uses kernel API directly (__dev_alloc_skb and netdev_alloc_frag)
Test Instrument: Keysight UXM TA Iperf command: Server Command: iperf3 -s -p 5002 -i 1 Client Command: iperf3 -c 192.168.2.1 -p 5002 -i 1 -w 8M -t 30 -R -P 5
Test result: Fig 1. A’s TCP DL throughput Fig 2. B’s TCP DL throughput (Ref attachment)
From the results, it represents that the A’s IP packets throughput reaches 7Gbits/sec, while B’s throughput is 4.7Gbits/sec. A’s throughput is up about 50% compared with B.
In addition, from ftrace, it represents following results. A: it takes 14.241828s for allocating 33211099 buffers. The average time is about 0.4us. B: it takes 7.677069s for allocating 10890789 buffers. The average time is about 0.7us. > > -- > Sergey
many thanks. Yanchao.Yang [unhandled content-type:image/jpeg][unhandled content-type:image/jpeg] | |