diff mbox series

select: core_sys_select add unlikely branch hint on return path

Message ID 20250414092426.53529-1-colin.i.king@gmail.com (mailing list archive)
State New
Headers show
Series select: core_sys_select add unlikely branch hint on return path | expand

Commit Message

Colin Ian King April 14, 2025, 9:24 a.m. UTC
Adding an unlikely() hint on the n < 0 comparison return path improves
run-time performance of the select() system call, the negative
value of n is very uncommon in normal select usage.

Benchmarking on an Debian based Intel(R) Core(TM) Ultra 9 285K with
a 6.15-rc1 kernel built with 14.2.0 using a select of 1000 file
descriptors with zero timeout shows a consistent call reduction from
258 ns down to 254 ns, which is a ~1.5% performance improvement.

Results based on running 25 tests with turbo disabled (to reduce clock
freq turbo changes), with 30 second run per test and comparing the number
of select() calls per second. The % standard deviation of the 25 tests
was 0.24%, so results are reliable.

Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
---
 fs/select.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Christian Brauner April 14, 2025, 10:04 a.m. UTC | #1
On Mon, 14 Apr 2025 10:24:26 +0100, Colin Ian King wrote:
> Adding an unlikely() hint on the n < 0 comparison return path improves
> run-time performance of the select() system call, the negative
> value of n is very uncommon in normal select usage.
> 
> Benchmarking on an Debian based Intel(R) Core(TM) Ultra 9 285K with
> a 6.15-rc1 kernel built with 14.2.0 using a select of 1000 file
> descriptors with zero timeout shows a consistent call reduction from
> 258 ns down to 254 ns, which is a ~1.5% performance improvement.
> 
> [...]

Applied to the vfs-6.16.misc branch of the vfs/vfs.git tree.
Patches in the vfs-6.16.misc branch should appear in linux-next soon.

Please report any outstanding bugs that were missed during review in a
new review to the original patch series allowing us to drop it.

It's encouraged to provide Acked-bys and Reviewed-bys even though the
patch has now been applied. If possible patch trailers will be updated.

Note that commit hashes shown below are subject to change due to rebase,
trailer updates or similar. If in doubt, please check the listed branch.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git
branch: vfs-6.16.misc

[1/1] select: core_sys_select add unlikely branch hint on return path
      https://git.kernel.org/vfs/vfs/c/7732f21402b5
diff mbox series

Patch

diff --git a/fs/select.c b/fs/select.c
index 0eaf3522abe9..9fb650d03d52 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -630,7 +630,7 @@  int core_sys_select(int n, fd_set __user *inp, fd_set __user *outp,
 	long stack_fds[SELECT_STACK_ALLOC/sizeof(long)];
 
 	ret = -EINVAL;
-	if (n < 0)
+	if (unlikely(n < 0))
 		goto out_nofds;
 
 	/* max_fds can increase, so grab it once to avoid race */