From: Karsten Wiese <fzu@wemgehoertderstaat.de>
To: Robert Hancock <hancockr@shaw.ca>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [RFC/PATCH] 2.6.24-rcx: Make sys_poll() wait at least timeout ms
Date: Wed, 19 Dec 2007 13:55:25 +0100 [thread overview]
Message-ID: <200712191355.25993.fzu@wemgehoertderstaat.de> (raw)
In-Reply-To: <4768820E.9050700@shaw.ca>
Am Mittwoch, 19. Dezember 2007 schrieb Robert Hancock:
> Karsten Wiese wrote:
> > Am Mittwoch, 19. Dezember 2007 schrieb Robert Hancock:
> >> That seems fishy. What is your value of HZ and what is the timeout value
> >> that was passed in the bad case?
> >
> > HZ set to 250, timeout to 4ms.
> > Time spent in poll() taken by clock_gettime(CLOCK_MONOTONIC, &time)
> > before and after poll()call: i.e 62us.
> > Time measured with hpet gave 166us once.
>
> msecs_to_jiffies (kernel/time.c) has this:
>
> #if HZ <= MSEC_PER_SEC && !(MSEC_PER_SEC % HZ)
> /*
> * HZ is equal to or smaller than 1000, and 1000 is a nice
> * round multiple of HZ, divide with the factor between them,
> * but round upwards:
> */
> return (m + (MSEC_PER_SEC / HZ) - 1) / (MSEC_PER_SEC / HZ);
>
> With HZ=250 and m=4 this gives 7/4 or only 1 jiffy, which is not more
> than 4ms, but if we are already at near the end of the current jiffy it
> could be much less than that (potentially almost no time at all).
>
> Maybe we could convert poll to use a hrtimer for this instead?
That wouldn't fix configs without hrtimers.
The linux manpage reflects current behaviour:
from man2/poll.2.gz
"The timeout argument specifies an upper limit on the time for which
poll() will block, in milliseconds."
To achieve "at least" timeouts we'd have to add a jiffy's ms to the
timeout in userspace.
I'd like to let sys_poll() behave according to posix's manpage:
from man3p/poll.3p.gz
"poll() shall wait at least timeout milliseconds"
Thats easier to specify in userspace. No need to know the running kernel's
HZ.
Above posix/linux difference also shows in select() manpages.
epoll_wait() (linux only) manpage also says "maximum time of timeout"
A more complete patch would tweek (p)poll (p)select and epoll_(p)wait.
There are possibly more syscalls affected that I'm not aware off.
Is there upstream interest?
Karsten
next prev parent reply other threads:[~2007-12-19 12:55 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.QbT8/KZb1MTA5+n7SD6kFi6mqso@ifi.uio.no>
2007-12-19 0:01 ` Robert Hancock
2007-12-19 1:06 ` Karsten Wiese
2007-12-19 2:29 ` Robert Hancock
2007-12-19 12:55 ` Karsten Wiese [this message]
2007-12-18 17:31 Karsten Wiese
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=200712191355.25993.fzu@wemgehoertderstaat.de \
--to=fzu@wemgehoertderstaat.de \
--cc=hancockr@shaw.ca \
--cc=linux-kernel@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
all inboxes | Powered by JetHome®