9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: ron minnich <rminnich@gmail.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] syscall 53
Date: Mon, 19 May 2014 13:54:30 -0700	[thread overview]
Message-ID: <CAP6exY+-2zG_6P+sM0SCF-sS7KT=T8qQo6o8C-dUBn_DPorZXg@mail.gmail.com> (raw)
In-Reply-To: <3a6dcbf0845989d60e627ad4e5df4313@ladd.quanstro.net>

I've been watching the discussion but was hesitant to jump in. But
somebody asked me to say a thing or two.

We put the nsec() system call into NxM because, any way you cut it, it
provides better accuracy than the open/read/close path, particularly
when there's lots of stuff running, and the apps we care about need
that improved precision. Yes, this is measured. Just saying 'use tsc'
ignores the lack of portability of that mechanism, as well as the
other issues that have been found over the years with time registers
(core tsc synchronization, effects from power management, interaction
with virtualization, and so on). You don't have to look very long to
see that the work the kernel does for the three-system-call version is
far higher than the simple nsec system call -- yep, looks simple in
the library, and, nope, lots more going on in the kernel, more than 3x
as much. There are a few uses that break the 'it should look like a
file' model and I think this is one of them. Getting accurate,
jitter-free time is essential to making good decisions in many cases.

Nevertheless, I had not intended to push on the system call idea very
hard. As long as people were happy, there did not seem to be much
reason. So I stopped worrying about it over a year ago.

A recent discussion on golang-dev provided the final impetus: it was
recommended that if the nsec call were available on Plan 9, the Go
ports should use it. That was enough for me to put in a request for
one more review of the patch (which patch I did not put in, BTW), and
the good folks at BL felt the idea was OK, so in it went.

So it's in. It's an architecture neutral kernel interface get time in
nanoseconds in a which-core-are-you-on independent manner. It can be
made faster: on NxM the plan was to put a very fast path in the system
call assembly and return the nsec in %rax, and do the memmove in user
mode, so as to avoid any validaddr or address alignment overhead. A
true system call allows optimizations that the open/read/close
interface can not.

I'm sorry to hear that it caused trouble. That said, the problems were
due (IMHO) to a limitation in the update mechanism, not to the
inclusion of a new system call. The limitation is rarely encountered
because the situation is rarely encountered. The right way to update
the system when the kernel adds a new system call is pretty clear:
kernel first. Updating binaries before kernels is clearly wrong and
shows something could be done better. I think it's a good time to
review how the update path works and fix it.

So, it's good for Go and anything else which wants reasonable accuracy
on time without having to muck with architecture-dependent registers.
It's trivial to add. We found it helped a lot on NxM. The quality of
the results you get are hard if not impossible to equal with the
current interface. The old path still works. I think we're all going
to be ok.

