selftests: Add benchmark for syscall user dispatch
authorGabriel Krisman Bertazi <krisman@collabora.com>
Fri, 27 Nov 2020 19:32:37 +0000 (14:32 -0500)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 2 Dec 2020 14:07:57 +0000 (15:07 +0100)
commitd87ae0fa21c26db2d7c66f22dee9c27ecda48ce2
tree99a71e4cf289838e383a6265758ead76224eb16e
parent179ef035992e89646e17138b18b130bb874b86bb
selftests: Add benchmark for syscall user dispatch

This is the patch I'm using to evaluate the impact syscall user dispatch
has on native syscall (syscalls not redirected to userspace) when
enabled for the process and submiting syscalls though the unblocked
dispatch selector. It works by running a step to define a baseline of
the cost of executing sysinfo, then enabling SUD, and rerunning that
step.

On my test machine, an AMD Ryzen 5 1500X, I have the following results
with the latest version of syscall user dispatch patches.

root@olga:~# syscall_user_dispatch/sud_benchmark
  Calibrating test set to last ~5 seconds...
  test iterations = 37500000
  Avg syscall time 134ns.
  Caught sys_ff00
  trapped_call_count 1, native_call_count 0.
  Avg syscall time 147ns.
  Interception overhead: 9.7% (+13ns).

Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20201127193238.821364-7-krisman@collabora.com
tools/testing/selftests/syscall_user_dispatch/Makefile
tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c [new file with mode: 0644]