From: "Dan Maas" <dmaas@dcine.com>
To: "Michael Lindner" <mikel@att.net>, "Chris Wedgwood" <cw@f00f.org>
Cc: <linux-kernel@vger.kernel.org>
Subject: Re: PROBLEM: select() on TCP socket sleeps for 1 tick even if data available
Date: Sat, 20 Jan 2001 04:41:32 -0500 [thread overview]
Message-ID: <01da01c082c5$2c155e60$0701a8c0@morph> (raw)
In-Reply-To: <fa.nc2eokv.1dj8r80@ifi.uio.no> <fa.dcei62v.1s5scos@ifi.uio.no> <015e01c082ac$4bf9c5e0$0701a8c0@morph> <3A69361F.EBBE76AA@att.net> <20010120200727.A1069@metastasis.f00f.org> <3A694357.1A7C6AAC@att.net>
What kernel have you been using? I have reproduced your problem on a
standard 2.2.18 kernel (elapsed time ~10sec). However, using a 2.4.0 kernel
with HZ=1000, I see a 100x improvement (elapsed time ~0.1 sec; note that
increasing HZ alone should only give a 10x improvement). Perhaps the
scheduler was fixed in 2.4.0?
2.2.18 very definitely has some scheduling anomalies. In your benchmark,
select() or poll() takes 10ms, as can be observed with strace -T. Skipping
the select() and blocking in read() gives the same behavior. This leads me
to believe the scheduler is at fault, and not select(), poll(), or read().
When run without strace, 2.4.0 appears to have no problems with your
benchmark. Elapsed time is 0.1 sec -- this may be the full potential of my
machine (PII/450). Removing select() and blocking in read() results in a
further improvement, to 0.07 sec.
Strace disturbs the behavior of 2.4.0 in strange ways. Running the benchmark
under strace with 2.4.0 causes the scheduler delays to return -- ~1ms delays
appear in select() or write(). This is confusing - it appears that context
switches can happen inside write() as well as select(), a result I don't
understand at all (the socket buffers never completely fill since you only
write 1000 bytes to each one).
Other notes: poll() behaves same as select(). Using the SCHED_FIFO class and
mlockall() has no effect on this benchmark. Setting the sockets non-blocking
also has no effect.
I wish I had the Linux Trace Toolkit handy; it would give a much better idea
of what's going on than strace...
Dan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2001-01-20 9:38 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.nc2eokv.1dj8r80@ifi.uio.no>
[not found] ` <fa.dcei62v.1s5scos@ifi.uio.no>
[not found] ` <015e01c082ac$4bf9c5e0$0701a8c0@morph>
2001-01-20 6:54 ` PROBLEM: select() on TCP socket sleeps for 1 tick even if data available Michael Lindner
2001-01-20 7:07 ` Chris Wedgwood
2001-01-20 7:46 ` Michael Lindner
2001-01-20 21:58 ` Edgar Toernig
2001-01-21 0:35 ` Dan Maas
2001-01-21 0:34 ` Chris Wedgwood
2001-01-21 1:22 ` Michael Lindner
2001-01-21 1:29 ` David Schwartz
2001-01-21 3:20 ` Michael Lindner
2001-04-09 14:54 ` Stephen D. Williams
2001-04-09 19:16 ` James Antill
2001-04-10 18:29 ` Stephen D. Williams
2001-04-10 20:25 ` James Antill
2001-04-11 21:03 ` Stephen D. Williams
2001-04-12 0:09 ` James Antill
2001-01-24 20:31 ` Boris Dragovic
[not found] ` <3A694357.1A7C6AAC@att.net>
2001-01-20 9:41 ` Dan Maas [this message]
2001-01-20 17:26 ` Michael Lindner
2001-01-24 23:56 Bernd Eckenfels
-- strict thread matches above, loose matches on Subject: below --
2001-01-20 10:53 Bernd Eckenfels
2001-01-19 20:47 Michael Lindner
2001-01-19 23:20 ` David Schwartz
2001-01-20 2:30 ` Michael Lindner
2001-01-20 3:27 ` David Schwartz
2001-01-20 4:37 ` Michael Lindner
2001-01-20 12:26 ` Martin MaD Douda
2001-01-20 11:39 ` Bjorn Wesen
2001-01-19 23:31 ` Chris Wedgwood
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='01da01c082c5$2c155e60$0701a8c0@morph' \
--to=dmaas@dcine.com \
--cc=cw@f00f.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikel@att.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