reactor-cpp icon indicating copy to clipboard operation
reactor-cpp copied to clipboard

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

Open OmerMajNition opened this issue 1 year ago • 0 comments

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.

OmerMajNition avatar Oct 17 '24 10:10 OmerMajNition