public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: David Mosberger <davidm@napali.hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: [Linux-ia64] fsyscall infrastructure finished (hopefully... ;-)
Date: Sat, 31 May 2003 00:03:09 +0000	[thread overview]
Message-ID: <marc-linux-ia64-105590723706094@msgid-missing> (raw)

Now that there is a streamlined syscall path (thanks to Rohit,
Fenghua, & Asit's work), it was time to finish the fsyscall
infrastructure such that it avoids using the "break" instruction when
entering the kernel.  I just pushed the necessary code into the
linux-ia64-2.5 tree.

The net result is that epc-based stubs are now always faster, even if
there is no light-weight systemcall handler.  In a nut-shell:

 - null system call with break-based stub:		285 cycles
 - null system call with epc-based stub (fsyscall):	266 cycles
 - null system call with light-weight handler:		 50 cycles

 - gettimeofday with break-based stub:			491 cycles
 - gettimeofday with epc-based stub (fsyscall):		466 cycles
 - gettimeofday with light-weight handler:		136 cycles

Relative to older kernels:
						original w/Rohit's  current
						2.5.69   patch	    2.5.69

 - null system call with break-based stub:	338 cyc  282 cyc    285 cyc
 - null system call with light-weight handler:	 49 cyc    n/a       50 cyc
 - gettimeofday with break-based stub:		544 cyc  491 cyc    491 cyc
 - gettimeofday with light-weight handler:	130 cyc    n/a      136 cyc

So, by and large, the final version should be as good or substantially
better than what was there before.

I'm quite certain there is more tuning that could be done in the
syscall path, but what's there now is reasonably straightforward and
performs rather well.  A nice thing about the current setup is that
syscall restart works _exactly_ the same, independent of whether the
(heavy-weight) system call was entered via break or via epc.  This
saves a substantial amount of complexity.

I also added a new boot command line option.  If you boot with
"nolwsys", then the kernel won't be using light-weight system-call
handlers at all.  This is primarily useful for performance
measurements, but the code to support it is so trivial that I left it
in there.

Caveat: the current linux-ia64-2.5 breaks execve to ia32 tasks. It'll
get fixed some day.  In the meantime, sorry about that.

Enjoy,

	--david


                 reply	other threads:[~2003-05-31  0:03 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-linux-ia64-105590723706094@msgid-missing \
    --to=davidm@napali.hpl.hp.com \
    --cc=linux-ia64@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox