What is Scalability?

Scalability is a system‘s ability to process more workload, with a proportional increase in system resource usage. In other words, in a scalable system, if you double the workload, then the system uses twice as many system resources. This sounds obvious, but due to conflicts within the system, the resource usage might exceed twice the original workload.

Examples of poor scalability due to resource conflicts include the following:

■Applications requiring significant concurrency management as user populations increase

■Increased locking activities

■Increased data consistency workload

■Increased operating system workload

■Transactions requiring increases in data access as data volumes increase

■Poor SQL and index design resulting in a higher number of logical I/Os for the same number of rows returned

■Reduced availability, because database objects take longer to maintain

An application is said to be unscalable if it exhausts a system resource to the point where no more throughput is possible when its workload is increased. Such applications result in fixed throughputs and poor response times.

Examples of resource exhaustion include the following:

■Hardware exhaustion

■Table scans in high-volume transactions causing inevitable disk I/O shortages

■Excessive network requests, resulting in network and scheduling bottlenecks

■Memory allocation causing paging and swapping

■Excessive process and thread allocation causing operating system thrashing

This means that application designers must create a design that uses the same resources, regardless of user populations and data volumes, and does not put loads on the system resources beyond their limits.

System Scalability

Applications that are accessible through the Internet have more complex performance and availability requirements. Some applications are designed and written only for Internet use, but even typical back-office applications—such as a general ledger application—might require some or all data to be available online.

Characteristics of Internet age applications include the following:

■Availability 24 hours a day, 365 days a year

■Unpredictable and imprecise number of concurrent users

■Difficulty in capacity planning

■Availability for any type of query

■Multitier architectures

■Stateless middleware

■Rapid development timescale

■Minimal time for testing

Figure 2–1 illustrates the classic workload growth curve, with demand growing at an increasing rate. Applications must scale with the increase of workload and also when additional hardware is added to support increasing demand. Design errors can cause the implementation to reach its maximum, regardless of additional hardware resources or re-design efforts.

Figure 2–1 Workload Growth Curve

Applications are challenged by very short development timeframes with limited time for testing and evaluation. However, bad design typically means that you must later

rearchitect and reimplement the system. If you deploy an application with known architectural and implementation limitations on the Internet, and if the workload exceeds the anticipated demand, then failure is a real possibility. From a business perspective, poor performance can mean a loss of customers. If Web users do not get a response in seven seconds, then the user‘s attention could be lost forever.

In many cases, the cost of re-designing a system with the associated downtime costs in migrating to new implementations exceeds the costs of properly building the original system. The moral of the story is simple: design and implement with scalability in mind from the start.

Factors Preventing Scalability

When building applications, designers and architects should aim for as close to perfect scalability as possible. This is sometimes called linear scalability, where system throughput is directly proportional to the number of CPUs.

In real life, linear scalability is impossible for reasons beyond a designer‘s control. However, making the application design and implementation as scalable as possible should ensure that current and future performance objectives can be achieved through expansion of hardware components and the evolution of CPU technology.

Factors that may prevent linear scalability include:

■Poor application design, implementation, and configuration

The application has the biggest impact on scalability. For example:

■Poor schema design can cause expensive SQL that do not scale.

■Poor transaction design can cause locking and serialization problems.

■Poor connection management can cause poor response times and unreliable systems.

However, the design is not the only problem. The physical implementation of the application can be the weak link. For example:

■Systems can move to production environments with bad I/O strategies.

■The production environment could use different execution plans than those generated in testing.

■Memory-intensive applications that allocate a large amount of memory without much thought for freeing the memory at run time can cause excessive memory usage.

■Inefficient memory usage and memory leaks put a high stress on the operating virtual memory subsystem. This impacts performance and availability.

■Incorrect sizing of hardware components

Bad capacity planning of all hardware components is becoming less of a problem as relative hardware prices decrease. However, too much capacity can mask scalability problems as the workload is increased on a system.

■Limitations of software components

All software components have scalability and resource usage limitations. This applies to application servers, database servers, and operating systems. Application design should not place demands on the software beyond what it can handle.

■Limitations of Hardware Components

Hardware is not perfectly scalable. Most multiprocessor computers can get close to linear scaling with a finite number of CPUs, but after a certain point each additional CPU can increase performance overall, but not proportionately. There might come a time when an additional CPU offers no increase in performance, or even degrades performance. This behavior is very closely linked to the workload and the operating system setup.


Note:

These factors are based on Oracle Server Performance group‘s experience of tuning unscalable systems.

时间: 2024-10-10 23:57:45

What is Scalability?的相关文章

A Flock Of Tasty Sources On How To Start Learning High Scalability

This is a guest repost by Leandro Moreira. When we usually are interested about scalability we look for links, explanations, books, and references. This mini article links to the references I think might help you in this journey. DISCLAIMER: You don’

QML官方系列教程——Scalability

附网址:http://qt-project.org/doc/qt-5/scalability.html Scalability -- (多屏)扩展性 Qt Quick使你开发的应用程序能够在类似桌面,手持设备等多个不同的平台上运行.特别地,它们还能够应付不同的的屏幕配置:尺寸,密度,方向,分辨率以及纵横比. 在这些情况下你需要考虑程序的扩展性: · 你希望将应用程序部署在多个平台,比如Android,BlackBerry,iOS,或者不同的屏幕配置以及物理尺寸的设备上. · 有些新的设备出现在你

[转] KVM scalability and consolidation ratio: cache none vs cache writeback

http://www.ilsistemista.net/index.php/virtualization/43-kvm-scalability-and-consolidation-ratio-cache-none-vs-cache-writeback.html?limitstart=0 In the latest ten years, full-virtualization technologies gained much traction. While this sometime led to

21/CLASS - C Language Style for Scalability——ZeroMQ官网建议的C语言命令规范

http://rfc.zeromq.org/spec:21 Table of Contents License Change Process Language Goals Quality Aspirations Common Problems General Style Definitions Language Naming Project Style Project Focus Project Name General Layout Dependencies Project Header Fi

Improve Scalability With New Thread Pool APIs

Pooled Threads Improve Scalability With New Thread Pool APIs Robert Saccone Portions of this article are based on a prerelease version of Windows Server 2008. Details contained herein are subject to change. Code download available at: VistaThreadPool

Enhancing the Scalability of Memcached

原文地址: https://software.intel.com/en-us/articles/enhancing-the-scalability-of-memcached-0 1 Introduction - Memcached and Web Services Memcached is a Key-Value cache used by cloud and web service delivery companies, such as Facebook [1], Twitter [2], R

Message Passing Leads to Better Scalability in Parallel Systems

Message Passing Leads to Better Scalability in Parallel Systems Russel Winder PROGRAMMERS ARE TAUGHT from the very outset of their study of computing that concurrency-and especially parallelism, a special subset of concurrency- is hard, that only the

SSIS ->> Reliability And Scalability

Error outputs can obviously be used to improve reliability, but they also have an important part to play in terms of scalability as well The capability to recover rows is perhaps the most useful course of action. The less work you perform, the greate

Achieving High Availability and Scalability - ARR and NLB

Achieving High Availability and Scalability: Microsoft Application Request Routing (ARR) for IIS 7.0 and above and Network Load Balancing (NLB). Microsoft Corporation Author: Ahmed Bisht, Won Yoo Published: November 13, 2008 Abstract This document pr