Subject: Re: [BUG #12364] Re: HTB - very bad precision? HFSC works fine! 2.6.28

From: Eric Dumazet <[email-masked]>
Date: Tue, 13 Jan 2009 08:52:45 +0100

Stephen Hemminger a écrit :
> On Tue, 13 Jan 2009 05:33:14 +0100
> Patrick McHardy <[email-masked]> wrote:
> 
>> Denys Fedoryschenko wrote:
>>> They are enabled
>>>
>>> Router-Dora /config # zcat /proc/config.gz |grep HIGH_RES
>>> CONFIG_HIGH_RES_TIMERS=y
>>> Router-Dora /config # zcat /proc/config.gz |grep HZ
>>> CONFIG_NO_HZ=y
>> Its odd that HZ=1000 solved the problem despite HR timers being active.
>> Are you sure they're actually enabled? You should see something like
>> this in the ringbuffer:
>>
>> [    0.241972] Switched to high resolution mode on CPU 0
>> [    0.242708] Switched to high resolution mode on CPU 1
>> --
>> To unsubscribe from this list: send the line "unsubscribe netdev" in
>> the body of a message to [email-masked]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> Even with NO_HZ the regular kernel won't schedule timers sooner
> than HZ. I believe it caused regressions so it was disabled.

Are you sure of this Stephen ?

This is not what I see with a CBQ setup, shaping a Gigabit interface with 60 Mb constraint

tc qdisc del dev eth2 root

tc qdisc add dev eth2 root handle 1: cbq avpkt 1000 rate 1000Mbit bandwidth 1000Mbit

tc class add dev eth2 parent 1:  classid 1:1   cbq allot 1500 rate 1000Mbit prio 1 avpkt 1500 bounded

# VOIP : essayons d'espacer un peu les paquets plutot que de les envoyer en burst
tc class add dev eth2 parent 1:1 classid 1:11 cbq allot 1500 rate 60Mbit avpkt 200 bounded

tc filter add dev eth2 protocol ip parent 1: u32 \
                match ip dst 10.170.72.0/24 \
        flowid 1:11

All following RTP frames are sent at once by the producer, yet we can see them leaving machine at the right rate

08:47:59.492059 IP 10.170.74.20.40026 > 10.170.72.109.8270: UDP, length 172
08:47:59.492066 IP 10.170.74.20.40002 > 10.170.72.109.12540: UDP, length 172
08:47:59.492104 IP 10.170.74.20.40016 > 10.170.72.110.8230: UDP, length 172
08:47:59.492109 IP 10.170.74.20.40044 > 10.170.72.109.4040: UDP, length 172
08:47:59.492136 IP 10.170.74.20.40038 > 10.170.72.109.13780: UDP, length 172
08:47:59.492163 IP 10.170.74.20.40060 > 10.170.72.110.7670: UDP, length 172
08:47:59.492191 IP 10.170.74.20.40066 > 10.170.72.109.8860: UDP, length 172
08:47:59.492219 IP 10.170.74.20.40020 > 10.170.72.110.12160: UDP, length 172
08:47:59.492246 IP 10.170.74.20.40078 > 10.170.72.110.12010: UDP, length 172
08:47:59.492273 IP 10.170.74.20.40010 > 10.170.72.109.12670: UDP, length 172
08:47:59.492306 IP 10.170.74.20.40018 > 10.170.72.109.4340: UDP, length 172
08:47:59.492333 IP 10.170.74.20.40008 > 10.170.72.109.7450: UDP, length 172
08:47:59.492361 IP 10.170.74.20.40024 > 10.170.72.110.10300: UDP, length 172
08:47:59.492388 IP 10.170.74.20.40006 > 10.170.72.109.13390: UDP, length 172
08:47:59.492389 IP 10.170.74.20.40036 > 10.170.72.109.9040: UDP, length 172
08:47:59.492416 IP 10.170.74.20.40042 > 10.170.72.110.5420: UDP, length 172
08:47:59.492444 IP 10.170.74.20.40040 > 10.170.72.109.8080: UDP, length 172
08:47:59.492470 IP 10.170.74.20.40048 > 10.170.72.110.17010: UDP, length 172
08:47:59.492502 IP 10.170.74.20.40032 > 10.170.72.109.8340: UDP, length 172
08:47:59.492529 IP 10.170.74.20.40004 > 10.170.72.109.8420: UDP, length 172

2.6.27.10 kernel, HZ=1000, HighRES timers on

Switched to high resolution mode on CPU 0
Switched to high resolution mode on CPU 5
Switched to high resolution mode on CPU 4
Switched to high resolution mode on CPU 7
Switched to high resolution mode on CPU 1
Switched to high resolution mode on CPU 3
Switched to high resolution mode on CPU 6
Switched to high resolution mode on CPU 2