On Sun, Nov 06, 2022 at 11:54:13AM +0100, Martin Pieuchot wrote:
> These 3 syscalls should now be ready to run w/o KERNEL_LOCK().  This
> will reduce contention a lot.  I'd be happy to hear from test reports
> on many architectures and possible workloads.
>
> Do not forget to run "make syscalls" before building the kernel.
>
> Index: syscalls.master
> ===================================================================
> RCS file: /cvs/src/sys/kern/syscalls.master,v
> retrieving revision 1.234
> diff -u -p -r1.234 syscalls.master
> --- syscalls.master   25 Oct 2022 16:10:31 -0000      1.234
> +++ syscalls.master   6 Nov 2022 10:50:45 -0000
> @@ -126,7 +126,7 @@
>                           struct sigaction *osa); }
>  47   STD NOLOCK      { gid_t sys_getgid(void); }
>  48   STD NOLOCK      { int sys_sigprocmask(int how, sigset_t mask); }
> -49   STD             { void *sys_mmap(void *addr, size_t len, int prot, \
> +49   STD NOLOCK      { void *sys_mmap(void *addr, size_t len, int prot, \
>                           int flags, int fd, off_t pos); }
>  50   STD             { int sys_setlogin(const char *namebuf); }
>  #ifdef ACCOUNTING
> @@ -171,8 +171,8 @@
>                           const struct kevent *changelist, int nchanges, \
>                           struct kevent *eventlist, int nevents, \
>                           const struct timespec *timeout); }
> -73   STD             { int sys_munmap(void *addr, size_t len); }
> -74   STD             { int sys_mprotect(void *addr, size_t len, \
> +73   STD NOLOCK      { int sys_munmap(void *addr, size_t len); }
> +74   STD NOLOCK      { int sys_mprotect(void *addr, size_t len, \
>                           int prot); }
>  75   STD             { int sys_madvise(void *addr, size_t len, \
>                           int behav); }
>

FWIW, this improves build performance by over 12% here locally.

-ml

Reply via email to