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

Per vat inbound and outbound queues #5025

Open
mhofman opened this issue Apr 6, 2022 · 0 comments
Open

Per vat inbound and outbound queues #5025

mhofman opened this issue Apr 6, 2022 · 0 comments
Assignees
Labels
enhancement New feature or request SwingSet package: SwingSet

Comments

@mhofman
Copy link
Member

mhofman commented Apr 6, 2022

What is the Problem Being Solved?

As a stepping stone towards #3465, we'll split the "global" acceptance and run queues into per vat outbound and inbound queue. That will allow processing some vat messages before other vats while maintaining more limited ordering guarantees.

At that point we'll need to decide in which order to process each active vat, defined as having either a message pending in either the outbound or inbound queue. Once a vat is selected for a crank, either the messages at the top of the outbound queue will be processed if any, or the message at the top of the inbound queue will.

Description of the Design

2 queues per vat, and a "scheduler" to pick the next vat for processing. This can only be done after #5024 is completed

We can start with a simple round robin or pseudo random selector at first. In the future we may want to make a more informed decision based on kernel state, previous crank details, etc.

Security Considerations

A vat should not be able to starve another vat, at least until priorities are considered.

Test Plan

TBD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request SwingSet package: SwingSet
Projects
None yet
Development

No branches or pull requests

2 participants