Utility Pricing

Pricing web hosting services has always been a sticky issue for hosting providers. A "traditional" pricing model specifies a fixed amount of disk, bandwidth and memory for a fixed monthly fee. As the site grows, it is expected that the customer will eventually run out of one of these resources and will be forced to upgrade to the next "level".

While this model is very common, easy to understand and compare, it has a major flaw. Any hosting provider usually has customers who under-utilize their resources and those who use them to the max. Providers usually price their products on certain assumptions of the ratio of high to low usage customers. The result is that the little sites are subsidizing the big sites.

The problem with this business relationship is that the two party's motivations contradict each other. Considering high-utilization customers, it is in the interest of the provider that they upgrade to a more expensive product, while the customers are interested getting the most "bang for the buck". To encourage upgrades (and to mitigate their risks), providers will often clamp resources thereby increasing the "pain" for resource-intensive customers.

Research of our customer base shows that the difference in cpu/memory and disk utilization for clients using the exact same hosting product can vary by orders of magnitude. A client running a Java-based application can be using 10 or more times the resources than someone who only uses their account to serve static pages using Apache httpd; both of these clients paying the same price.

Our conclusion was that the only correct approach to hosting pricing is to charge only for resources actually used. We refer to this as "Utility pricing" because it is not very different from how we typically pay for energy or phone service.

The benefit to the provider is that it removes the risk of over-commit and allows for much lower entry-level prices. The benefit to the customer is a fair and low price. In this scenario it is in the interest of the provider that the customer uses more resources while getting the best performance, thus the interests of the two parties are now aligned.

Details

The price is derived from the following resource measurements: Disk, CPU, RAM and Network. We collect the utilization stats from our servers every hour and copy them to a central database from which the data can be viewed via the OpenVPS control panel and is used for billing.

CPU

The CPU utilization is measured in ticks. A tick is approximately 1ms (1/1000 of a second) of CPU time.

Network

The network utilization is measured in bytes (both sent and received).

Disk

Disk space is measured in disk tokens. One disk token is an average KB (1024 Bytes) over 1 minute interval. This means that we measure disk usage at the beginning and the end of a minute then average the two values; the resulting number of KB is the number of tokens.

RAM

RAM is measured in Memory Tokens. Similarly to disk tokens, one disk token is an average KB (1024 Bytes) over 1 minute interval. RAM utilization falls into two major categories - VSS and RSS. VSS is the Virtual Segment Size which represents the memory allocated. This memory may be swapped out or not yet be associated with an area of physical memory. RSS is the Resident Segment Size and represents actual physical RAM being used. Therefore RSS is a much more expensive resource than VSS.

It is important to note that the measurement of RAM is not exact since Linux VServer can count the same page referred to by separate processes as different. This is because read-only pages are sometimes shared among processes. Given the current Linux kernel architecture, there seems to be no technically feasible way to overcome this problem. To compensate for this inacuracy, we make the RAM charges only a very small percentage of the overall price.

OpenVPS Control Panel

Each OpenVPS Control Panel allows you to see up to the minute graphs of your resource utilization going back 90 days. Below is a sample screenshot showing CPU utilization.



You can also see real-time current charges (updated hourly) as well as a projection of cost based on prior usage for the whole month. The screenshot below shows that this VPS has used $6.26 worth of resources so far in March 2005 and that based on this level of utilization the system estimates the charges for the month of March to be $46.97.