From: Dust Li <dust.li@linux.alibaba.com>
To: liqiang <liqiang64@huawei.com>,
wenjia@linux.ibm.com, jaka@linux.ibm.com,
alibuda@linux.alibaba.com, tonylu@linux.alibaba.com,
guwen@linux.alibaba.com
Cc: linux-s390@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, luanjianhai@huawei.com,
zhangxuzhou4@huawei.com, dengguangxing@huawei.com,
gaochao24@huawei.com, kuba@kernel.org
Subject: Re: [PATCH net-next] net/smc: Optimize the search method of reused buf_desc
Date: Fri, 1 Nov 2024 18:52:53 +0800 [thread overview]
Message-ID: <20241101105253.GG101007@linux.alibaba.com> (raw)
In-Reply-To: <20241101082342.1254-1-liqiang64@huawei.com>
On 2024-11-01 16:23:42, liqiang wrote:
>We create a lock-less link list for the currently
>idle reusable smc_buf_desc.
>
>When the 'used' filed mark to 0, it is added to
>the lock-less linked list.
>
>When a new connection is established, a suitable
>element is obtained directly, which eliminates the
>need for traversal and search, and does not require
>locking resource.
>
>A lock-less linked list is a linked list that uses
>atomic operations to optimize the producer-consumer model.
>
>I didn't find a suitable public benchmark, so I tested the
>time-consuming comparison of this function under multiple
>connections based on redis-benchmark (test in smc loopback-ism mode):
I think you can run test wrk/nginx test with short-lived connection.
For example:
```
# client
wrk -H "Connection: close" http://$serverIp
# server
nginx
```
>
> 1. On the current version:
> [x.832733] smc_buf_get_slot cost:602 ns, walk 10 buf_descs
> [x.832860] smc_buf_get_slot cost:329 ns, walk 12 buf_descs
> [x.832999] smc_buf_get_slot cost:479 ns, walk 17 buf_descs
> [x.833157] smc_buf_get_slot cost:679 ns, walk 13 buf_descs
> ...
> [x.045240] smc_buf_get_slot cost:5528 ns, walk 196 buf_descs
> [x.045389] smc_buf_get_slot cost:4721 ns, walk 197 buf_descs
> [x.045537] smc_buf_get_slot cost:4075 ns, walk 198 buf_descs
> [x.046010] smc_buf_get_slot cost:6476 ns, walk 199 buf_descs
>
> 2. Apply this patch:
> [x.180857] smc_buf_get_slot_free cost:75 ns
> [x.181001] smc_buf_get_slot_free cost:147 ns
> [x.181128] smc_buf_get_slot_free cost:97 ns
> [x.181282] smc_buf_get_slot_free cost:132 ns
> [x.181451] smc_buf_get_slot_free cost:74 ns
>
>It can be seen from the data that it takes about 5~6us to traverse 200
>times, and the time complexity of the lock-less linked algorithm is O(1).
>
>And my test process is only single-threaded. If multiple threads
>establish SMC connections in parallel, locks will also become a
>bottleneck, and lock-less linked can solve this problem well.
>
>SO I guess this patch should be beneficial in scenarios where a
>large number of short connections are parallel?
Based on your data, I'm afraid the short-lived connection
test won't show much benificial. Since the time to complete a
SMC-R connection should be several orders of magnitude larger
than 100ns.
Best regards,
Dust
next prev parent reply other threads:[~2024-11-01 10:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-01 8:23 [PATCH net-next] net/smc: Optimize the search method of reused buf_desc liqiang
2024-11-01 10:52 ` Dust Li [this message]
2024-11-02 6:43 ` Li Qiang
2024-11-04 8:13 ` Dust Li
2024-11-04 8:47 ` Li Qiang
2024-11-05 3:19 ` [PATCH v2 " liqiang
2024-11-05 14:44 ` Dust Li
2024-11-06 7:05 ` Li Qiang
2024-11-12 9:22 ` [PATCH net-next v3] " liqiang
2024-11-19 2:21 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241101105253.GG101007@linux.alibaba.com \
--to=dust.li@linux.alibaba.com \
--cc=alibuda@linux.alibaba.com \
--cc=dengguangxing@huawei.com \
--cc=gaochao24@huawei.com \
--cc=guwen@linux.alibaba.com \
--cc=jaka@linux.ibm.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=liqiang64@huawei.com \
--cc=luanjianhai@huawei.com \
--cc=netdev@vger.kernel.org \
--cc=tonylu@linux.alibaba.com \
--cc=wenjia@linux.ibm.com \
--cc=zhangxuzhou4@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.