From: Haakon Riiser <haakon.riiser@fys.uio.no>
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Busy-wait delay in qmail 1.03 after upgrading to Linux 2.6
Date: Tue, 20 Jan 2004 20:22:16 +0100 [thread overview]
Message-ID: <20040120192216.GA7685@s.chello.no> (raw)
In-Reply-To: <400D746D.7030409@colorfullife.com>
[Manfred Spraul]
> What drains the fifo?
> As far as I can see the fifo is filled by the write syscalls, and
> drained by chance if both the reader and the writer have closed their
> handles.
That's correct, and that was my intention since this is apparently
how it works in Qmail. Every time the listener's select() returns,
the FIFO is immediately close()d and the first thing the writer
does after writing it's single trigger byte is also to close() its
end of the FIFO.
>> for (;;) {
>> while ((fd = open("test.fifo", O_WRONLY | O_NONBLOCK)) < 0)
>> ;
>> gettimeofday(&tv1, NULL);
>> if (write(fd, &fd, 1) == 1) {
>>
> xxx now a thread switch
>
>> gettimeofday(&tv2, NULL);
>> fprintf(stderr, "dt = %f ms\n",
>> (tv2.tv_sec - tv1.tv_sec) * 1000.0 +
>> (tv2.tv_usec - tv1.tv_usec) / 1000.0);
>> }
>> if (close(fd) < 0) {
>> perror("close");
>>
>>
> If a thread switch happens in the indicated line, then the reader will
> loop, until it's timeslice expires - one full timeslice delay between
> the two gettimeofday() calls.
Exactly. But on 2.6, the delay between the two gettimeofday()
calls are sometimes up to 300 ms, which is 300 timeslices in
2.6, right? I have never observed more than _one_ timeslice
delay in 2.4.
> Running the reader with nice -20 resulted in delays of 200-1000 ms for
> each write call, nice 20 resulted in no slow calls. In both cases 100%
> cpu load.
But when the listener and the writer have the same nice value,
how is it possible to have a delay of 300 ms? Both the writer
and the listener are ready to run, so wouldn't a 300 ms delay
mean that the listener was given the CPU 300 times in a row?
--
Haakon
next prev parent reply other threads:[~2004-01-20 19:23 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20040120021353.39e9155e.akpm@osdl.org>
2004-01-20 18:33 ` Fw: Re: Busy-wait delay in qmail 1.03 after upgrading to Linux 2.6 Manfred Spraul
2004-01-20 19:22 ` Haakon Riiser [this message]
2004-01-20 19:45 ` Mike Fedyk
2004-01-20 5:51 Peter Maas
-- strict thread matches above, loose matches on Subject: below --
2004-01-13 21:09 Haakon Riiser
2004-01-13 21:51 ` Andrew Morton
2004-01-13 23:26 ` Haakon Riiser
2004-01-13 23:43 ` Andrew Morton
2004-01-14 0:07 ` Haakon Riiser
2004-01-14 11:29 ` Haakon Riiser
2004-01-20 0:46 ` Haakon Riiser
2004-01-13 23:46 ` Haakon Riiser
2004-01-14 0:06 ` Andrew Morton
2004-01-14 10:27 ` Giuliano Pochini
2004-01-14 11:20 ` Haakon Riiser
2004-01-15 0:12 ` Haakon Riiser
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=20040120192216.GA7685@s.chello.no \
--to=haakon.riiser@fys.uio.no \
--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