Systems and Layers Flashcards
What is system design?
Computer systems have computation, storage and transmission resources. System design is putting these together into a harmonious whole.
What is the goal of system design?
Maximizing a set of performance metrics given a set of resource constraints.
Time constraints
Deadline for task completion, time to market and mean time between failures.
Response time
Mean time to complete a task
Throughput
Number of tasks completed per unit time
Degree of Parallelism
Response time * throughput
Space Constraints
Limit to available memory and limits to bandwidth.
Computation Constraints
Amount of processing that can be done in unit time.
Money Constraints
What components can be used, what prices users are willing to pay for a service and the number of engineers available to complete a task.
Labour Constraints
Labour is the human efffor required to design and build a system nd constrains what can be done and how fast.
Social Constraints - Standards
Forces designs to conform to sometimes non-sensical requirements. Underspecified standard can lead to faulty and non-interopable implementations.
Social Constraints - Market Requirements
Backwards compatibility and the need to use a particular operating system.
Scaling
A design constraint - centralised elements prevent the design from easily scaling
Bottleneck
The most constrained element in the system.
Balanced system
A system in which all resources are simultaneously bottlenecked.
Multiplexing
Essentially sharing, trades time and space for money as user sees an increased response time and takes up space while waiting but the system costs less.
Statistical Multiplexing
We can use statistical knowledge of how frequently users are active and for how long to minimise cost of link. Temporal - expect a task to be active only part of the time. Spatial - we expect only a fraction of tasks to be simultaneously active.
Pipelining
Break tasks down into serially dependent subtasks so that each subtask only depends on previous one in execution chain. This allows stages of the process to be executed simultaneously.
Batching
Groups tasks together to amortize overhead. This only works when overhead is nonlinear. Trading off reduced overhead for longer worst case response time and increased throughput.
Hierachy
Recursive decomposition of a system into smaller pieces that depend only on parent for proper execution.
Binding
Translation from an abstraction to an instance.
Indirection
Automatic binding where translation table is stored in a well known place.
Virtualization
Combination of indirection and multiplexing by referring to a virtual resource that hets matched to an instance at run time.
Soft State
State that is deleted on a timer. If it is desierd to be kept then refresh. This allows for automatic clean up after failure but increases bandwidth requirements.