inet-tub / ns3-datacenter

104 stars 32 forks source link

Why is normalized drain rate set to 1 when the drain rate is less than b*(1/nPrior) #11

Closed intothesea closed 1 year ago

intothesea commented 1 year ago

Could you please clarify the reason behind setting 'th' to 1 when the drain rate is less than b*(1/nPrior)? Does this adjustment relate to the scheduling algorithm? Is it because the parameter 'ap' already restricts the lower-priority queue? Could you provide more insights into this decision?

https://github.com/inet-tub/ns3-datacenter/blob/78fd924c942cc362a876e644cffb5144eedfc573/simulator/ns-3.35/src/traffic-control/model/gen-queue-disc.cc#L184

intothesea commented 1 year ago

In addition, can you please explain why the code have the following operation on the queue output speed: "Deq[dequeueIndex]+=1472;" As https://github.com/inet-tub/ns3-datacenter/blob/78fd924c942cc362a876e644cffb5144eedfc573/simulator/ns-3.35/src/traffic-control/model/gen-queue-disc.cc#L583

vamsiDT commented 1 year ago

Hi,

Regarding the first question: You are right. This is actually related to round-robin scheduling that we use here. Ideally, we want the 'th' to be within the bounds 1/n and 1.

Regarding the second question: This is to "elastically" reset the dequeue rate of empty queues. The threshold is supposed to capture the "steady state" dequeue rate. Otherwise we simply drop everything if we consider instantaneous values since 'dequeue rate' will be zero for the first incoming packet and subsequently it repeats. An exponential weighted moving average over a fixed time interval would fit much better here. Please open a pull request if you are able to implement it, or also happy to hear if you have better ideas.

intothesea commented 1 year ago

Many thanks for your replying. I am currently busy with my ongoing paper and work. Once I have finished them, I would be more than happy to continue addressing this issue and attempt to complete it.