tcp-ip@ucbvax.ARPA (06/07/85)
From: bellcore!karn@BERKELEY (Phil R. Karn) It is true that TCP on 4.2 effectively does a push every time the user process does a write() system call. It really has no choice since there are no semantics by which the user can indicate a push in the write call. But it doesn't have to be a problem IF programs call the standard I/O library instead. Stdio tries to fill its 1K buffers completely before calling the system, and the user is given a push-like subroutine fflush() for when it is really needed. The only real offenders (besides character-at-a-time Telnet) are those few programs that insist on using the bare I/O system calls directly to write small amounts of data; they should be taken out and shot. They give lousy performance even when a network isn't involved. I'm still looking forward to the new version which is rumored to include John Nagle's transmission algorithms. Phil
tcp-ip@ucbvax.ARPA (06/07/85)
From: MILLS@USC-ISID.ARPA In response to the message sent Fri, 7 Jun 85 01:36:52 edt from bellcore!karn@Berkeley Phill, Please understand the "John Nagle algorithm" does not in itself represent a panacea, but only one of many detail-engineering issues involved in making TCP work well over widely ranging scenarios. That algorithm must be addressed in the context of a good ack policy. Experiments done here reveal the algorithm can result in very poor performance with some ack policies and can adversely affect performance in scenarios in the middle, so to speak, of the TELNET character-at-a-time and FTP spectrum. Simply stuffing the algorithm in the system blindly may exchange better performance at these extremes, which we ordinarily see first-hand, for poorer performance in the middle (e.g. mail), which chugs in the background slurping up resources we may not notice. Dave -------