Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Sep 2011 22:10:27 +0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        Alexander Motin <mav@freebsd.org>, freebsd-current@freebsd.org
Subject:   Re: ath / 802.11n performance issues and timer code
Message-ID:  <CAJ-Vmom721ndMmSihA=58Fux-JBWHo1rA82FXYa__mmaRMW=tQ@mail.gmail.com>
In-Reply-To: <201109260917.44236.jhb@freebsd.org>
References:  <CAJ-VmomZyDJV62yCQOvG=UB6H4wfz9=3_cWzEL7vWAA14TCyYA@mail.gmail.com> <4E7D6700.4080302@FreeBSD.org> <CAJ-Vmo=kScoove4_dvj_-LS%2BWnWhF4aWU9FrWF4=5kYr06-AoA@mail.gmail.com> <201109260917.44236.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 26 September 2011 21:17, John Baldwin <jhb@freebsd.org> wrote:
> On Sunday, September 25, 2011 5:48:31 am Adrian Chadd wrote:
>> Nope, it has the opposite effect:
>>
>> * Increased latency may make aggregation better (for TX) but it limits
>> throughput because TCP senses a latency increase;
>
> I suspect this matters more. =A0Have you tried comparing UDP throughput i=
n the
> two cases?

Yes, UDP performance from the MIPS boards (running iperf) is just
plain silly and low.

It's better from the i386 based eeepc (I can get around 200mbit before
things croak it, but I _should_ be able to schedule ~ 250mbit with
maximum aggregation and no airtime errors / retries, which I _can_
achieve in controlled conditions.)

I haven't yet dug into that. It may be related.

> One behavioral difference of a periodic timer vs a deadline timer is that=
 if
> you ask to delay for "1 clock tick", that can be anywhere from 0us to 100=
0us
> (with hz =3D=3D 1000) when using the periodic timer (because you can set =
the
> callout at any time within a tick, but the callout will fire at the start=
 of
> the next tick). =A0However, for a deadline timer, the TCP timer will alwa=
ys fire
> 1000us after you set the timer.

Right. Hm, what about scheduling in general though? Ie, if I'm
scheduling a taskqueue run, the taskqueue caller does:

* lock queue
* schedule next task queue
* call wakeup_one

Which should wake up a/the taskqueue thread in question and have it
immediately run the next task on the queue. The taskqueue doesn't have
any form of timer/callout; it's just a "submit this to get run." When
will it be run? I hope not at the next tick, not if the CPU is free.


Adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmom721ndMmSihA=58Fux-JBWHo1rA82FXYa__mmaRMW=tQ>