Re: Bad Network SIGIO on Linux-2.4.19

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 7 Oct 2002, David S. Miller wrote:

>    From: "Richard B. Johnson" <root@chaos.analogic.com>
>    Date: Mon, 7 Oct 2002 09:12:13 -0400 (EDT)
>    
>    If you log-in over the network, so that a socket is being used,
>    it will print HELP!!!!!!!  continuously on the screen because
>    it is continually being signalled that I/O is possible instead
>    of being signaled only when things change. 
> 
> First, 2.4.19 did not change the SIGIO behavior of TCP.
> 
> Second, SIGIO is sent any time new write/read space is made available
> and that space exceeds some "wakeup threshold".  SIGIO is also sent
> when an error condition is created.  This is necessary to avoid races
> and has been the algorithm for some time in 2.3.x/2.4.x
> 
> Any "chatty" protocol like telnet or sshd is going to generate
> a ton of SIGIO's for POLL_OUT especially.  Chatty protocols should
> not make use of SIGIO for this reason if they care about performance.
> 
> Third, your program is buggy because what you're getting SIGIO's for
> is POLL_OUT or POLL_ERR, checking only POLL_IN is insufficient.  Every
> time a write goes out the socket, or an ACK is finished being
> transmitted by a device, socket write space is recovered and a SIGIO
> is going to go out if the write space exceeds some threshold.
> 
> This behavior is not a bug.
> 

This behavior is a horrific bug that did not exist in any Linux or
Unix I've used before 2.4.19 and, I beg to differ, 2.4.19 does certainly
change the behavior because that's exactly how I discovered it. If a
signal is sent to a process every time space is available for output,
this represents a tremendous buggy overhead which cannot be tollerated.

This bug did not exist before 2.2.19 and it does not exist on my Suns

Script started on Mon Oct  7 09:36:09 2002
# rlogin hal
Password: 
Last login: Mon Oct  7 09:30:58 from chaos
Sun Microsystems Inc.	SunOS 5.5.1	Generic	May 1996
# sh input.sh
Waiting for input.........Got out of pause
Exit okay, cleaning up...
Done!
#^D
# rlogin: connection closed.
# exit
exit

Script done on Mon Oct  7 09:36:52 2002


Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
The US military has given us many words, FUBAR, SNAFU, now ENRON.
Yes, top management were graduates of West Point and Annapolis.

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux