Extreme persistent disks


For high-end performance-critical applications, use extreme persistent disks. Extreme persistent disks feature higher maximum IOPS and throughput, and allow you to provision IOPS and capacity separately. Extreme persistent disks are available in all zones.

When you create an extreme persistent disk, you can choose your desired IOPS level in the range of 2,500 to 120,000 IOPS. This document explains several important restrictions of using extreme persistent disks, considerations for reaching maximum possible performance levels, and how to provision IOPS using the Google Cloud console, the gcloud CLI or REST.

Before you begin

  • If you haven't already, set up authentication. Authentication is the process by which your identity is verified for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine as follows.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

Machine shape support

To reach maximum performance levels offered by extreme persistent disks, you must attach your extreme persistent disks to virtual machine (VM) instances that are large machine types, including M2, M3, or N2-64 and larger machine types.

All other machine types are not supported for production use. You can successfully attach an extreme persistent disk to a VM with an unsupported machine shape, but the performance of the disk will fall back to whichever is lower: the number of IOPS you provisioned, or SSD persistent disk IOPS levels.

N2 VMs with 64 or 80 vCPUs require the Intel Ice Lake CPU platform to reach the stated performance limits. N2 VMs using Intel Cascade Lake CPU platforms will have slightly lower performance. For more information, see setting the minimum CPU platform for VM instances.

The following table lists extreme persistent disk performance limits for the supported machine types.

Machine type vCPU count Maximum IOPS Maximum read throughput (MB/s) Maximum write throughput (MB/s)
N2 64 or 80 on Intel Cascade Lake 120,000 2,200 2,200
64 or more on Intel Ice Lake 120,000 4,000 3,000
M2 208 60,000 2,200 2,200
416 40,000 2,200 1,200
M3 64 or less 40,000 2,200 1,200
128 80,000 2,200 1,700

Performance limits and workload patterns

To reach maximum performance levels offered by extreme persistent disks, you must consider the following workload parameters:

  • I/O size: Maximum IOPS limits assume that you are using an I/O size of 4 or 8 KB. Maximum throughput limits assume that you are using an I/O size of 1 MB.
  • Queue length: Queue length is the number of pending requests for a persistent disk. To reach maximum performance limits, you must tune your queue length according to the I/O size, IOPS, and latency sensitivity of your workload. Optimal queue length varies for each workload, but typically should be larger than 128.
  • Working set size: Working set size is the amount of data of a disk being accessed within a short period of time. To achieve optimal performance, limit working set sizes to less than 1.5 TB.
  • Concurrent use of other persistent disks: Extreme persistent disks share the per-VM maximum IOPS and throughput limits with all other persistent disks attached to the same VM. When monitoring the performance of your extreme persistent disks, take into account any I/O requests that you are sending to other disks attached to the same VM.

Other restrictions

  • Extreme persistent disks are zonal only. You cannot create regional extreme persistent disks.
  • You cannot attach multiple VM instances in read-only mode to an extreme persistent disk.
  • You cannot create an image or machine image from an extreme persistent disk.
  • You cannot clone an extreme persistent disk.
  • You can resize an Extreme Persistent Disk only once in a 6 hour period.

Throughput

For extreme persistent disks, throughput scales with the number of IOPS you provision at a rate of 256 KB of throughput per I/O. However, throughput is ultimately capped by per-instance limits that depend on the number of vCPUs on the VM instance to which your extreme disks are attached.

Throughput for extreme persistent disks is not full duplex. The maximum throughput limits listed in this document apply to the sum total of read and write throughput.

Provisioning IOPS

To provision IOPS to match your workload requirements, do the following:

  1. Note the IOPS requirement of your workload.
  2. Determine the IOPS required to fulfill the throughput requirements of your workload.
    • Required IOPS = throughput in KB per second / 256
  3. Set the provisioned IOPS to the larger of the two numbers.

Console

  1. Create a new persistent disk.
  2. Under Disk type, select Extreme persistent disk.
  3. Under Provisioned IOPS, select the maximum IOPS limit in the range of 2,500 to 120,000 IOPS. There is a cost associated with the provisioned IOPS.

gcloud

Use the gcloud compute disks create command to create a new disk and include the following flags:

gcloud compute disks create DISK_NAME \
  --size=DISK_SIZE \
  --type=pd-extreme \
  --provisioned-iops=IOPS_LIMIT

Replace the following:

  • DISK_NAME: the name of the new disk
  • DISK_SIZE: the size, in GB, of the new disk. The default disk size for extreme persistent disks is 1,000 GB.
  • IOPS_LIMIT: the maximum IOPS limit in the range of 2,500 to 120,000 IOPS. There is a cost associated with the provisioned IOPS.

REST

Use the disks.insert method to create a new disk and include the following flags:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks

{
 "name": "DISK_NAME",
 "type": "zones/ZONE/diskTypes/pd-extreme"
 "provisionedIops": "IOPS_LIMIT"
}

Replace the following:

  • PROJECT_ID: your project ID
  • ZONE: the target zone for the disk
  • DISK_NAME: a name for the disk
  • IOPS_LIMIT: the maximum IOPS limit in the range of 2,500 to 120,000 IOPS. There is a cost associated with the provisioned IOPS.

What's next?