Use Provisioned IOPS Volumes

This document describes how to use the provisioned IOPS (Input/Output Operations Per Second) volumes with Engine Yard Cloud.

With provisioned IOPS volumes, you can tune your EBS volumes to the performance levels you need. You can configure database and utility instances (for Riak or MongoDB for example) with provisioned IOPS volumes.

We recommend using provisioned IOPS volumes with EBS optimized instances to increase reliability as well as performance levels.

Provisioned IOPS volumes can provide the high level of predictable performance that your database master needs by increasing speed and lowering the variability of I/O responses.

Get started with provisioned IOPS volumes on Engine Yard Cloud

Prerequisites

  • This article assumes you already have an Engine Yard account. If not, see Sign up for an Engine Yard Account.
  • You must:

    • Add a new instance to use this feature. You cannot modify an existing instance / volume.
    • Use 64-bit instances (32-bit instances are not supported).

Configure provisioned IOPS volumes

Important: We recommend testing in a staging environment before applying changes in a production environment.

You can configure provisioned IOPS volumes when you add new database or utility instances to a new or existing environment.

To add a new instance using provisioned IOPS volumes

  1. Add an instance in the usual way.

    See the database docs for more information about adding a database instance to an environment.

  2. Specify the appropriate volume size.

    Note: The ratio of IOPS to GB can be up to 50:1. For example, 5000 IOPS needs a volume size of at least 100 GB.

  3. Specify the Provisioned IOPS value you need for the volume.

    Setting_PIOPS.png

    Notes:

    • When you create a new environment, you cannot set the provisioned IOPS value for a database replica, its value automatically matches the database master.
    • For previous generation instances please be sure to select the "EBS-Optimized" version of the instance.
  4. Click Add to Cluster.

    See the related documentation for more information on adding instances to your environment.

    Note: You also need to click Apply to update the database.yml file.

Verify provisioned IOPS volumes

Note: When you are testing in staging, consider the differences between your test and production loads.

To verify provisioned IOPS volumes

  1. Ensure that instance provisioning worked and the instance is running.

    In general, that is enough of an indication that provisioned IOPS is working fine.

  2. You can use I/O benchmarking utilities to verify that the performance levels are what you need.
  3. Review the Performance notes below for more information.

Performance

The following performance notes apply to provisioned IOPS volumes.

Prepare the volume before use in production

First access to a new provisioned IOPS volume can have a 5 to 50 percent reduction in IOPS. For a completely new volume: write to all blocks before using it. For a new volume created from a snapshot: read all the blocks that have data before using it.

Use with EBS optimized instances

Provisioned IOPS volumes are designed to deliver the expected performance when attached to an EBS optimized instance.

Plan snapshots

Weigh the need for frequent snapshots due to rapidly changing data, versus the expected performance degradation during the snapshot. Create snapshots at off-peak hours whenever possible.

Benchmark

The best measures of provisioned IOPS performance are throughput and average queue length (number of pending I/O requests). Strive to maintain an average queue length (rounded up) of 1 for every 200 provisioned IOPS in a minute.

Troubleshooting

This table contains troubleshooting tips related to provisioned IOPS volumes.

Symptom Solution
The new instance appears to be stuck in Chef provisioning. This can happen when the EBS instance has been provisioned yet the PIOPS volume provisioning did not succeed. Try terminating and reprovisioning the instance. See the known issue for more information.
The instance did not provision and gives an unspecified configuration error, or something like this: InvalidParameterValue => Iops to volume size ratio of 500.0 is too high; maximum is 50.0 Be sure your IOPS to volume size (GB) ratio is not higher than 50:1.

More information

This table provides other resources related to provisioned IOPS volumes.

For more information about... See...
Using EBS optimized instances Use EBS Optimized Instances with Engine Yard Cloud
Adding an instance to an environment Add Instances to an Environment
Adding a database instance to an environment Add a database replica (slave) to an existing environment

If you have feedback or questions about this page, add a comment below. If you need help, submit a ticket with Engine Yard Support.

Comments

Article is closed for comments.