[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[altq 85] Re: When a class is delayed (undertime)
Hi Kenjiro & Muthu!
>
>Muthu,
>
>
>> When a class is overlimit & cannot borrow from the ancestors (ie)
>> when the class is regulated, it needs to wait offtime (to maintain the
steady
>> state burst). The overlimit handler (rmc_delay_action) is invoked for
this
>> class (which adds offtime to undertime).
>
>> But when it gets here, the estimator would have already added the
>> suspension time to undertime when the class was found overlimit. So the
>> overlimit handler just cancels the suspension time (which was added by
the
>> estimator in the previous run(?)) since for a regulated class, the
suspension
>> time is not to be added (Appendix A1 of "Link sharing and resource
management
>> models for packet networks)
>
>> So I feel that this code needs to be retained.
>
>offtime is the required suspention time when avgidle is 0.
>If avgidle is negative, undertime (the idle time required to bring
>avgidle back to 0) should be added.
>
>-Kenjiro
I somehow agree with what Muthu said. Please check (Appendix A1 of "Link
sharing and resource management models for packet networks).
For a nonregulated class with avg negative, the time_to_send(undertime) is
set to make the next avgidle become 0.
But for a regulated calss with avg negative, the link-sharing scheduler sets
the undertime field for the class to f(s,b) (for minburst > 1, should be
offtime) ahead of the current time. A regulated calss is never restricted
by the link-sharing scheduler to less than its allocatd bandwidth,
regardless of the "excess" bandwidth used by that class in the past. And in
the middle of A.3 in the same paper it says, the link-sharing scheduler sets
the time-to-send field for a regulated class to f(s,b)=s/b (for minburst >
1, should be offtime) secondes ahead of the current time. .....at that time
the general scheduler is allowed to send a packet from that class regardless
of the value of avg.... . If the class is still overlimit after a packet is
ent, then the time-to-send field is again set to f(s,b)=s/b seconds ahead of
the current time.
So I also feel that this code
TV_ADD_DELTA(&cl->undertime_,
-((1 - RM_POWER) * cl->avgidle_) >> RM_FILTER_GAIN,
&cl->undertime_);
in rmc_delay_action()needs to be retained so that this regulated class will
not be ponished by the bandwidth it used before.
lsm