* Re: [LARTC] ESFQ not so fair?
2006-04-12 19:26 [LARTC] ESFQ not so fair? Michał Margula
@ 2006-04-12 21:35 ` Andy Furniss
2006-04-12 21:43 ` Michał Margula
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Andy Furniss @ 2006-04-12 21:35 UTC (permalink / raw)
To: lartc
Micha³ Margula wrote:
> Hello!
>
> I am using since yesterday ESFQ instead of N HTB queues. It mostly
> works OK, but when somebody is using one single sesion (for example
> downloading file via FTP), it gets weird speed. For example it is 20
> kilobytes pres second, then drops down to 9, then 20 again, and then
> slowly to 0 and stops. But when using download accelererator of some
> kind or bittorrent client which uses many connections, speed seems to be
> stable.
>
> I am using esfq that way:
>
> qdisc add dev eth0 parent 1:4 handle 4:0 esfq perturb 600 hash
> fwmark divisor 13
> qdisc add dev eth1 parent 1:2 handle 2:0 esfq perturb 600 hash dst
> divisor 13
>
> On eth0 every IP is marked with different value by IPMARK module. On
> eth1 it is not necessary so I use dst hash. I have more values than 2^13
> so I can't use direct hash.
>
> Any ideas? Is it possible to use bigger divisor or algorithm is not
> designed to deal with bigger hash? Any ideas will be appreciated!
>
Corey Hickey changed his esfq to use jhash for dst/src/fw - copy of his
announce below.
Andy.
Corey Hickey wrote:
> In a recent thread on this list, Robert Kurjata provided me a patch
to add
> hashing by iptables mark to the Linux 2.4 version of ESFQ. Thanks to that
> contribution, I was able to easily add support to the 2.6 port I
maintain.
>
> I found out, however, that the existing hash algorithm results in a
lot of
> colllisions when the range of hashed values is small. The purturbation
> spreads the collisions out a little, but the result still wasn't very
> fair, especially when hashing only three fwmark values: 0, 1 and 2.
>
> So, I wrote an alternative hash function. It's quite simple, and as long
> as the range of input values is smaller than the hash table (default
1024,
> up to 16384), collisions will not happen at all. See the updated README
> file for more details.
>
> Home page:
> http://fatooh.org/esfq-2.6/
>
> Direct URL:
> http://fatooh.org/esfq-2.6/esfq-2.6.13.tar.gz
>
> README (also available in the tar.gz):
> http://fatooh.org/esfq-2.6/current/README
>
> Try it out, have fun, and if you find a bug or have a suggestion please
> send me an email.
>
> -Corey
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [LARTC] ESFQ not so fair?
2006-04-12 19:26 [LARTC] ESFQ not so fair? Michał Margula
2006-04-12 21:35 ` Andy Furniss
@ 2006-04-12 21:43 ` Michał Margula
2006-04-12 21:52 ` Patrick McHardy
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Michał Margula @ 2006-04-12 21:43 UTC (permalink / raw)
To: lartc
Andy Furniss napisa³(a):
>
> Corey Hickey changed his esfq to use jhash for dst/src/fw - copy of his
> announce below.
>
> Andy.
Thanks, but I am already using his patch :-). It happens with that
patch, I haven't tried original version at all.
--
Micha³ Margula, alchemyx@uznam.net.pl, http://alchemyx.uznam.net.pl/
"W ¿yciu piêkne s± tylko chwile" [Ryszard Riedel]
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [LARTC] ESFQ not so fair?
2006-04-12 19:26 [LARTC] ESFQ not so fair? Michał Margula
2006-04-12 21:35 ` Andy Furniss
2006-04-12 21:43 ` Michał Margula
@ 2006-04-12 21:52 ` Patrick McHardy
2006-04-12 22:19 ` Andy Furniss
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Patrick McHardy @ 2006-04-12 21:52 UTC (permalink / raw)
To: lartc
Andy Furniss wrote:
> Corey Hickey changed his esfq to use jhash for dst/src/fw - copy of his
> announce below.
>
> Andy.
>
> Corey Hickey wrote:
>> So, I wrote an alternative hash function. It's quite simple, and as long
>> as the range of input values is smaller than the hash table (default
> 1024,
>> up to 16384), collisions will not happen at all. See the updated README
>> file for more details.
Using jhash is a probably a good idea, the "improved" hash is broken
and will cause reordering in some circumstances:
return (h - q->dyn_min) * (q->hash_divisor - 1) / q->dyn_range;
dyn_min, dyn_max and dyn_range, as their name suggests, are adjusted
dynamically, so the hash function changes whenever one of these values
changes, resulting in reordering of packets belonging to a single flow.
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [LARTC] ESFQ not so fair?
2006-04-12 19:26 [LARTC] ESFQ not so fair? Michał Margula
` (2 preceding siblings ...)
2006-04-12 21:52 ` Patrick McHardy
@ 2006-04-12 22:19 ` Andy Furniss
2006-04-12 22:24 ` Andy Furniss
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Andy Furniss @ 2006-04-12 22:19 UTC (permalink / raw)
To: lartc
Patrick McHardy wrote:
> Andy Furniss wrote:
>
>>Corey Hickey changed his esfq to use jhash for dst/src/fw - copy of his
>>announce below.
>
> Using jhash is a probably a good idea, the "improved" hash is broken
> and will cause reordering in some circumstances:
>
> return (h - q->dyn_min) * (q->hash_divisor - 1) / q->dyn_range;
>
> dyn_min, dyn_max and dyn_range, as their name suggests, are adjusted
> dynamically, so the hash function changes whenever one of these values
> changes, resulting in reordering of packets belonging to a single flow.
>
Oops I thought he did use jhash don't know where I got that from.
Andy.
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [LARTC] ESFQ not so fair?
2006-04-12 19:26 [LARTC] ESFQ not so fair? Michał Margula
` (3 preceding siblings ...)
2006-04-12 22:19 ` Andy Furniss
@ 2006-04-12 22:24 ` Andy Furniss
2006-04-13 2:46 ` Corey Hickey
2006-04-13 10:58 ` Michał Margula
6 siblings, 0 replies; 8+ messages in thread
From: Andy Furniss @ 2006-04-12 22:24 UTC (permalink / raw)
To: lartc
Micha³ Margula wrote:
> Andy Furniss napisa³(a):
>
>>
>> Corey Hickey changed his esfq to use jhash for dst/src/fw - copy of
>> his announce below.
>>
>> Andy.
>
>
> Thanks, but I am already using his patch :-). It happens with that
> patch, I haven't tried original version at all.
>
Ahh OK - looks like Patrick spotted the problem I guess Corey will see
this thread. His limit is 2^14 though, which is why I thought you must
be using a different one.
Andy.
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [LARTC] ESFQ not so fair?
2006-04-12 19:26 [LARTC] ESFQ not so fair? Michał Margula
` (4 preceding siblings ...)
2006-04-12 22:24 ` Andy Furniss
@ 2006-04-13 2:46 ` Corey Hickey
2006-04-13 10:58 ` Michał Margula
6 siblings, 0 replies; 8+ messages in thread
From: Corey Hickey @ 2006-04-13 2:46 UTC (permalink / raw)
To: lartc
Patrick McHardy wrote:
> Andy Furniss wrote:
>> Corey Hickey changed his esfq to use jhash for dst/src/fw - copy of his
>> announce below.
>>
>> Andy.
>>
>> Corey Hickey wrote:
>>> So, I wrote an alternative hash function. It's quite simple, and as long
>>> as the range of input values is smaller than the hash table (default
>> 1024,
>>> up to 16384), collisions will not happen at all. See the updated README
>>> file for more details.
>
> Using jhash is a probably a good idea, the "improved" hash is broken
> and will cause reordering in some circumstances:
>
> return (h - q->dyn_min) * (q->hash_divisor - 1) / q->dyn_range;
>
> dyn_min, dyn_max and dyn_range, as their name suggests, are adjusted
> dynamically, so the hash function changes whenever one of these values
> changes, resulting in reordering of packets belonging to a single flow.
That should stabilize after it's been running a while and has seen the
normal range of IP addresses. Anyway, I agree, it's not very good.
Working on ESFQ some more has been on my long-term TODO list, but what
with getting distracted by mplayer development I didn't get around to
it... and now I have 1.2 real jobs and 1.0 girlfriends and don't have
time for much programming. :)
If any of you want to send patches to this list and they don't look bad
to other readers of the list I'll happily apply them and make a new
release. Other than that, I can't help you much for now.
Thanks,
Corey
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [LARTC] ESFQ not so fair?
2006-04-12 19:26 [LARTC] ESFQ not so fair? Michał Margula
` (5 preceding siblings ...)
2006-04-13 2:46 ` Corey Hickey
@ 2006-04-13 10:58 ` Michał Margula
6 siblings, 0 replies; 8+ messages in thread
From: Michał Margula @ 2006-04-13 10:58 UTC (permalink / raw)
To: lartc
Corey Hickey napisa³(a):
>> Using jhash is a probably a good idea, the "improved" hash is broken
>> and will cause reordering in some circumstances:
>>
>> return (h - q->dyn_min) * (q->hash_divisor - 1) / q->dyn_range;
>>
>> dyn_min, dyn_max and dyn_range, as their name suggests, are adjusted
>> dynamically, so the hash function changes whenever one of these values
>> changes, resulting in reordering of packets belonging to a single flow.
>
>
> That should stabilize after it's been running a while and has seen the
> normal range of IP addresses. Anyway, I agree, it's not very good.
>
I am changing size of HTB queue at 01:00 AM and then back at 06:00 AM.
So it is quite possible that hash used by esfq will never go stable?
If I know range of input values will hardcoding that into esfq help?
Or maybe there is something similair to esfq with direct hash but a
larger one (16 bits should be enough). I don't care about memory usage,
mostly important is performance. I am going to get uplink from another
company and having another few thousands of HTB qdisc is not wise idea :-).
--
Micha³ Margula, alchemyx@uznam.net.pl, http://alchemyx.uznam.net.pl/
"W ¿yciu piêkne s± tylko chwile" [Ryszard Riedel]
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 8+ messages in thread