mmchqos command

Changes the Quality of Service for I/O operations (QoS) settings for a file system.

Synopsis

mmchqos Device --enable [--reset] [--force]
        [pool=StoragePool[,QOSClass={nnnIOPS | unlimited}][,QOSClass={nnnIOPS | unlimited}] ...]
or
mmchqos Device --disable 

Availability

Available on all IBM Spectrum Scale™ editions.

Description

With the mmchqos command, you can regulate I/O access to a specified storage pool by allocating shares of I/O operations to two QoS classes:
  • A maintenance class for I/O-intensive, potentially long-running GPFS™ commands. Typically you assign fewer IOPS to this class to prevent the I/O-intensive commands from dominating file system performance and significantly delaying other tasks.
  • An other class for all other processes. Typically you assign more IOPS or unlimited to this class so that normal processes have greater access to I/O resources and finish more quickly.

A third class, misc, is used to count the IOPS that some critical file system processes consume. You cannot assign IOPS to this class, but its count of IOPS is displayed in the output of the mmlsqos command.

When QoS is enabled, it restricts the active processes in a QoS class from collectively consuming more than the number of IOPS that you allocate to the class. It queues further I/O attempts until more I/O operations become available.

Remember the following points:
  • You can allocate shares of IOPS separately for each storage pool.
  • QoS divides each IOPS allocation equally among the nodes that have the file system mounted.
  • Allocations persist across unmounting and remounting the file system.
  • QoS stops applying allocations when you unmount the file system and resumes when you remount it.
  • When you change allocations or mount the file system, a brief delay due to reconfiguration occurs before QoS starts applying allocations.
For more information about this command, see Setting the Quality of Service for I/O operations (QoS).

Parameters

Device
The device name of the file system to which the command applies.
--enable
Causes QoS to start or to continue applying IOPS allocations. If you are specifying this option for the first time, then QoS sets any QoS classes that you do not specify in the command to unlimited IOPS. On subsequent enables, by default, QoS sets only the IOPS allocations that you specify in the command. It does not disturb other IOPS allocations. Compare the --reset parameter.
--disable
Causes QoS to stop applying IOPS allocations. Lets the file system run without any participation by QoS.
--reset
Causes QoS to set any QoS classes that you do not specify in the same command to unlimited IOPS.

When you enter multiple mmchqos commands for different storage pools, QoS typically records the settings for each pool and regulates the I/O consumption of each pool accordingly. However, with the --reset parameter, QoS discards the settings for all pools that are not specified in the same command. You can use this feature to discard the settings for any pools that you no longer want QoS to regulate and monitor.

--force
Causes QoS to accept an IOPS value lower than 100 IOPS.

Assigning less than 100 IOPS to a class is typically ineffective, because processes in that class run for an indefinitely long time. Therefore, the mmchqoscommand rejects IOPS values less than 100IOPS with an error message, unless you specify the --force option.

StoragePool
Specifies a storage pool to whose QoS classes the IOPS are allocated. If you specify an asterisk (*) as the pool name, then the IOPS are allocated to the QoS classes of unspecified pools. Unspecified pools are storage pools that you have not specified by name in any previous mmchqos command.

QOSClass
The QoS class to which IOPS are allocated. You can specify one of the following classes:
maintenance
Most I/O-intensive, potentially slow-running GPFS administration commands run in this class by default. See the list of commands that support QoS in Table 1. Typically, you allocate fewer IOPS to this QoS class so that the commands that belong to it do not reduce overall file system performance.

When you start one of these commands, you can explicitly assign it to either QoS class. In certain situations, you might assign one of these commands to the other class so that it runs faster and completes sooner. The assignment is effective only for the instance of the command that you are starting.

other
All other processes that use I/O run in this class by default. Typically you assign more IOPS or unlimited to this class so that normal processes have greater access to I/O resources and finish more quickly.

Some I/O-intensive, potentially slow-running GPFS administration commands run in this class by default. (Currently just one: mmchdisk.) See the list of commands that support QoS in Table 1. When you start one of these commands, you can explicitly assign it to either QoS class. In certain situations, you might want to assign one of these commands to the maintenance class so that normal processes can finish more quickly. The assignment is effective only for the instance of the command that you are starting.

