Scale (computing)

From Wikipedia, the free encyclopedia

Scale in the computing field is used as a verb.

Contents

[edit] Definition

An algorithm, design, networking protocol, program, or other system is said to scale if it is suitably efficient and practical when applied to large situations (e.g. a large input data set or large number of participating nodes in the case of a distributed system). For example, the distributed nature of the Domain Name System allows it to work efficiently even when all hosts on the worldwide Internet are served, so it is said to "scale well".

If the design fails when the quantity increases then it does not scale. For example, some early P2P applications, such as Gnutella, had scaling issues as each node broadcast its requests to all peers. This means that the demand on each peer would in the worst case increase in proportion with the total number of peers, potentially quickly overrunning the peers' limited capacity. Other P2P systems like BitTorrent scale well because demand on each peer is independent of the total number of peers.

[edit] Scale types

Scale is typically referred to in terms of vertical and horizontal scaling.

[edit] Vertically

To scale vertically is to scale in a single direction, to scale up. This could mean adding more local resources, such as CPU or memory, or simply increasing the number of processes. For instance, scaling up the number of Apache daemons or scaling up the number of CPU's.

[edit] Horizontally

To scale horizontally is to scale in multiple directions, to scale out. This typically means increasing the number of systems. For instance, scaling out from 1 web server to 3.

[edit] See also