All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.