* [LARTC] ESFQ not so fair?
@ 2006-04-12 19:26 Michał Margula
2006-04-12 21:35 ` Andy Furniss
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Michał Margula @ 2006-04-12 19:26 UTC (permalink / raw)
To: lartc
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!
--
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
` (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
end of thread, other threads:[~2006-04-13 10:58 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2006-04-12 22:24 ` Andy Furniss
2006-04-13 2:46 ` Corey Hickey
2006-04-13 10:58 ` Michał Margula
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.