All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Furniss <andy.furniss@dsl.pipex.com>
To: lartc@vger.kernel.org
Subject: Re: [LARTC] patch: HTB update for ADSL users
Date: Sat, 19 Jun 2004 00:33:08 +0000	[thread overview]
Message-ID: <40D389C4.6030305@dsl.pipex.com> (raw)
In-Reply-To: <40D2D5CB.2000804@wildgooses.com>

Ed Wildgoose wrote:
> 
>>  After a bit of messing about -
>> Patch would't apply and I couldn't see why. Then did it by hand and 
>> had to move vars to top of function to get it to compile.
> 
> 
> 
> Hmm, perhaps it got corrupted because of the change in line endings when 
> I pasted it in on a windows machine?  Piece of cake to apply manually.  
> If I can get some PPoE settings then I will make a more generic patch 
> and stick it on a website.
> 
> Can you paste the compile errors and tell me versions of gcc please?  I 
> can't see any probs with that code though?  (They will be params passed 
> in later anyway)

GCC 2.95.3 - Moved the var declarations back after the

while ((mtu>>cell_log) > 255)
                        cell_log++;
        }

and again get -

tc_core.c: In function `tc_calc_rtable':
tc_core.c:65: parse error before `int'
tc_core.c:77: `proto_overhead' undeclared (first use in this function)
tc_core.c:77: (Each undeclared identifier is reported only once
tc_core.c:77: for each function it appears in.)
tc_core.c:78: `encaps_data_sz' undeclared (first use in this function)
tc_core.c:78: `encaps_cell_sz' undeclared (first use in this function)
make[1]: *** [tc_core.o] Error 1

Works if I move them to the top of the function - maybe the formatting 
is messed up (I copy n pasted).

> 
>> I set my uprate to 280kbit in TC = 286720 bit/s I am synced at 288000 
>> - as you probably are, in UK, on what BT call 250/500 and isps call 
>> 256/512. I left a bit of slack just to let buffer empty if the odd 
>> packet extra slips through. FWIW maxing downlink (576000 for me) will 
>> probably mess up - you need to be slower or you don't get to build up 
>> queues and will often be using your isp's buffer.
>>
>> I've been maxing uplink with bt for the last couple of hours and it's 
>> working fine -
> 
> 
> 
> Yes, excellent isn't it!  I tested download rates (bearing in mind the 
> difficulty of controlling those, and could get within a sliver of full 
> bandwidth before the rate rises!

I still think that you need to throttle back on down rates - when really 
full you may find that new/bursty connections mean that you loose 
control of the queue. Of course having twice as much bandwidth always 
helps.


> 
> I see a two stage rise in ping times.  First it stays on 30ms, then it 
> rises to 60ms-90ms, then it queues like crazy.  Interesting the kind of 
> three step ramp up.  I have a hunch that packets don't arrive smoothly 
> and queuing occurs at the ISP end (once we get near the limit) even 
> though the average rate is below the max rate...?  (ie from time to time 
> you start to see two packets ahead of you instead of just one)

I am only testing uploads - looking at some more pings, it does appear 
that they are not quite as random as they were - but apart from the odd 
double dequeue (in a way I think you can expect this with HTB using 
quanta/DRR rather than per byte), the max is right. I suspect this is 
nothing to do with ISP/Teleco end. I could actually do slightly better 
on my latency, but I am running at 100Hz - and I can tell with pings - 
they slowly rise then snap down by 10ms. This is nothing to do with TC, 
I normally run 500 but forgot to set it for this kernel.


> 
>> 100 packets transmitted, 100 packets received, 0% packet loss
>> round-trip min/avg/max/stddev = 15.586/44.518/67.984/13.367 ms
>>
>> It's just as it should be for my MTU.
> 
> 
> 
> Hmm, what's your MTU?  Those numbers look extremely low for 1500 byte 
> packets (at least if you have a little downlink congestion as well?)
> 

My downlink is clear, I am using 1478 MTU (so I don't waste half a cell 
per packet). Just did another hundred to my first hop -

100 packets transmitted, 100 packets received, 0% packet loss
round-trip min/avg/max/stddev = 16.661/43.673/70.841/14.634 ms

>>When I get some time later I'll start hitting it with lots of small 
>> packets aswell.

Been going for 7 hours now - I started a couple of games and 60 small 
pps didn't cause any problems.

> 
> 
> 
> I have a 1meg downstream with 256 upstream, and I turned on bittorrent 
> to try and flog the connection a bit.  Upstream was maxed out, but 
> downstream was only half full.  However, ping times are 20-110.  I think 
> they ought to be only 20-80 ish, and I'm trying to work out why there is 
> some excess queuing (1500 ish mtu).

I worked out once bitrate latency is about 44ms for 1478. Your figures 
look like you may be sending packets in pairs - or have you already done 
the tweak which fixed this for me.

set HTB_HYSTERESIS 0 in net/sched/sch_htb.c


   My QOS is based on the the
> (excellent) script from:
> http://digriz.org.uk/jdg-qos-script/

Yea it's nice - mine is a modified version.

> 
> Basically, HTB in both directions.  RED on the incoming stream (works 
> nicely).  Outgoing classifies into 10 buckets, and ACK + ping are 
> definitely going out ok in the top prio bucket, and the rest is going 
> out in the prio 10 bucket....  But still these high pings...  Hmm
> 

I did find in the worst case I could do better than RED (not much 
though) and now I do per IP for bulk so Its harder to get the right 
settings with more than one RED, that may have different bandwidths at 
any given time. I also reduced the number of classes so each could have 
a higher rate.

Andy.

> 
> I would be interested to hear if anyone has a CBQ based setup and can 
> tell me if that patch works for them?  Or even whether it works on the 
> incoming policer properly?
> 
> It looks as though this is an adequate way to tackle the problem.  The 
> alternative would be to hook into the enqueue side of the qdisk, 
> calculate a new size value then and fix the code to refer to this value 
> from then on.  It would be quite invasive though because it modifies 
> kernel headers.  I would need someone who understands the scheduler in 
> more detail to guide me as to whether it was neccessary
> 
> Ed W
> 
> 


_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

  parent reply	other threads:[~2004-06-19  0:33 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-18 11:45 [LARTC] patch: HTB update for ADSL users Ed Wildgoose
2004-06-18 21:43 ` Andy Furniss
2004-06-18 23:00 ` Ed Wildgoose
2004-06-19  0:33 ` Andy Furniss [this message]
2004-06-19 12:29 ` Ed Wildgoose
2004-06-19 12:54 ` syrius.ml
2004-06-19 13:40 ` Ed Wildgoose
2004-06-20  7:27 ` Jason Boxman
2004-06-20 12:31 ` Andy Furniss
2004-06-20 13:16 ` Ed Wildgoose
2004-06-20 16:46 ` Ed Wildgoose
2004-06-20 17:10 ` Ed Wildgoose
2004-06-21  6:08 ` Jason Boxman
2004-06-21 10:04 ` Ed Wildgoose
2004-06-22  0:38 ` Damion de Soto
2004-06-22  5:15 ` Jason Boxman
2004-06-22  9:54 ` Ed Wildgoose
2004-06-22 10:00 ` Ed Wildgoose
2004-06-22 17:16 ` Jason Boxman
2004-06-22 21:52 ` Jason Boxman
2004-06-23 12:52 ` ThE LinuX_KiD
2004-06-23 14:00 ` Ed Wildgoose

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=40D389C4.6030305@dsl.pipex.com \
    --to=andy.furniss@dsl.pipex.com \
    --cc=lartc@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.