cucapra / packet-scheduling

MIT License
3 stars 0 forks source link

Agree on the workings of Round-Robin #48

Closed polybeandip closed 3 months ago

polybeandip commented 4 months ago

There's some ambiguity in the glossary's definition of round-robin: namely, what do we when a class falls silent?

Let's focus on the policy rr[A, B]. Consider the following scenario:

Would flushing our associated PIFO tree result in

flush-1: A_1, B_2, B_3

or

flush-2: B_2, A_1, B_3

In other words, do skipped classes get to save their turn? This is the crux of this discussion.

According to @csziklai's n-flow, RR-PIFOs in Calyx, skipped classes lose their turn: i.e. flushing yields flush-2. However, @anshumanmohan's 2-flow, RR-PIFO in Calyx and ternary tree, RR-control in pifo-tree-artifact disagree: flushing on his implementations give flush-1.

Is everyone is in favor of shifting all our round-robin implementations to @csziklai's approach? Stealing @anshumanmohan's comment, this would mean our policy is:

anshumanmohan commented 4 months ago

Thanks for staging this, let’s hash it out at tomorrow’s meeting

polybeandip commented 3 months ago

Updates from Monday's meeting (7/29)

We'll move forward with hot pointer approach above as our definition of round-robin: i.e. skipped classes don't save their turn and flushing in the scenario above yields flush-2. Note that this is different from our algorithm for WFQ with equal weights.

To-do: make a scheduling transaction (i.e. an Alg_t module) and graph for this policy in schedulers-in-ocaml.