Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Nov 2014 06:35:20 +0100
From:      Mateusz Guzik <mjguzik@gmail.com>
To:        Poul-Henning Kamp <phk@phk.freebsd.dk>
Cc:        Hans Petter Selasky <hps@selasky.org>, src-committers@freebsd.org, Mateusz Guzik <mjg@freebsd.org>, jmallett@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, Bruce Evans <brde@optusnet.com.au>, Konstantin Belousov <kostikbel@gmail.com>, Julian Elischer <julian@freebsd.org>
Subject:   Re: svn commit: r274017 - head/sys/kern
Message-ID:  <20141104053520.GA4032@dft-labs.eu>
In-Reply-To: <79454.1415043356@critter.freebsd.dk>
References:  <201411030746.sA37kpPu037113@svn.freebsd.org> <54573AEE.9010602@freebsd.org> <54573B87.7000801@freebsd.org> <54573CD2.1000702@selasky.org> <20141103092132.GH29497@dft-labs.eu> <20141103100847.GK53947@kib.kiev.ua> <20141104045159.E1605@besplex.bde.org> <79454.1415043356@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Nov 03, 2014 at 07:35:56PM +0000, Poul-Henning Kamp wrote:
> --------
> In message <20141104045159.E1605@besplex.bde.org>, Bruce Evans writes:
> 
> >This optimization is probably minor, but reminds me of other syscalls
> >that would benefit using a single largish allocation up front:
> >- all vfs calls that start with namei().  They allocate PATH_MAX (1K)
> >   bytes and more.  An 8K stack has plently to spare after allocating
> >   1K.  However, if malloc() is used then the PATH_MAX limit shouldn't
> >   exist.   Only a limit to prevent denial of service is needed.
> 
> We should actually roll a new rev of all syscalls which take a path
> and have them pass strlen(path)+1 into the kernel.
> 
> That would allow both precise allocation and faster copyin, followed
> by a check that the last byte is (still) a NUL.
> 

I think we can speed up things on amd64 no problem without affecting
userspace.

amd64's copyinstr (and most likely all others) copy byte by byte. What
we can do is copy word size and fall back to byte by byte on page fault.
Ten on each iteration check if 0 was encountered.

Maybe there will be a way of doing it in even in C without much hassle.

-- 
Mateusz Guzik <mjguzik gmail.com>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141104053520.GA4032>