Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Queues: generalize PIFOs #1810

Open
2 tasks
anshumanmohan opened this issue Dec 18, 2023 · 2 comments
Open
2 tasks

Queues: generalize PIFOs #1810

anshumanmohan opened this issue Dec 18, 2023 · 2 comments
Labels
C: Queues One of the queue-style frontends good first issue Good issue to start contributing on Calyx Status: Available Can be worked upon

Comments

@anshumanmohan
Copy link
Contributor

anshumanmohan commented Dec 18, 2023

At present our PIFOs can only handle:

  • Two flows.
  • A policy that attempts to give those two flows equal shares.

These limitations of PIFOs also limit PIFO trees.

There is room for generalization on a few axes. I see these as orthogonal, though of course they'd be more powerful if combined. I think these are doable even just using our approach where a PIFO merely orchestrates some n FIFOs, where n can be determined in advance.

  • A PIFO that handles n flows and affects the policy du jour on them.
  • A PIFO that allows strict prioritization among its children: strictly prefer flow A over flow B over flow C, and so on. This PIFO would still be work-conserving: if flow A were silent and flow B had items, we'd send B's items until A became chatty again, and we'd send C's items only if A and B were both silent. This generalizes easily to n flows.
@anshumanmohan anshumanmohan added Status: Available Can be worked upon C: Queues One of the queue-style frontends labels Dec 18, 2023
@sampsyo
Copy link
Contributor

sampsyo commented Dec 18, 2023

This all seems quite sensible! Except that I don't quite understand one thing: what does "strict prioritization" mean? Is it an alternative to fairness?

@anshumanmohan
Copy link
Contributor Author

Ah, sorry! I'll edit the text above to explain, but yes, this is a different scheduling policy that I think is easily within our grasp using just our simple approach. The idea is to strictly prefer flow A over flow B over flow C, and so on.

@anshumanmohan anshumanmohan self-assigned this Apr 12, 2024
@anshumanmohan anshumanmohan removed their assignment May 3, 2024
@anshumanmohan anshumanmohan added the good first issue Good issue to start contributing on Calyx label May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: Queues One of the queue-style frontends good first issue Good issue to start contributing on Calyx Status: Available Can be worked upon
Projects
None yet
Development

No branches or pull requests

2 participants