Burstable Resources

From Luna Node
Revision as of 15:54, 4 January 2018 by Favyen Bastani (Talk | contribs)

Jump to: navigation, search

In order to maximize affordability and flexibility, Luna Node virtual machines are assigned a portion of available CPU resources and disk I/O rather than specific dedicated CPU cores or physical disks. Because most application workloads have both periods of high CPU and I/O utilization and periods of low utilization, this maximizes cost savings -- essentially, instead of needing to continuously pay for a particular VM's peak utilization, you need only pay for its average utilization.

At a high-level, we assign each VM a baseline CPU and I/O performance. If your VM has periods where its resource utilization is below this baseline, then it collects "points" that it can later use to obtain resource utilization above the baseline.

Before 3 January 2018, enforcement of excessive resource utilization was performed manually. It is now automatically managed by the Luna Node platform.

Burst Points System

Each virtual machine has a baseline performance:

  • CPU: 20% utilization per core (if a VM has two cores, it could use 40% of one core, 30% of one and 10% of the other, etc.)
  • Disk I/O: 100 IOPS

The platform keeps track of CPU and disk burst points that each VM has. VMs constantly receive additional burst points corresponding to the baseline performance. They also constantly lose burst points based on actual resource utilization.

  • CPU: 1 CPU burst point corresponds to 100% utilization of a core for five minutes. A VM receives 0.2 burst points every five minutes for each core on the VM.
  • Disk I/O: 1 I/O burst point corresponds to 100 IOPS sustained over five minutes. A VM receives 1 burst point every five minutes.

For example, if a single-core VM starts with 10 burst points, and then uses 20% of the CPU core for one hour, it will end with 10 burst points. On the other hand, if the VM uses 10% of a core for one hour, it ends with 11.2 burst points (an additional 0.1 points for each five-minute interval), and if it uses 30% of a core for one hour, it ends with 8.8 burst points.

VM resource utilization may be throttled to the baseline performance if it has zero burst points. In some cases, the platform will not throttle the VM, or will throttle it to a level above the baseline performance, if it determines that the system can handle the additional load from the VM.

There are upper limits on the number of burst points that a VM can have. Once it reaches the limit, the VM burst points will stop increasing:

  • CPU: 24 CPU burst points * number of cores (e.g. max of 48 points for a VM with two cores)
  • I/O: 60 I/O burst points

History

Before 3 January 2018, we simply had a "fair share usage policy" that stated that CPU and disk I/O are shared, and excessive utilization may result in service suspension. In practice, we would send an e-mail when excessive utilization was detected, and coordinate with the user to either reduce the usage to an acceptable level or upgrade to a larger instance.

We have since deployed an automatic management system that makes this policy much more concrete.