From patchwork Mon Nov 27 02:55:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heng Qi X-Patchwork-Id: 13469019 Authentication-Results: smtp.subspace.kernel.org; dkim=none Received: from out30-124.freemail.mail.aliyun.com (out30-124.freemail.mail.aliyun.com [115.124.30.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C19010F for ; Sun, 26 Nov 2023 18:55:47 -0800 (PST) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R921e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045170;MF=hengqi@linux.alibaba.com;NM=1;PH=DS;RN=14;SR=0;TI=SMTPD_---0Vx7utgD_1701053744; Received: from localhost(mailfrom:hengqi@linux.alibaba.com fp:SMTPD_---0Vx7utgD_1701053744) by smtp.aliyun-inc.com; Mon, 27 Nov 2023 10:55:45 +0800 From: Heng Qi To: virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Cc: jasowang@redhat.com, mst@redhat.com, kuba@kernel.org, edumazet@google.com, pabeni@redhat.com, davem@davemloft.net, hawk@kernel.org, john.fastabend@gmail.com, ast@kernel.org, horms@kernel.org, xuanzhuo@linux.alibaba.com, yinjun.zhang@corigine.com Subject: [PATCH net-next v5 0/4] virtio-net: support dynamic coalescing moderation Date: Mon, 27 Nov 2023 10:55:40 +0800 Message-Id: X-Mailer: git-send-email 2.19.1.6.gb485710b Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Now, virtio-net already supports per-queue moderation parameter setting. Based on this, we use the linux dimlib to support dynamic coalescing moderation for virtio-net. Due to some scheduling issues, we only support and test the rx dim. Some test results: I. Sockperf UDP ================================================= 1. Env rxq_0 with affinity to cpu_0. 2. Cmd client: taskset -c 0 sockperf tp -p 8989 -i $IP -t 10 -m 16B server: taskset -c 0 sockperf sr -p 8989 3. Result dim off: 1143277.00 rxpps, throughput 17.844 MBps, cpu is 100%. dim on: 1124161.00 rxpps, throughput 17.610 MBps, cpu is 83.5%. ================================================= II. Redis ================================================= 1. Env There are 8 rxqs, and rxq_i with affinity to cpu_i. 2. Result When all cpus are 100%, ops/sec of memtier_benchmark client is dim off: 978437.23 dim on: 1143638.28 ================================================= III. Nginx ================================================= 1. Env There are 8 rxqs and rxq_i with affinity to cpu_i. 2. Result When all cpus are 100%, requests/sec of wrk client is dim off: 877931.67 dim on: 1019160.31 ================================================= IV. Latency of sockperf udp ================================================= 1. Rx cmd taskset -c 0 sockperf sr -p 8989 2. Tx cmd taskset -c 0 sockperf pp -i ${ip} -p 8989 -t 10 After running this cmd 5 times and averaging the results, 3. Result dim off: 17.7735 usec dim on: 18.0110 usec ================================================= Changelog: v4->v5: - Patch(4/4): - Fix possible synchronization issues with cancel_work_sync. - Reduce if/else nesting levels v3->v4: - Patch(5/5): drop. v2->v3: - Patch(4/5): some minor modifications. v1->v2: - Patch(2/5): a minor fix. - Patch(4/5): - improve the judgment of dim switch conditions. - Cancel the work when vq reset. - Patch(5/5): drop the tx dim implementation. Heng Qi (4): virtio-net: returns whether napi is complete virtio-net: separate rx/tx coalescing moderation cmds virtio-net: extract virtqueue coalescig cmd for reuse virtio-net: support rx netdim drivers/net/virtio_net.c | 287 +++++++++++++++++++++++++++++++++------ 1 file changed, 242 insertions(+), 45 deletions(-)