Choosing the right Droplet plan depends on your workload. A oversized Droplet would underuse its resources and cost more, but an undersized Droplet running at full CPU or memory would suffer from degraded performance or errors.
To help you pick the Droplet best plan for your use case, this article explains the differences between shared and dedicated CPUs, goes into detail on each Droplet plan, and concludes with how to make a data-driven decision.
A Droplet is a virtual machine (VM) that is allocated resources, like CPU, RAM, and disk storage, from a physical host.
A hypervisor, also known as a virtual machine monitor, makes sure that the multiple Droplets running on a physical host each receive their virtual resources, like vCPU.
A vCPU is a unit of processing power corresponding to a single hyperthread on a processor core. A modern, multicore processor has several vCPUs.
The Droplet plan you choose determines the amount of resources allocated to the Droplet. Resources like RAM, disk storage, and network bandwidth are always dedicated, but you can choose between shared CPU and dedicated CPU plans for dedicated vCPU.
Dedicated CPU Droplets have guaranteed access to the full hyperthread at all times. With shared CPU Droplets, the hyperthread allocated to the Droplet may be shared between multiple other Droplets. When a shared CPU Droplet experiences heavier load, the hypervisor dynamically allocates more hyperthread(s) to it.
However, the amount of CPU cycles available for the hypervisor to allocate depends on the workload of the other Droplets sharing that host. If these neighboring Droplets have high load, a Droplet could receive fractions of hyperthreads instead of dedicated access to the underlying physical processors. In practice, this means that shared CPU Droplets can have access to full hyperthreads, but it’s not guaranteed.
There are four Droplet plans: one shared CPU plan and three dedicated CPU plans.
|Droplet Plan||CPU||Range of Resources||RAM-to-CPU Ratio||Processor|
|Standard||Shared||1 - 32 vCPUs
1 - 192 GB RAM
|General Purpose||Dedicated||2 - 40 vCPUs
8 - 160 GB RAM
|4 GB per vCPU||Intel Xeon Skylake (2.7 GHz, 3.7 GHz turbo)|
|CPU-Optimized||Dedicated||2 - 32 vCPUs
4 - 64 GB RAM
|2 GB per vCPU||Intel Xeon Broadwell (2.6 GHz)
Intel Xeon Skylake (2.7 GHz, 3.7 GHz turbo)
|Memory-Optimized||Dedicated||2 - 32 vCPUs
16 - 256 GB RAM
|8 GB per vCPU|
Standard Droplets have the most efficient CPU usage at a lower cost for workloads that would underuse dedicated threads. They’re ideal for bursty applications that can handle variable levels of CPU, such as:
Standard Droplets come in a wide variety of configurations, from 1 vCPU / 1 GB memory to 32 vCPUs / 192 GB of memory. They also give you the flexibility to choose the memory to vCPU ratio most appropriate for your application.
Standard Droplets are shared CPU, which are ideal for apps that mostly run at low to medium load, and occasionally burst for brief periods of time. For production workloads where time is of the essence or variable performance is intolerable, you should choose dedicated CPU Droplets.
General Purpose Droplets have a balanced ratio of memory to dedicated CPU, suitable for a wide variety of production workloads. General Purpose Droplets are available in six configurations ranging from 2 vCPUs up to 40 vCPUs, with 8 GB up to 160 GB of RAM. This 4:1 memory to CPU ratio is optimal for standard workloads like:
They are also a good default choice if you’re not sure which Droplet type is best for your application. All General Purpose Droplets have Intel Xeon Skylake processors, which have a 2.7GHz base clock speed and max Turbo frequency of 3.7 GHz. They’re best for general purpose production workloads that require dedicated compute power.
If your workloads require guaranteed and sustained CPU performance but are not as memory-intensive, CPU-Optimized Droplets let you to minimize cost per dedicated vCPU. Backed by Intel’s Xeon Broadwell and Skylake processors with 2.6 Ghz and 2.7 Ghz clock speeds, CPU-Optimized Droplets are built for CPU-bound workloads like:
CPU-Optimized Droplets provide a 2:1 ratio of memory to CPU, ranging from 2 vCPUs with 4 GB of RAM up to 32 vCPUs and 64 GB of RAM. This configuration is optimal for applications that demand fast, consistent performance from dedicated vCPUs, but are not so memory-intensive that they require the additional RAM provided by General Purpose Droplets.
Some workloads, like large production databases or in-memory caches, require larger amounts of memory to store working sets of data. Without sufficient RAM, such applications typically run slowly, or can occasionally become unstable and crash. With 8 GB of RAM for each vCPU, Memory-Optimized Droplets are ideal for these applications:
Memory-Optimized Droplets range from 2 vCPUs and 8 GB of RAM up to 32 vCPUs and 256 GB of memory. The additional memory can help you avoid excessively swapping to disk or getting out-of-memory errors, both of which significantly impact your application’s performance and stability. They allow you to minimize cost per GB of memory, while still providing dedicated vCPUs.
Before settling on a particular Droplet type, we recommend benchmarking and load testing your workload to see how it performs under simulated load. For bursty apps or batch jobs, look at resource usage when load is at its expected peak, especially when using shared CPU Standard Droplets. If you notice that your app’s performance is too variable for your production needs, consider a Droplet type with dedicated vCPUs.
Using Droplet graphs, you can get more information on your Droplet’s CPU load and memory usage:
If your Droplet has high CPU usage most of the time and also significant memory usage, consider scaling both vCPUs and memory and using a balanced General Purpose Droplet.
If your Droplet has high CPU usage most of the time but very low memory usage, you might be able to save money with a CPU-Optimized Droplet.
If your Droplet has high memory usage most of the time (potentially maxing out and swapping to disk) but low or moderate CPU usage, consider scaling memory and using a Memory-Optimized Droplet.
If your Droplet has low to moderate CPU or memory usage most of the time but sometimes bursts up and hits resource limits, consider shared CPU Standard Droplets and scale the limiting resource accordingly.
Using DigitalOcean Monitoring, you can create alert policies to notify you via email or Slack if your Droplets hit their resource limits. For example, you can set an alert policy to notify you via Slack should one of your Droplets exceed 90% memory usage for more than 30 minutes, an indication that your workload may be close to maxing out available memory and may throw an out-of-memory error.
All DigitalOcean Droplets include variable amounts of local solid state disk (SSD) storage. If you need additional storage, you can use network-attached block storage to attach additional volumes to a Droplet, or use Spaces object storage to offload files and accompanying metadata.
There is some performance penalty when using network-attached storage. If you need the additional input/output operations per second (IOPS), consider scaling your Droplet to a larger size for additional local SSD storage.
Droplets include unlimited free inbound data transfer and some amount of free outbound data transfer, depending on the Droplet instance type and size. Depending on your workload type and bandwidth usage, you could scale your Droplet to take advantage of additional free outbound data transfer.
Monitoring provides graphs and alert policies to monitor both disk and bandwidth, much in the same way you’d monitor CPU and memory usage.
If you use Droplets to run a container cluster with DigitalOcean Kubernetes, there are different considerations to choosing the best Droplet plan. You can combine several different Droplet instance types to create a set of resources sized optimally for your running containers.
Many container clusters, like Kubernetes, have advanced scheduling features that let you specify the Droplets your containers will run on. For example, if you are running a memory-bound data processing app, you can schedule that workload to a group of Memory-Optimized Droplets to avoid hitting memory limits and swapping to disk.
Learn more in Advanced Scheduling in Kubernetes.