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

User Story 1-3: Interchangeable child reactors and flexible wiring #65

Open
Tracked by #62
OmerMajNition opened this issue Oct 17, 2024 · 0 comments
Open
Tracked by #62

Comments

@OmerMajNition
Copy link

OmerMajNition commented Oct 17, 2024

Let’s reconsider the design of an already defined server (shown below)

image

In terms of capabilities there would be servers that have multiple SSDs, multiple DRAMs (with CXL evolving real fast), Network attached Storage, Hard Disks. In terms of useability users could set up N levels of cache in a Server, each level using one of the available storage mediums.

One naive way would be to have a different server for each variation, then we would have hundreds of servers already for the users to choose from.

Since all of these storage reactors would have the same input and output port characteristics (multiport inputs with common types and multiport outputs with common types). On top of these Caches (no matter at which level we stitch it) would also be similar in terms of input and output ports characteristics. We can think of how to let users extend reusable server reactor to

  1. Define storage capabilities of a server (as many DRAMs, SSDs or other storage devices in a server)
  2. Configure caches inside a server (as many Cache Levels as they want)
  3. Wire each cache with a desired storage device of a server

Following are some examples of possible servers.

  1. Server with Single level of Cache connected to DRAM

image

  1. Server with 2 Levels of cache both connected to a single DRAM device

image

  1. Server with 2 Levels of cache both connected to a single SSD device

image

  1. Server with 2 Levels of cache both connected to independent SSD devices

image

Validation (Checking that reactors implement the same interface)

Reusing a single definition of Server, users should be able to attach a cache reactor to its preferred storage medium. All storage medium reactors must have the same interface (input ports + output ports). Checks on input and output ports would be performed (by the CPP runtime) and allow or disallow interchangeable reactors inside Server.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant