In the traditional client-server model, the majority of processing and data storage occurs at the client. In the emerging Software as a Service (“SaaS”) market, the majority of the processing occurs at the server and the data is centralized to take advantage of the connectivity the Internet provides. The power of the connectivity and information sharing is leading to massively scalable applications that support hundreds of thousands, up to hundreds of millions of users.
Massively scalable applications are creating many new challenges in managing user loads and storage systems in an automated fashion. One of theses challenges is the ability to accurately predict when capacity will be needed in data-heavy applications, such as email, file storage, and online back-up, and also in non-data heavy applications. Making this prediction is difficult because the limitations which can affect available overall load take many forms, including utilization of processor, memory, I/O load (comprising reads per second, writes per second, total transactions per second, and number of ports being utilized), network space, disk space, an application or applications, and power, and these forms are continually changing. Additionally, making this prediction is difficult because it is hard for an administrator to distinguish between a short-term load that can be reached due to a burst of activity and long-term growth that requires increased capacity. Administrators also do not have useful numbers on the different types of utilization of the server systems. As a result, administrators are often in a reactive mode when trying to address capacity concerns. Further, administrators do not have any methods for accurately assessing costs, such as the cost per user per service especially when multiple servers are required for a single service or for assessing whether to maximize the configuration of a server or purchase a new server to add capacity.