DigitalOcean Droplets are Linux-based virtual machines (VMs) that run on top of virtualized hardware. Each Droplet you create is a new server you can use, either standalone or as part of a larger, cloud-based infrastructure

Choosing the right Droplet plan depends on your workload. An 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 best Droplet 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

You can also resize a Droplet to a larger plan after creation, including resizing to a larger Droplet plan of a different kind. For example, you can resize from a Basic Droplet plan to a larger CPU-Optimized Droplet plan. See the Droplet pricing page for a full list of plans and prices

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 five Droplet plans: one shared CPU plan and four dedicated CPU plans


|Droplet Plan||CPU||vCPUs||Memory|
|
|Basic (Regular and Premium) |Shared||1 - 8||1 - 16 GB RAM|
|
|General Purpose |Dedicated||2 - 40||8 - 160 GB RAM
|
4 GB RAM / vCPU
|
|CPU-Optimized |Dedicated||2 - 48||4 - 96 GB
|
2 GB RAM / vCPU
|
|Memory-Optimized |Dedicated||2 - 32||16 - 256 GB RAM
|
8 GB RAM / vCPU
|
|Storage-Optimized |Dedicated||2 - 32||16 - 256 GB RAM
|
8 GB RAM / vCPU
150 - 225 GB SSD / vCPU
Basic 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:
Basic Droplets come in a wide variety of configurations, from 1 vCPU / 1 GB memory to 8 vCPUs / 16 GB of memory. They also give you the flexibility to choose the memory to vCPU ratio most appropriate for your application

Basic 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

Basic Droplets can have Regular CPUs or Premium CPUs. You can choose between Intel and AMD for Premium CPUs

Basic Droplets with Premium CPUs are guaranteed to use one of the latest two generations of CPUs we have and NVMe SSDs. NVMe SSDs use parallelism to deliver faster disk performance than with regular SSDs. Workloads that require a large number of transactions will have much lower latency with NVMe SSDs

Premium CPU Droplets also have enhanced memory performance, which can play a significant factor in workloads like in-memory databases and server-side caches for web apps. Premium AMD Droplets feature a memory frequency of 3200 MHz, and Premium Intel 2933 MHz

Premium CPU Droplets have either second or third generation Intel Xeon Scalable processors or second or third generation AMD EPYC processors. Regular CPU Droplets have a mix of first generation or older Xeon Scalable processors and AMD EPYC processors

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 or Cascade Lake processors, which have a 2.7GHz base clock speed. 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 Ice Lake and older processors with base clock speeds in excess of 2.6 Ghz, 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

Fast storage is necessary for workloads capturing large amounts of data. Storage-Optimized Droplets use NVMe (non-volatile memory express), which is an interface protocol explicitly built for modern SSDs. It takes advantage of parallelism to deliver disk performance that can be an order of magnitude faster than our regular SSDs. Because storage is directly attached to the hypervisor (instead of being connected via network), these Droplets are ideal for workloads that require a high number of transactions with low latency, like:
The 1X SSD configuration of Storage-Optimized Droplets features 150GB storage for each dedicated vCPU. The 1.5X SSD option gives you 225 GB per vCPU. Our largest Storage-Optimized Droplet has 7 terabytes of storage capacity


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 Basic 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 Basic 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.