ron



  reply	other threads:[~2014-05-19 20:54 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-17 19:11 goo
2014-05-17 21:17 ` Jeff Sickel
2014-05-17 22:21   ` Jeff Sickel
2014-05-17 22:45   ` Skip Tavakkolian
2014-05-18  4:34     ` lucio
2014-05-18  8:29       ` David du Colombier
2014-05-18 15:28         ` Jeff Sickel
2014-05-18 15:32         ` Skip Tavakkolian
2014-05-18 15:34           ` Skip Tavakkolian
2014-05-18 15:38           ` Jeff Sickel
2014-05-18 16:03             ` Skip Tavakkolian
2014-05-18 22:55               ` Skip Tavakkolian
2014-05-19  1:54                 ` erik quanstrom
2014-05-19  2:27                   ` Jeff Sickel
2014-05-19  4:18                     ` lucio
2014-05-19 12:50                       ` erik quanstrom
2014-05-19 14:01                         ` lucio
2014-05-19 16:24                           ` erik quanstrom
2014-05-19 16:54                             ` erik quanstrom
2014-05-19 17:16                               ` lucio
2014-05-19 17:22                                 ` erik quanstrom
2014-05-19 17:13                             ` lucio
2014-05-19 17:25                               ` erik quanstrom
2014-05-19 19:50                                 ` Bakul Shah
2014-05-19 19:59                                   ` erik quanstrom
2014-05-19 20:54                                     ` ron minnich [this message]
2014-05-19 21:30                                       ` Charles Forsyth
2014-05-19 21:41                                         ` ron minnich
2014-05-19 23:02                                           ` Kurt H Maier
2014-05-19 23:06                                             ` andrey mirtchovski
2014-05-19 23:12                                               ` Kurt H Maier
2014-05-19 23:17                                                 ` andrey mirtchovski
2014-05-20  0:09                                                   ` Jeff Sickel
2014-05-19 21:34                                       ` Anthony Sorace
2014-05-20 14:04                                         ` erik quanstrom
2014-05-20 16:41                                           ` ron minnich
2014-05-20 17:14                                             ` erik quanstrom
2014-05-20 18:32                                             ` Kurt H Maier
2014-05-20 19:49                                               ` ron minnich
2014-05-20 19:54                                                 ` erik quanstrom
2014-05-20 20:06                                                 ` Kurt H Maier
2014-05-21 10:23                                                 ` hiro
2014-05-20 20:33                                             ` Jeff Sickel
2014-05-21  1:37                                               ` Skip Tavakkolian
2014-05-21 15:40                                                 ` lucio
2014-05-21 16:25                                                   ` erik quanstrom
2014-05-21 16:56                                                     ` Skip Tavakkolian
2014-05-21 20:05                                                       ` Steffen Nurpmeso
2014-05-22  0:13                                                       ` Bakul Shah
2014-05-22  3:25                                                         ` [9fans] CMS/MMS (VCS/SCM/DSCM) [was: syscall 53] Jeff Sickel
2014-05-22  5:03                                                           ` lucio
2014-05-22  5:07                                                           ` lucio
2014-05-22 13:29                                                             ` erik quanstrom
2014-05-22 13:50                                                               ` lucio
2014-05-22  5:11                                                           ` Bakul Shah
2014-05-22  5:26                                                             ` lucio
2014-05-22 12:57                                                               ` erik quanstrom
2014-05-22 13:43                                                                 ` lucio
2014-05-22 13:57                                                                   ` erik quanstrom
2014-05-22  5:28                                                             ` lucio
2014-05-22  5:36                                                             ` lucio
2014-05-22  6:00                                                               ` Bakul Shah
2014-05-22  6:18                                                                 ` lucio
2014-05-22 12:45                                                                 ` erik quanstrom
2014-05-22 20:05                                                                   ` Bakul Shah
2014-05-22 20:11                                                                     ` erik quanstrom
2014-05-23 20:07                                                                     ` Steve Simon
2014-05-22  9:52                                                               ` Aram Hăvărneanu
2014-05-22 10:29                                                                 ` lucio
2014-05-22 10:46                                                                   ` Aram Hăvărneanu
2014-05-22 13:03                                                             ` erik quanstrom
2014-05-22  5:23                                                           ` Skip Tavakkolian
2014-05-22  5:47                                                             ` lucio
2014-05-22 12:49                                                               ` erik quanstrom
2014-05-22  7:49                                                           ` Alex Jordan
2014-05-22 12:49                                                             ` Riddler
2014-05-22  3:43                                                       ` [9fans] syscall 53 Kurt H Maier
2014-05-22  5:12                                                         ` lucio
2014-05-22 16:15                                                           ` Kurt H Maier
2014-05-22  5:36                                                         ` Bakul Shah
2014-05-22 10:50                                                           ` Aram Hăvărneanu
2014-05-21 17:01                                                     ` lucio
2014-05-21 17:41                                                       ` erik quanstrom
2014-05-21 19:08                                                         ` lucio
2014-05-21 20:36                                                           ` erik quanstrom
2014-05-22  4:46                                                             ` lucio
2014-05-22 13:18                                                               ` erik quanstrom
2014-05-22 13:39                                                                 ` lucio
2014-05-22 14:22                                                                   ` Riddler
2014-05-22  4:54                                                             ` lucio
2014-05-22 13:07                                                               ` erik quanstrom
2014-05-21  1:21                                             ` Skip Tavakkolian
2014-05-21 15:36                                               ` lucio
2014-05-21 15:57                                                 ` erik quanstrom
2014-05-21 17:03                                                   ` lucio
2014-05-21 16:50                                                 ` Kurt H Maier
2014-05-21 18:02                                                   ` hiro
2014-05-20 17:05                                         ` Bakul Shah
2014-05-20 17:28                                           ` erik quanstrom
2014-05-19 17:26                               ` Charles Forsyth
2014-05-19 17:29                                 ` erik quanstrom
2014-05-19 19:15                                   ` Aram Hăvărneanu
2014-05-19 19:44                                     ` Charles Forsyth
2014-05-19 20:51                                     ` erik quanstrom
2014-05-20  3:52                                     ` cinap_lenrek
2014-05-19  4:15                   ` lucio
2014-05-18  0:34 ` erik quanstrom
  -- strict thread matches above, loose matches on Subject: below --
2014-05-21 18:26 sl
2014-05-21 18:31 ` erik quanstrom
2014-05-18  7:35 goo
2014-05-17 16:54 goo
2014-05-17 13:53 goo
2014-05-17 14:56 ` erik quanstrom
2014-05-17 10:23 goo
2014-05-17 12:11 ` erik quanstrom
2014-05-17 12:23   ` David du Colombier
2014-05-17 12:12 ` erik quanstrom

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='CAP6exY+-2zG_6P+sM0SCF-sS7KT=T8qQo6o8C-dUBn_DPorZXg@mail.gmail.com' \
    --to=rminnich@gmail.com \
    --cc=9fans@9fans.net \
    /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;
as well as URLs for NNTP newsgroup(s).