In SSM, we have attempted to eliminate all coupling between nodes. Bricks are independent of other bricks, which are independent of stubs. Stubs are independent of all other stubs; each stub is regulated by an AIMD sending window which prevents it from saturating the system.
In traditional storage systems, a requestor is coupled to a requestee, and the requestor's performance, correctness, and availability are all dependent on the requestee. SSM instead uses single-phase, non-locking operations, allowing writes to proceed at the speed of the fastest bricks instead of being coupled to lagging or failing bricks. Among other things, this makes lengthy garbage collection times unimportant, since a brick performing GC can temporarily fall behind without dragging down the others.
Elimination of coupling comes at a cost: redundancy is harnessed for performance. Redundant components with reduced coupling gives rise to predictable performance. Coupling elimination has been used in [19,12,4].
Related to coupling is the use of both randomness to avoid deterministic worst cases and overprovisioning to allow for failover. Both techniques are used in large-system load balancing [3], but SSM does this at a finer grain, in the selection of the write set for each request.