Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Apr 2007 05:39:33 +1000
From:      Peter Jeremy <peterjeremy@optushome.com.au>
To:        Howard Su <howard0su@gmail.com>
Cc:        current@freebsd.org, jbr@humppa.dk
Subject:   Re: Suggestions on Avoiding syscall Overhead
Message-ID:  <20070423193932.GA842@turion.vk2pj.dyndns.org>
In-Reply-To: <f126fae00704221639l68095de1ye7ce9ba3d921bf20@mail.gmail.com>
References:  <f126fae00704221639l68095de1ye7ce9ba3d921bf20@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--y0ulUmNC+osPPQO6
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 2007-Apr-22 16:39:58 -0700, Howard Su <howard0su@gmail.com> wrote:
>1. System wide global readonly page which will help on these syscalls:
>   gethostname,getdomainname,uname
>   help on importing sysenter as syscall entry point!!
>
>2. Per process Readonly page. (change will still through standard syscall)
>   help on the syscalls:
>   getuid, geteuid, getpid,getgid, getegid, getpgrp,

I do not believe that these syscalls are called frequently enough that
improving their efficiency will be measurable anywhere other than
microbenchmarks that specifically measure their speed.  I had a quick
look through syscall.h and didn't see any syscalls that were both used
often and were amenable to this approach.

Before spending much efford on implementing this shared-page approach,
I would suggest that you instrument syscall() to count the number of
syscalls by type see if any heavily used syscalls can be implemented
using this approach.

The comment was made elsewhere "if it's easy to do, do it anyway, even
if there's no measurable benefit".  I would strongly disagree with
this comment.  Any code that is added to FreeBSD requires ongoing
effort to maintain it - even if it's just waiting longer for the
system to compile.  Special casing some system calls means that those
system calls need special regression tests to ensure that they haven't
been broken somehow.  Unless there is some benefit, then don't bother
making the change.

FreeBSD does appear to have higher syscall overheads than (eg) Linux.
The best solution is to work on reducing this overhead in general
(trap handling and syscall(), rather than identifying a small subset
of syscalls and bypassing the syscall overhead for them.

--=20
Peter Jeremy

--y0ulUmNC+osPPQO6
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (FreeBSD)

iD8DBQFGLQt0/opHv/APuIcRAokOAJ45Uptsk3dqRhHIdUwpD4sllzQl/QCeLRi3
VZzZVHPdlpjE1zGpDpIj33Y=
=ehjZ
-----END PGP SIGNATURE-----

--y0ulUmNC+osPPQO6--



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