> On Oct 14, 2020, at 5:28 AM, Alex Richardson <arichard...@freebsd.org> wrote:
> 
> Author: arichardson
> Date: Wed Oct 14 12:28:41 2020
> New Revision: 366697
> URL: https://svnweb.freebsd.org/changeset/base/366697
> 
> Log:
>  install(1): Avoid unncessary fstatfs() calls and use mmap() based on size
> 
>  According to git blame the trymmap() function was added in 1996 to skip
>  mmap() calls for NFS file systems. However, nowadays mmap() should be
>  perfectly safe even on NFS. Importantly, onl ufs and cd9660 file systems
>  were whitelisted so we don't use mmap() on ZFS. It also prevents the use
>  of mmap() when bootstrapping from macOS/Linux since on those systems the
>  trymmap() function was always returning zero due to the missing MFSNAMELEN
>  define.
> 
>  This change keeps the trymmap() function but changes it to check whether
>  using mmap() can reduce the number of system calls that are required.
>  Using mmap() only reduces the number of system calls if we need multiple 
> read()
>  syscalls, i.e. if the file size is > MAXBSIZE. However, mmap() is more 
> expensive
>  than read() so this sets the threshold at 4 fewer syscalls. Additionally, for
>  larger file size mmap() can significantly increase the number of page faults,
>  so avoid it in that case.
> 
>  It's unclear whether using mmap() is ever faster than a read with an 
> appropriate
>  buffer size, but this change at least removes two unnecessary system calls
>  for every file that is installed.
> 
>  Reviewed By: markj
>  Differential Revision: https://reviews.freebsd.org/D26041

        * Has this change been tested out with source filesystems other than 
UFS/ZFS? Not all filesystems support mmap(2).
        * trymmap(..) seems to be less about computing whether or not the 
filesystem should use mmap(2) after this change, but how it should use mmap(2). 
Seems like a misnamed function call now.
Cheers,
-Enji
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to