The following table lists the GPFS commands that support QoS and the QoS class that the command runs in by default:
Table 1. GPFS commands that support QoS
Commands that support QoS Default QoS class
mmadddisk maintenance
mmapplypolicy maintenance
mmbackup maintenance
mmchdisk other
mmcheckquota maintenance
mmdefrags maintenance
mmdeldisk maintenance
mmdelfileset maintenance
mmdelsnapshot maintenance
mmdf maintenance
mmfileid maintenance
mmfsck maintenance
mmimgbackup maintenance
mmimgrestore maintenance
mmlssnapshot maintenance
mmrestripefs maintenance
mmrpldisk maintenance
nnnIOPS
You can use the following values for IOPS:
  • A value in the range 0IOPS - 1999999999IOPS. For an IOPS value less than 100, you must specify the -force option. Otherwise, QoS displays an error message like the following one:
    maintenance=99iops is not reasonable. To insist, try --force.

    QoS divides the IOPS allocation equally among the relevant nodes.

  • unlimited: QoS does not restrict access to I/O operations.

Exit status

0
Successful completion.
Nonzero
A failure occurred.

Security

You must have root authority to run the mmchqos command.

The node on which you enter the command must be able to execute remote shell commands on any other administration node in the cluster. It must be able to do so without the use of a password and without producing any extraneous messages. For more information, see Requirements for administering a GPFS file system.

Examples

  1. The following command enables QoS and allocates default IOPS values to the QoS classes maintenance and other in all storage pools. The default values depend on whether you previously enabled QoS. If so, then the QoS classes are set to their previous values. If not, then the classes are set to unlimited:
    mmchqos fs0 --enable
  2. The following command disables QoS but does not change the allocations of IOPS:
    mmchqos fs0 --disable
  3. The following command enables QoS and allocates 123 IOPS to the maintenance class of each unspecified pool. By default it sets the other class of each unspecified pool to unlimited:
    mmchqos fs0 --enable pool=*,maintenance=123IOPS
  4. The following command enables QoS and allocates 222 IOPS to the maintenance class of each unspecified pool. It also allocates 576 IOPS to the maintenance class of the pool mySSDs. By default it sets the other classes of each unspecified pool and mySSDs to unlimited. You might make an allocation like this one to favor a pool of high-speed storage (mySSDs) that you expect to be accessed frequently:
    Storage pool maintenance class other class
    Each unspecified pool 222IOPS unlimited
    mySSDs 567IOPS unlimited
    mmchqos fs0 --enable pool=*,maintenance=222IOPS pool=mySSDs,maintenance=567IOPS
  5. The following command enables QoS and allocates IOPS to the classes of the unspecified pools and three named pools:
    Storage pool maintenance class other class
    Each unspecified pool 444IOPS 555IOPS
    system 111IOPS unlimited
    second 222IOPS unlimited
    third 333IOPS unlimited
    The command is all on one line:
    mmchqos fs0 --enable pool=*,maintenance=444IOPS,other=555iops
                    pool=system,maintenance=111IOPS,other=unlimited
                    pool=second,maintenance=222IOPS,other=unlimited
                    pool=third,other=unlimited,maintenance=333IOPS
  6. The following command enables QoS and allocates IOPS to the classes of three named pools. By default, it also sets both classes of each unspecified pool to unlimited:
    Storage pool maintenance class other class
    Each unspecified pool unlimited unlimited
    system 111IOPS unlimited
    second 222IOPS unlimited
    third 333IOPS unlimited
    The command is all on one line:
    mmchqos fs0 --enable pool=system,maintenance=111IOPS,other=unlimited
                    pool=second,maintenance=222IOPS,other=unlimited
                    pool=third,other=unlimited,maintenance=333IOPS
  7. The following command enables QoS and allocates IOPS to both classes of the system pool. Also, because the command contains the --reset parameter, it sets both classes of all the other storage pools in the file system to unlimited. The reset affects not only any unspecified pools, but also any named pools that are not explicitly mentioned in this command.
    Storage pool maintenance class other class
    system 111IOPS unlimited
    Each unspecified pool, if any unlimited unlimited
    Each named pool, if any, other than system unlimited unlimited
    The command is all on one line:
    mmchqos fs0 --enable --reset pool=system,maintenance=111IOPS,other=unlimited
  8. The first part of the following command assigns IOPS to the QoS classes of the unspecified pools. It assigns 222 IOPS to the maintenance class of each unspecified pool. And by default, it assigns unlimited to the other class of each unspecified pool.

    The second part of the command allocates 456 IOPS to the other class of the storage pool mySAN, rather than assigning it the default value unlimited. You might make an allocation like this one to a SAN controller that serves both GPFS and other systems.

    Storage pool maintenance class other class
    Each unspecified pool 222IOPS unlimited
    mySAN 123IOPS 456IOPS
    The command is all on one line:
    mmchqos fs0 --enable pool=*,maintenance=222IOPS
                    pool=mySAN,other=456IOPS,maintenance=123IOPS

Location

/usr/lpp/mmfs/bin