public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: kuznet@ms2.inr.ac.ru
Cc: linux-kernel@vger.kernel.org, davem@redhat.com, ak@suse.de
Subject: Re: 2.4 delayed acks don't work, fixed
Date: Tue, 18 Mar 2003 23:19:06 +0100	[thread overview]
Message-ID: <20030318221906.GA30541@dualathlon.random> (raw)
In-Reply-To: <200303182013.XAA05239@sex.inr.ac.ru>

On Tue, Mar 18, 2003 at 11:13:42PM +0300, kuznet@ms2.inr.ac.ru wrote:
> Hello!
> 
> > what is the point of this:
> > 
> > #define TCP_DELACK_MAX	((unsigned)(HZ/5))	/* maximal time to delay before sending an ACK */
> 
> It is maximal delack for generic (transactional) traffic. It is not used
> in stream mode. Big clamp of 500msec is hardwired to tcp_send_delayed_ack,
> I simply was not able to invent name for it.
> 
> > and finally by the delack timer (if it was set to 1):
> 
> It is the place. Session stops to be tranasaction, when we
> experience the first delack timeout.

In a normal internet connection you will always get packet loss or
timeouts in the middle of any big transfer.

however as far as the delacks can be reactivated w/o waiting dozen of
packets it's ok.

> > tcp_enter_quickack_mode is called every time we have to disable delayed
> > acks like when we send duplicate acks or when there's packet reordering
> > or whatever similar error.
> 
> Also correct. Delacks are disabled while recovery periods.

sure, delacks must be disabled until the ofo queue is empty again.

> > how can 'pingpong' relate to the direction of the stream? I see no
> > relation at all.
> 
> It is set, when we see traffic in both directions. It is cleared
> when we see the first delack timeout. Logically, it should be cleared
> when we do not see data flowing in opposite direction for some time,
> but as soon as we do not see delack timeouts, it does not matter.
> 
> 
> > since it's never re-activated,
> 
> If you do not see any delack timeouts, clearing pingpong does not make
> difference.

I see seldom delack timeouts during streming because the streamer simply
waits, the bandwidth of the link is higher than the streamer one

> > this is only true if pingpong was just 0. but if pingpong is 0 it won't
> > send delayed acks in the first place because quick will very rarely get
> > down to 0.
> 
> Stop here. quick quickly must become zero. In your case, when window
> is one packet, it happens exactly after the first packet.

there must be something that forbids it because I get immediate acks
instead.

> 
> I am confused. Please, check.
> 
> 
> >             segments there SHOULD be an ACK for at least every second
> >             segment.
> 
> SHOULD, not MUST. :-)
> 
> Jokes apart, it is simply wrong statement. Right one reads: "when right
> egde of window advanced by at least two segments". It is supposed to provide
> ACK clock, but when window stalled, such acks are pure abuse, they are simply
> ignored by clocking mechanism.
> 
> 
> > 			if (eaten) {
> > 				if (tcp_in_quickack_mode(tp)) {
> > 					tcp_send_ack(sk);
> > 				} else {
> > 					tcp_send_delayed_ack(sk);
> > 				}
> > 
> > it's not checking if more than one segment arrived.
> 
> "eaten" is special path, it happens when this function is subroutine
> of tcp_recvmsg(), where the same code is executed upon return
> from the function.

so is the ack sent elsewhere if this was the third packet and there's a
window advance?

Andrea

  reply	other threads:[~2003-03-18 22:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-17  8:25 2.4 delayed acks don't work, fixed Andrea Arcangeli
2003-03-18 18:34 ` kuznet
2003-03-18 19:34   ` Andrea Arcangeli
2003-03-18 20:13     ` kuznet
2003-03-18 22:19       ` Andrea Arcangeli [this message]
2003-03-18 22:35         ` kuznet
     [not found]           ` <20030319002409.GI30541@dualathlon.random>
2003-03-19  0:37             ` David S. Miller
2003-03-19  0:58               ` Andrea Arcangeli
2003-03-19  1:33                 ` Help with patch for vesafbd support again? Kendall Bennett
2003-03-19  3:00                   ` Randy.Dunlap
2003-03-19 19:25                     ` Kendall Bennett
2003-03-19  1:55               ` 2.4 delayed acks don't work, fixed Andi Kleen
2003-03-19  2:02                 ` David S. Miller
2003-03-19 19:48                   ` Andrea Arcangeli

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=20030318221906.GA30541@dualathlon.random \
    --to=andrea@suse.de \
    --cc=ak@suse.de \
    --cc=davem@redhat.com \
    --cc=kuznet@ms2.inr.ac.ru \
    --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