Performance Adjustments: Silly Frames and poll() timeout
David C Niemi <[email protected]> Mon, 5 Apr 2004 15:04:24 -0400 (EDT)
| Newsgroups | gmane.network.beep.beepcore.c.general |
|---|---|
| Message-ID | <[email protected]> |
I have done some benchmarking, and found that silly frames sap 40% of the throughput I get in transferring large messages (in other words, eliminating silly frames improves throughput by 60%). So eliminating silly frames is not just an academic exercise. I also noticed that I was seeing rather long latencies, up to 700+ msec, as if everything was getting batched up and sent once about every 3/4 sec. I noticed a poll() call in threaded_os/transport/bp_fpollmgr.c:IW_fpollmgr_fds() with a number of milliseconds that was set to "3 * pn->size" (pn is the POLL NODE pointer). This seems to be a rather strange assumption, and I found that it was translating to 768 milliseconds. When I cut this down to just a few milliseconds, the latency of small messages drops by more than an order of magnitude, down to a few tens of milliseconds. It seems to me something is going wrong here, or the poll() call would not even need to reach its timeout. Any ideas? Also oddly, my silly frame cure combined with a short poll() interval sometimes causes stalls. I wonder whether perhaps something else is waiting to happen and cannot because the pn->lock is locked during the poll() call. Like something that is trying to set some pollfds, perhaps, as a new message is being worked with. ------------------------------------------------------- -- David C. Niemi Adeptech Systems, Inc. -- -- Reston, Virginia, USA http://www.adeptech.com/ -- ------------------------------------------------------- ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click