Throttles for pools
You can create, modify, and remove throttles for pools by using the management GUI or the command-line interface.
Throttling is a mechanism to control the amount of
resources that are used when the system is processing I/Os on a specific pool. If a throttle is
defined, the system either processes the I/O, or delays the processing of the I/O to free resources
for more critical I/O.
You can set throttles for
both parent and child pools. Throttles work in a hierarchy when they are applied to both the parent
and child pool. Throttles that are defined in the parent pool applies to volumes in both parent and
child pools. However, throttles that are defined on the child pool only apply to the volumes in that
child pool. For mirrored volumes that are in different pools, only the throttling that applies to
the primary copy is considered, regardless of which copy the I/O is directed to. In this case, any
throttles defined on the secondary copy of the volume are ignored. Only throttles on the primary
copy are used, whether the pool is parent or child pool. When throttles are defined in both parent
and child pools, the more restrictive throttle applies to the volume in the child pool, but the I/O
is counted against both pools. Consider these examples:
- A parent pool is configured with a throttling limit of 5K IOPS and its single child pool had a limit at 3K IOPS. When I/O operations to a volume in the child pool reaches the throttling limit, the volume cannot receive any more I/O during that time. However, volumes in the parent pool can still use 2K of IOPS to process during that time.
- A parent pool is configured with a throttling limit of 4K IOPS . The parent pool also has two child pool and each child pool has a throttling limit of 3K of IOPS.
- A parent pool is configured with a throttling limit of 5K IOPS . The parent pool has also has two child pool without a throttle defined. All in all, the volumes in each pool cannot handle more than 4K IOPS but each of these pools can could serve its IOPS limit if the volumes in the other pools consume at a lower rate of IOPS In this example, the volumes in the parent and both child pools can reach the 5K IOPS together, regardless of which pool the volumes are located.
Using the management GUI
You can create, edit, and remove throttle for a specific pool by using the panel. On the Edit Throttle page, enter values for the
following throttles:
- Bandwidth Limit
- Enter the maximum amount of bandwidth the pool can process before the system delays I/O processing for this pool.
- IOPS Limit
- Enter the maximum I/O operations per second the pool can process before the system delays I/O processing for this pool.
Using the command-line interface
You can use mkthrottle command to create a new throttle for bandwidth and IOPS for a pool.
You can use chthrottle command to change an existing throttle for the volume and rmthrottle command to remove a throttle for pool.