]> git.dujemihanovic.xyz Git - linux.git/commit
selftests: Add test for timing a bind request to a port with a populated bhash entry
authorJoanne Koong <joannelkoong@gmail.com>
Fri, 20 May 2022 00:18:34 +0000 (17:18 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 21 May 2022 01:16:24 +0000 (18:16 -0700)
commit538aaf9b2383701094a47797b4554c6a21c83eed
tree464be1977af3e8290dd0f519c5c3849299b20c3a
parentd5a42de8bdbe25081f07b801d8b35f4d75a791f4
selftests: Add test for timing a bind request to a port with a populated bhash entry

This test populates the bhash table for a given port with
MAX_THREADS * MAX_CONNECTIONS sockets, and then times how long
a bind request on the port takes.

When populating the bhash table, we create the sockets and then bind
the sockets to the same address and port (SO_REUSEADDR and SO_REUSEPORT
are set). When timing how long a bind on the port takes, we bind on a
different address without SO_REUSEPORT set. We do not set SO_REUSEPORT
because we are interested in the case where the bind request does not
go through the tb->fastreuseport path, which is fragile (eg
tb->fastreuseport path does not work if binding with a different uid).

To run the test locally, I did:
* ulimit -n 65535000
* ip addr add 2001:0db8:0:f101::1 dev eth0
* ./bind_bhash_test 443

Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/.gitignore
tools/testing/selftests/net/Makefile
tools/testing/selftests/net/bind_bhash_test.c [new file with mode: 0644]