Beruflich Dokumente
Kultur Dokumente
Scalability
From Wikipedia, the free encyclopedia
This article needs additional citations for verification. Please help improve this
article by adding citations to reliable sources. Unsourced material may be challenged
and removed. (March 2012)
Scalability is the ability of a system, network, or process to handle a growing amount of work in a
capable manner or its ability to be enlarged to accommodate that growth. [1] For example, it can refer
to the capability of a system to increase its total output under an increased load when resources
(typically hardware) are added. An analogous meaning is implied when the word is used in
an economic context, where scalability of a company implies that the underlying business
modeloffers the potential for economic growth within the company.
Scalability, as a property of systems, is generally difficult to define [2] and in any particular case it is
necessary to define the specific requirements for scalability on those dimensions that are deemed
important. It is a highly significant issue in electronics systems, databases, routers, and networking.
A system whose performance improves after adding hardware, proportionally to the capacity added,
is said to be a scalable system.
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, a large
number of outputs or users, or a large number of participating nodes in the case of a distributed
system). If the design or system fails when a quantity increases, it does not scale. In practice, if
there are a large number of things (n) that affect scaling, then resource requirements (for example,
algorithmic time-complexity) must grow less than n2 as n increases. An example is a search engine,
that must scale not only for the number of users, but for the number of objects it indexes. Scalability
refers to the ability of a site to increase in size as demand warrants. [3]
The concept of scalability is desirable in technology as well as business settings. The base concept
is consistent the ability for a business or technology to accept increased volume without impacting
the contribution margin (= revenue variable costs). For example, a given piece of equipment may
have a capacity for 11000 users, while beyond 1000 users additional equipment is needed or
performance will decline (variable costs will increase and reduce contribution margin).
Contents
[hide]
1 Measures
2 Examples
4 Database scalability
8 See also
9 References
10 External links
Measures[edit]
Scalability can be measured in various dimensions, such as:
Functional scalability: The ability to enhance the system by adding new functionality at
minimal effort.
Load scalability: The ability for a distributed system to easily expand and contract its
resource pool to accommodate heavier or lighter loads or number of inputs. Alternatively, the
ease with which a system or component can be modified, added, or removed, to accommodate
changing load.
Generation scalability refers to the ability of a system to scale up by using new generations
of components. Thereby,heterogeneous scalability is the ability to use the components from
different vendors.[4]
Examples[edit]
A routing protocol is considered scalable with respect to network size, if the size of the
necessary routing table on each node grows as O(log N), where N is the number of nodes in the
network.
Some early peer-to-peer (P2P) implementations of Gnutella had scaling issues. Each node
query flooded its requests to all peers. The demand on each peer would increase in proportion
to the total number of peers, quickly overrunning the peers' limited capacity. Other P2P systems
like BitTorrent scale well because the demand on each peer is independent of the total number
of peers. There is no centralized bottleneck, so the system may expand indefinitely without the
addition of supporting resources (other than the peers themselves).
The distributed nature of the Domain Name System allows it to work efficiently even when
all hosts on the worldwideInternet are served, so it is said to "scale well".
To scale horizontally (or scale out) means to add more nodes to a system, such as adding
a new computer to a distributed software application. An example might involve scaling out from
one Web server system to three. As computer prices have dropped and performance continues
to increase, high-performance computing applications such as seismic analysis and
biotechnology workloads have adopted low-cost "commodity" systems for tasks that once would
have required supercomputers. System architects may configure hundreds of small computers
in a cluster to obtain aggregate computing power that often exceeds that of computers based on
a single traditional processor. The development of high-performance interconnects such
as Gigabit Ethernet, InfiniBand and Myrinet further fueled this model. Such growth has led to
demand for software that allows efficient management and maintenance of multiple nodes, as
well as hardware such as shared data storage with much higher I/O performance. Size
scalability is the maximum number of processors that a system can accommodate. [4]
To scale vertically (or scale up) means to add resources to a single node in a system,
typically involving the addition of CPUs or memory to a single computer. Such vertical scaling of
existing systems also enables them to usevirtualization technology more effectively, as it
provides more resources for the hosted set of operating system andapplication modules to
share. Taking advantage of such resources can also be called "scaling up", such as expanding
the number of Apache daemon processes currently running. Application scalability refers to the
improved performance of running applications on a scaled-up version of the system. [4]
There are tradeoffs between the two models. Larger numbers of computers means increased
management complexity, as well as a more complex programming model and issues such as
throughput and latency between nodes; also, some applications do not lend themselves to a
distributed computing model. In the past, the price difference between the two models has favored
"scale up" computing for those applications that fit its paradigm, but recent advances in virtualization
technology have blurred that advantage, since deploying a new virtual system over
a hypervisor (where possible) is almost always less expensive than actually buying and installing a
real one.[dubious discuss] Configuring an existing idle system has always been less expensive than buying,
installing, and configuring a new one, regardless of the model.
Database scalability[edit]
A number of different approaches enable databases to grow to very large size while supporting an
ever-increasing rate oftransactions per second. Not to be discounted, of course, is the rapid pace of
hardware advances in both the speed and capacity of mass storage devices, as well as similar
advances in CPU and networking speed.
One technique supported by most of the major database management system (DBMS) products is
the partitioning of large tables, based on ranges of values in a key field. In this manner, the database
can be scaled out across a cluster of separate database servers. Also, with the advent of 64bit microprocessors, multi-core CPUs, and large SMP multiprocessors, DBMS vendors have been at
the forefront of supporting multi-threaded implementations that substantiallyscale up transaction
processing capacity.
Network-attached storage (NAS) and Storage area networks (SANs) coupled with fast local area
networks and Fibre Channel technology enable still larger, more loosely coupled configurations of
databases and distributed computing power. The widely supported X/Open XA standard employs a
global transaction monitor to coordinate distributed transactionsamong semi-autonomous XAcompliant database resources. Oracle RAC uses a different model to achieve scalability, based on a
"shared-everything" architecture that relies upon high-speed connections between servers.
While DBMS vendors debate the relative merits of their favored designs, some companies and
researchers question the inherent limitations of relational database management
systems. GigaSpaces, for example, contends that an entirely different model of distributed data
access and transaction processing, Space based architecture, is required to achieve the highest
performance and scalability. On the other hand, Base One makes the case for extreme scalability
without departing from mainstream relational database technology.[6] For specialized
applications, NoSQL architectures such as Google'sBigTable can further enhance scalability.
Google's massively distributed Spanner technology, positioned as a successor to BigTable, supports
general-purpose database transactions and provides a more conventional SQL-based query
language.[7]
short cable lengths and limited physical extent, avoiding signal runtime performance
degradation.
majority / quorum mechanisms to guarantee data consistency whenever parts of the cluster
become inaccessible.
Indicators for eventually consistent designs (not suitable for transactional applications!) are:
write performance increases linearly with the number of connected devices in the cluster.
while the storage cluster is partitioned, all parts remain responsive. There is a risk of
conflicting updates.
is the
maximumspeedup that can be achieved by using P processors is given according to Amdahl's Law:
.
Substituting the value for this example, using 4 processors we get
.
If we double the compute power to 8 processors we get
.
Doubling the processing power has only improved the speedup by roughly one-fifth. If the whole
problem was parallelizable, we would, of course, expect the speed up to double also. Therefore,
throwing in more hardware is not necessarily the optimal approach.
The first is strong scaling, which is defined as how the solution time varies with the number
of processors for a fixedtotal problem size.
The second is weak scaling, which is defined as how the solution time varies with the
number of processors for a fixed problem size per processor.[9]
See also[edit]