mmqos command

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

Synopsis

mmqos class create Device --class ClassName [--fileset FilesetName[,FilesetName...]]
or
mmqos class update Device --class ClassName [{ {add | replace} --fileset FilesetName[,FilesetName...] |
   --remove --fileset FilesetName}]
or
mmqos class delete Device --class ClassName
or
mmqos class set Device --class ClassName Attribute=Value[,Attribute=Value...] 
or
mmqos class list Device [--config] [-Y]
or
mmqos throttle create Device --pool PoolName --class ClassName
   [{-N {Node | NodeClass} | -C {all | all_local | all_remote | ClusterName}}]
   {[--maxiops MaxIOPS] [--maxmbs MaxMBS]} [--force] 
or
mmqos throttle update Device --pool PoolName --class ClassName
   {-N {Node | NodeClass} | -C {all | all_local | all_remote | ClusterName}}
   {[--maxiops MaxIOPS] [--maxmbs MaxMBS]} [--force] 
or
mmqos throttle updateKey Device --pool PoolName --class ClassName
   [{-N {Node | NodeClass} | -C {all | all_local | all_remote | ClusterName}}]
   {--new-N {Node | NodeClass} | --new-C {all | all_local | all_remote | ClusterName} }
or
mmqos throttle delete Device --pool PoolName --class ClassName
   [{-N {Node | NodeClass} | -C {all | all_local | all_remote | ClusterName}}]
or
mmqos throttle list Device [{--pool PoolName | --class ClassName}] [-Y]
or
mmqos config set Device Attribute=Value[,Attribute=Value...]
or
mmqos config list Device [-Y]
or
mmqos filesystem init Device
or
mmqos filesystem enable Device
or
mmqos filesystem disable Device
or
mmqos filesystem reset Device
or
mmqos filesystem refresh Device
or
mmqos filesystem list [-Y]
or
mmqos filesystem status Device [-Y]
or
mmqos filesystem restore --restore-file RestoreFile
or
mmqos report list Device [--pool {all | PoolName}] [--seconds Seconds] [--sum-classes {yes | no}]
   [--sum-nodes {yes | no}] [{-Y | --fine-stats-display-range FineStatsDisplayRange}]

Availability

Available on all IBM Storage Scale editions.

Description

The mmqos command is used to configure QoS in IBM Storage Scale to regulate I/O access to disk storage pools. This capability prevents I/O intensive processes from dominating storage access and adversely affecting other processes. Disk storage pools include the system storage pool and storage pools that the user defines.

The mmqos command enables administrators to perform the following QoS tasks:
  • Define QoS objects, including classes and throttles.
  • Configure QoS settings and attributes for file systems and QoS classes.
  • Configure I/O limits, which are specified as I/O operations per second (IOPS) or megabytes per second (MB/s), to control workload performance.
  • Monitor I/O performance and overall storage resource utilization.
  • Configure dynamic QoS rebalancing (DQR) to optimize the distribution of storage resources.
  • Set aggregate I/O limits at the filesystem-pool levels.

For detailed information about QoS concepts, objects, and workflows, see Quality of service.

The mmqos command supports management of QoS user classes and capabilities such as dynamic QoS rebalancing (DQR) and limits for file system pools, in addition to providing all functionality previously available through the mmchqos and mmlsqos commands.

Warning: The mmqos command is the recommended CLI for all QoS functions and it is intended to replace the mmchqos command, which will be removed in a future release. Because only one of these commands can be used on a file system at a time, it is strongly recommended to migrate existing configurations that are based on mmchqos to mmqos. If you have been using mmchqos to configure QoS and attempt to use mmqos to modify that configuration, mmqos fails with a usage error. Similarly, if you begin configuring a QoS file system with mmqos and then try to use mmchqos, mmchqos also fails with a usage error.

To migrate configuration from mmchqos to mmqos:

  1. Save your QoS configuration for reference.
  2. Reset all mmchqos-based configuration by using the following commands:
    mmchqos Device --reset --stat-poll-interval 0 --stat-slot-time 0
    mmchqos Device --disable
  3. Manually re-create the QoS configuration from scratch by using mmqos.
Limitations and general considerations:
  • The mmqos command is subject to the following limitations:
    • The mmqos command is available only for the Linux® operating system. However, the QoS configuration that it creates is enforced uniformly across all nodes that mount the file system, regardless of their operating system.
    • The mmqos command can be run only on a local node within the storage cluster. It cannot be run on a node that remotely mounts an IBM Storage Scale file system.
  • Enabling and disabling QoS services is analogous to mmshutdown and mmstartup for the file system. The QoS services within the daemon are either started or stopped and the action to enable or disable should be infrequent.
  • Each invocation of the mmqos command that modifies the configuration (such as create, update, delete, set, enable, or disable) causes the daemon to reread the QoS configuration from the CCR. This can introduce a brief delay of a few seconds before the updated configuration takes effect. Therefore, large-scale configuration updates are more efficient when batched together after temporarily disabling QoS.
  • Dynamic QoS rebalancing (DQR) was previously known as mount dynamic I/O (MDIO) in IBM Storage Scale versions that were released before 6.0.0. Existing MDIO configuration setting mdio-enabled for user classes and the throttle for mdio-all-sharing to enable QoS class share remain valid and compatible with DQR. However, it is recommended to use the new DQR attributes for any future changes. If the cluster minimum release level is 6.0.0 or higher, attributes and class names display the dqr prefix; otherwise, they display the legacy mdio prefix.
  • If a system object that can be an element of a QoS class or a QoS throttle (such as a fileset, pool, node, node class, or cluster) is deleted before the associated class or throttle itself, the corresponding command attempts to clean up and reconcile the QoS configuration to help ensure that no dangling references to nonexistent objects remain. The following commands automatically clean up QoS data when those system objects are deleted:
    • mmdelfileset (filesets)
    • mmdelnode (nodes)
    • mmdelnodeclass (node classes)
    • mmauth (remote cluster names)
    • mmdeldisk (pools)

Parameters

class
Commands for working with QoS classes.
Note: The class create, class update, class updatekey, and class delete commands apply only to QoS user classes, not to QoS system classes. You cannot create, update, do an update key on, or delete a QoS system class.
create
Creates a QoS user class.
Device
The device name of the file system.
--class ClassName
The name of the user class.
[--fileset FilesetName [,FilesetName...]]
The names of zero or more filesets to be included in the user class. If you do not specify a fileset, you can add filesets to the class later with the class update add command.

update
Adds, replaces, or removes filesets from a QoS user class.
Device
The device name of the file system.
--class ClassName
The name of the QoS user class to be updated.
{--add | --replace | --remove}
The action to be done.
--add
Adds one or more filesets to the class.
--replace
Removes all filesets from the class and adds the specified filesets to the class. If a class has ten filesets and you specify --replace with two filesets, the command removes the ten filesets and adds the two filesets that you specify.
--remove
Removes a fileset from the class. You can remove only one fileset at a time.
Note: If the class includes only one fileset, you cannot remove it. If you want to keep the class but delete the fileset, you can add a second fileset to the class and then remove the first fileset. If you do not want to keep the class, you can delete the class with the class delete command.
[--fileset FilesetName [,FilesetName...]]
The names of one or more filesets to be added to or removed from the QoS user class. If the command is remove, you can specify only one fileset per command invocation.

delete
Deletes a QoS user class. If a class has throttles, you must delete the throttles before you can delete the class.
Device
The device name of the file system.
--class ClassName
The user class to be deleted.

set
Sets the value of an attribute for a QoS user class and system class.
Note: Other QoS attributes exist and are set at the file system level for all QoS user classes in the file system. For more information, see the description of the mmqos config set command.
Device
The device name of the file system.
--class ClassName
The user class or system class for which the attributes are set.
Attribute=Value[, Attribute=Value...]
The following attribute can be set:
dqr-enabled={yes | no}
Enables or disables DQR for the class. By default, the value of this class attribute for user classes shadows the value of the file-system-level dqr-enabled attribute. When you set the value of this class attribute here, the value becomes fixed and no longer shadows the value of the file-system-level attribute.

By default, DQR is enabled for QoS user classes and disabled for standard system classes.

list
Lists the QoS system classes and QoS user classes that are defined in the specified file system. For user classes, the command also lists the filesets that belong to the class.
Device
The device name of the file system.
[--config]
Instead of listing the filesets for each user class, the command lists the configuration settings for each user class. For more information, see the description of the mmqos class set option.
-Y
Displays the command output in a parseable format with a colon (:) as a field delimiter. Each column is described by a header.
Note: Fields that have a colon (:) are encoded to prevent confusion. For the set of characters that might be encoded, see the command documentation of mmclidecode. Use the mmclidecode command to decode the field.

throttle
Commands for working with QoS throttles. These commands apply to both system classes and user classes.

For more information, see Throttles for QoS classes.

create
Creates a QoS throttle for the specified file system, storage pool, and QoS class.
Device
The device name of the file system.
--pool [PoolName | default]
A storage pool.
--class ClassName
A QoS user class or a QoS system class.

-N {Node | NodeClass }
The local nodes among which the IOPS or MB/s for this throttle are to be divided. Also referred to as the throttle scope.
Node
The specified local node.
NodeClass
The nodes in the specified local node class. The node class mount is not supported.

For general information on how to specify node names, see Specifying nodes as input to GPFS commands.

-C {all | all_local | all_remote | ClusterName}
The nodes among which the IOPS or MB/s for this throttle are to be divided. Also referred to as the throttle scope.
all
All nodes that have mounted the file system, no matter which cluster the node belongs to. This group includes nodes in the cluster that owns the file system and nodes that belong to clusters that have remotely mounted the file system.
all_local
All nodes that have mounted the file system and that belong to the cluster that owns the file system.
all_remote
All nodes that have mounted the file system and are part of any cluster that has remotely mounted the file system.
ClusterName
All nodes that have mounted the file system and that belong to the specified cluster.
--maxiops MaxIOPS
The IOPS that is to be divided among the nodes governed by this throttle.
  • The default value is unlimited.
  • The valid range is 0 to 1,999,999,999.
  • To specify a value less than 100, you must use the force option.
--maxmbs maxMBS
The megabytes per second (MB/s) of data transfer to be divided among the nodes governed by this throttle.
  • The default value is unlimited.
  • The valid range is 0 to 1,999,999,999.
  • To specify a value less than 100, you must use the force option.
--force
Overrides the lower limit on the number of IOPS or MB/s that can be allocated to a throttle. QoS enforces a lower limit of 100 IOPS or 100 MB/s for the values set by using the --maxiops or --maxmbs option. To specify a value below these limits, you must use the --force option. Setting a value below the minimum may cause the processes affected by the throttle to run for an indefinitely long time.

update
Updates the IOPS limit or the MB/s limit of the specified throttle.
Important: If you specified the -N or -C option in the mmmqos throttle create command or if you used the -N or -C option in the mmqos throttle updatekey command to change the throttle scope, you must specify the same -N or -C option here as the current throttle scope. If you did not specify the -N or the -C option in either command, you do not have to specify it here because the default value is being used.
Device
The device name of the file system.
--pool [PoolName | default]
A storage pool. Be sure to specify the correct storage pool for the throttle that you want to update.
--class ClassName
A QoS user class or system class. Be sure to specify the correct class for the throttle that you want to update.
-N {Node | NodeClass }
The nodes among which the IOPS or MB/s for this throttle are to be divided. See the information about this option in the description of the mmqos throttle create command.
-C {all | all_local | all_remote | ClusterName}
The nodes among which the IOPS or MB/s for this throttle are to be divided. See the information about this option in the description of the mmqos throttle create command.
--maxiops maxIOPS
The IOPS limit for this throttle. See the information about this option in the description of the mmqos throttle create command.
--maxmbs maxMBS
The MB/s limit for this throttle. See the information about this option in the description of the mmqos throttle create command.
--force
Overrides the lower limit on the number of IOPS or MB/s that can be allocated to a throttle. See the information about this option in the description of the mmqos throttle create command.
Note:
  • The four options such as --pool PoolName, --class ClassName, [{ -N {Node | NodeClass} | -C {all | all_remote | ClusterName} }] make up a unique key for throttle objects and this key cannot be updated. The throttle key must be deleted and can then be created again with new values.
  • To change the attributes of the objects such as [--maxIOPS MaxIOPS] and [--maxMBS MaxMBS], provide the exact key values for which those values were set. Otherwise, you get the following error:
    mmqos: Processing the new QOS configuration... 
    mmqos: The QOS configuration record was not found. Nothing to update.
  • If a key value is not set (because -N and -C are optional), it is still part of a key value but does not need to be supplied. That is, as these attributes are optional, if you did not specify them when creating the record, you should not specify them when updating it.
updatekey
Updates the throttle scope, which specifies the nodes across which the I/O limit of the throttle is to be applied. The throttle scope can be set by either the --new-N option or the --new-C option.
Important: If you specified the -N or -C option in the mmmqos throttle create command or if you used the -N or -C option in the mmqos throttle updatekey command to change the throttle scope, you must specify the same -N or -C option here as the current throttle scope. If you did not specify the -N or the -C option in either command, you do not have to specify it here because the default value is being used.
Device
The device name of the file system.
--pool [PoolName | default]
A storage pool. Be sure to specify the correct storage pool for the throttle that you want to update.
--class [ClassName | default]
A QoS user class or system class. Be sure to specify the correct class for the throttle that you want to update.
-N {Node | NodeClass }
The current throttle scope. See the information about this option in the description of the mmqos throttle create command.
-C {all | all_local | all_remote | ClusterName}
The current throttle scope. See the information about this option in the description of the mmqos throttle create command.
--new-N {Node | NodeClass }
The new throttle scope. See the information about the -N option in the description of the mmqos throttle create command.
--new-C {all | all_local | all_remote | ClusterName}
The new throttle scope. See the information about the -C option in the description of the mmqos throttle create command.
delete
Deletes the specified throttle.
Important: If you specified the -N or -C option in the mmmqos throttle create command or if you used the -N or -C option in the mmqos throttle updatekey command to change the throttle scope, you must specify the same -N or -C option here as the current throttle scope. If you did not specify the -N or the -C option in either command, you do not have to specify it here because the default value is being used.
Device
The device name of the file system.
--pool PoolName
The disk storage pool of the throttle that you want to delete.
--class ClassName
The QoS class for the throttle that you want to delete.
-N {Node | NodeClass }
The throttle scope of the throttle that you want to delete. See the information about this option in the description of the mmqos throttle create command.
-C {all | all_local | all_remote | ClusterName}
The throttle scope of the throttle that you want to delete. See the information about this option in the description of the mmqos throttle create command.

list
Lists the throttle system objects in the file system. You can specify either --pool or --class but not both. If you specify neither option, the command lists the throttle system objects for all pools and classes.
Device
The device name of the file system.
--pool PoolName
A storage pool. The command lists only the throttles that are configured to monitor the specified pool.
--class ClassName
A QoS class. The command lists only the throttles that are created for the specified class.
-Y
Displays the command output in a parseable format with a colon (:) as a field delimiter. Each column is described by a header.
Note: Fields that have a colon (:) are encoded to prevent confusion. For the set of characters that might be encoded, see the command documentation of mmclidecode. Use the mmclidecode command to decode the field.

config
Controls QoS attributes that apply at the file system level.
Note: To work with the same QoS attributes that are applicable at the class level, see the descriptions of the following commands:
  • mmqos class set
  • mmqos class list
set Device Attribute=Value[,Attribute=Value...]
Sets one or more file-system-level attributes to the specified values.

For example, the following command sets the fine-stats attribute to 30.

mmqos config set Device fine-stats=30

The following table shows the initial values of all the file-system-level attributes when QoS is initialized.

Table 1. Attributes at the file system level
Attribute Value when QoS is initialized
fileset-stats no
fine-stats 0
dqr-enabled yes
pid-stats no
skim-factor 0.987
stat-poll-interval 5
stat-slot-time 1000
Device
The device name of the file system.

Attribute=Value[,Attribute=Value...]
The name of the attribute and the value to set for the attribute. The following attributes can be set:

fileset-stats={yes | no}
Specifies whether QoS collects performance statistics at the fileset level for the class. The default value is no.

Fileset-level statistics are automatically enabled if a throttle is defined for any user class. This option is effective only when --fine-stats is nonzero and cannot be used with --pid-stats.

fine-stats=Seconds
Specifies how many seconds of fine-grained statistics QoS should retain in memory, allowing the mmqos report list command to display them. The default value is 0, which means that QoS does not save any fine-grained statistics. The valid range is 0 – 3840 seconds.

Fine-grained statistics are collected at every slat-slot-time interval and provide more detail than regular statistics. Their display is controlled by the --fine-stats-display-range option of the mmqos report list command.

For more information, see Analyzing fine-grained output from the mmqos report list command.

dqr-enabled={yes | no}
Enables or disables DQR.

By default, DQR is enabled for QoS user classes and disabled for standard system classes.

pid-stats= {yes | no}
Specifies whether QoS collects performance statistics for each process that accesses the storage pool through the class. The default value is no.

This option is effective only when --fine-stats is nonzero and is mutually exclusive with --fileset-stats.

skim-factor=Fraction
This attribute applies only to QoS system classes. If throttles from two or more QoS classes are operating and one class has a surplus of unused I/O capacity, QoS appropriates or "skims" the unused I/O capacity and assigns it to other classes that need more I/O capacity. The skim-factor attribute specifies the fraction of I/O capacity that cannot be skimmed from the class by other classes. The default value is 0.987, which means that only 1.3 percent of the I/O capacity of the class can be skimmed by other classes.

It is a good idea not to modify the value of this attribute without a strong reason.

stat-poll-interval=Seconds
Specifies the length of interval, in seconds, during which QoS statistics are collected by a node to be sent to the QoS manager node.

The valid range of values for stat-poll-interval is 5 - 60 seconds in one-second intervals. The stat-poll-interval must be a multiple of the stat-slot-time attribute.

stat-slot-time Milliseconds
Specifies the amount of time in milliseconds that QoS waits after the end of one stat-poll-interval before starting the next. The valid range is 100 to 60000. If the value is less than 1000 milliseconds, it must be one of the following values: 100, 125, 200, 250, or 500 milliseconds.

Both stat-poll-interval and stat-slot-time accept a special value of 0; when both are set to 0, the attributes revert to automatic adjustment mode.

For default values and guidance on selecting appropriate values based on the number of nodes mounting a file system, see QoS statistics and Scalability considerations.

list
Lists the current QoS attribute settings for the specified file system.
Note: You can issue this command action early in the configuration process to view the default attribute values. The following example shows the attribute after running the mmqos filesystem enable Device command, where Device is gpfs1:
# mmqos config list gpfs1
 Configuration Option            Configuration Value
----------------------------------------------------
 fine-stats                      0				
 pid-stats                       no
 stat-poll-interval              5
 stat-slot-time                  100
 fileset-stats                   no
 skim-factor                     0

All the settings that are listed in this example are default values.

Device
The device name of the file system.
-Y
Displays the command output in a parseable format with a colon (:) as a field delimiter. Each column is described by a header.
Note: Fields that have a colon (:) are encoded to prevent confusion. For the set of characters that might be encoded, see the command documentation of mmclidecode. Use the mmclidecode command to decode the field.

filesystem
Commands for controlling QoS processing for the specified file system.
init
Initializes the QoS environment for the specified file system. QoS initializes itself automatically if you issue a command that sets a configuration value, such as mmqos class create.
Device
The device name of the file system.
enable
Enables QoS processing for the specified file system. QoS begins or resumes regulating I/O operations and accumulating I/O performance statistics. This command does not modify any user-created QoS configuration and does not discard accumulated performance statistics.
Device
The device name of the file system.
disable
Disables QoS processing for the specified file system. QoS stops regulating I/O operations and ceases accumulating performance statistics. This command does not modify any user-created QoS configuration and does not discard accumulated performance statistics.
Device
The device name of the file system.
reset
Removes all user-created QoS configuration information and accumulated performance statistics for the specified file system. This operation resets the QoS configuration to the same state as initialized by the mmqos filesystem init command. This command fails if QoS is currently in the enabled state. You can use this option to delete and recover from an inconsistent or corrupted QoS configuration.
Warning: Issue this command only if you are certain that QoS functionality is no longer needed for the file system. No backup of the existing QoS configuration is created during this operation. If this feature is needed again after a reset, you must manually and entirely re-create the QoS configuration.

Before you run this command, make sure that any required QoS configuration information is separately backed up.

Device
The device name of the file system.
refresh
Refreshes the active QoS configuration in the IBM Storage Scale daemon from the main QoS configuration that is stored in the CCR.
Device
The device name of the file system.

list [-Y]
Lists the file systems in the current cluster that are configured for QoS. Notice that this command does not require a device name as the first option.
-Y
Displays the command output in a parseable format with a colon (:) as a field delimiter. Each column is described by a header.
Note: Fields that have a colon (:) are encoded to prevent confusion. For the set of characters that might be encoded, see the command documentation of mmclidecode. Use the mmclidecode command to decode the field.
status [-Y]
Displays the current status of QoS for the specified file system.
Device
The device name of the file system.
-Y
Displays the command output in a parseable format with a colon (:) as a field delimiter. Each column is described by a header.
Note: Fields that have a colon (:) are encoded to prevent confusion. For the set of characters that might be encoded, see the command documentation of mmclidecode. Use the mmclidecode command to decode the field.
The following example displays the QoS status for file system fs1:
# mmqos filesystem status fs1
                  Configuration Repository        Daemon
                  ------------------------        ------
State:            disabled                        disabled
Version:          49                              49
Throttling:       --                              inactive
Monitoring:       --                              inactive
The command displays QoS status information for the file system both as it exists in the CCR and as it exists in the file system:
State
Indicates whether QoS is initialized, enabled, disabled, or reset.
Version
Shows how many configuration changes have occurred since the first QoS configuration action was done for this file system.
Throttling
Indicates whether any throttle rules are created.
Note: In mmqos output the value "--" indicates that the measurement is not applicable in the current context. In the preceding example, it indicates that throttling and monitoring do not occur in the CCR environment.
Monitoring
Indicates whether performance statistics are being collected.

restore --restore-file RestoreFile
Restores the QoS configuration. Do not issue this command except with the guidance of IBM® Support for a disaster recovery for QoS configuration data.
Note: This function requires that the mmsdrbackup user exit for the CCR has been configured to ensure that there is a backup that includes the QoS data as part of the CCR backup.

report
Commands for reporting QoS statistics.
list
Writes a report to STDOUT.
Device
The device name of the file system.
--pool {all | PoolName}
The storage pools for which statistics are to be listed.
all
Lists statistics for all the pools that are assigned to QoS filesets.
PoolName
Lists statistics for the specified storage pool.
--seconds Seconds
Lists the QoS statistics that were collected during the previous specified number of seconds, relative to the current clock time. The valid range is from 1 to 6000 seconds; the default is 60 seconds. The values are reported over a series of subperiods that are determined by the specified number of seconds, as follows:
  • When the value is less than or equal to 70, each subperiod duration is stat-poll-interval and it yields a maximum of approximately 70/stat-poll-interval subperiods.
  • When the value is more than 70 and less than or equal to 720, the subperiod duration is 1 minute, with a maximum of 12 subperiods.
  • When the value is more than 720, the subperiod duration is 10 minutes, with a maximum of 10 subperiods.
--sum-classes {yes | no}
yes
Lists the sum of the I/O performance values of all the QoS classes.
no
Lists the I/O performance of each QoS class separately. This value is the default.
--sum-nodes {yes |no}
yes
Lists the sum of the I/O performance values of all the nodes. This value is the default.
no
Lists the I/O performance of each node separately.
-Y
Displays the command output in a parseable format with a colon (:) as a field delimiter. Each column is described by a header.
Note: Fields that have a colon (:) are encoded to prevent confusion. For the set of characters that might be encoded, see the command documentation of mmclidecode. Use the mmclidecode command to decode the field.
--fine-stats-display-range FineStatsDisplayRange
Lists the fine-grained statistics that are currently available in memory. The FineStatsDisplayRange values specify the indexes of the first and last blocks of statistics in the range of blocks that you want to list, such as 0-4. If you specify only one integer, such as 2, the command lists all the blocks in memory beginning with that index and going to the end. The last line of the output lists the index of the next block in memory. You can avoid relisting fine-grained statistics by beginning the next report at this block index.

Fine-grained statistics are collected at stat-slot-time intervals and contain more information than regular statistics. They are intended to be used as input for programs that analyze and display data, such as the example plotting program at /usr/lpp/mmfs/samples/charts/qosplotfine.pl.

For more information, see Analyzing fine-grained output from the mmqos report list command and Analyzing regular output from the mmqos report list command.

Exit status

0
Successful completion.
Nonzero
A failure occurred.

Security

You must have root authority to run the mmqos command.

The node on which you enter the command must be able to run 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. This example shows the steps for creating a new QoS configuration:
    1. Issue the mmqos class create command to create a user class HR_Dept_1 and to associate it with an existing fileset testfs1:
      # mmqos class create gpfs1 --class "HR_Dept_1" --fileset testfs1
      mmqos: Processing the new QOS configuration...
      mmqos: Validating configuration changes with the daemon...
      
      mmqos: Validation complete.
      mmqos: The configuration data was written to the CCR successfully.
      mmqos: Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos: Daemon update is complete.
      mmqos: Command completed. 
      
    2. Optionally, you can issue the mmqos class list command to verify that user class HR_Dept_1 has been created and is associated with fileset testfs1:
      # mmqos class list gpfs1
      Class Name            Type     Fileset Name
      -------------------------------------------
      maintenance           system   -- 
      other                 system   -- 
      misc                  system   -- 
      dqr-all-sharing       system   -- 
      dqr-fs-pool-limit     system   --
      HR_Dept_1             user     testfs1
      
    3. Issue mmqos throttle create command to create a throttle. In this example, the command does the following actions:
      1. It creates a new throttle.
      2. It associates the throttle with an existing storage pool C and with the new user class HR_Dept_1.
      3. It assigns 100 IOPS to the throttle. When user-started processes access storage pool C they are collectively able to consume up to 100 I/0 operations per second.
      # mmqos throttle create gpfs1 --pool C --class HR_Dept_1 --maxiops 100
      mmqos:  Processing the new QOS configuration...
      mmqos:  Validating configuration changes with the daemon...
      
      mmqos:  Validation complete.
      mmqos:  The configuration data was written to the CCR successfully.
      mmqos:  Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos:  Daemon update is complete.
      mmqos:  Completed.
    4. Optionally, issue the mmqos throttle list command to verify that the throttle has been created:
      # mmqos throttle list gpfs1
       Pool Name     Class Name       Node/Nodeclass  Cluster Scope      MaxIOPS    MaxMBS
      ------------------------------------------------------------------------------------
       C             HR_Dept_1        -               all                unlimited  100
      
    5. Issue the mmqos filesystem enable command to enable QoS processing for file system gpfs1:
      # mmqos filesystem enable gpfs1
      mmqos:  Processing the new QOS configuration...
      mmqos:  Validating configuration changes with the daemon...
      
      mmqos:  Validation complete.
      mmqos:  The configuration data was written to the CCR successfully.
      mmqos:  Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos:  Daemon update is complete.
      mmqos:  Completed.
      
    6. Optionally, issue the mmqos filesystem status command to list the QoS status for file system gpfs1
      #mmqos filesystem status gpfs1
                          Configuration Repository          Daemon
                          ------------------------          ------
      State:              Enabled                           enabled
      Version:            3                                 3
      Throttling:         --                                active
      Monitoring:         --                                active
      
      Configured System Objects:
      --------------------------
      QOS File Systems:         1
      System Classes:           5
      User Classes:             1
      Filesets:                 1
      Throttles:                1
      
    7. Issue the mmqos config set command to cause QoS to collect statistics for every process that accesses pool C:
      #mmqos config set  gpfs1  pid-stats=yes
      mmqos:  Processing the new QOS configuration...
      
      mmqos:  Processing config option 'pid-stats'
      mmqos:  Validating configuration changes with the daemon...
      
      mmqos:  Validation complete.
      mmqos:  The configuration data was written to the CCR successfully.
      mmqos:  Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos:  Daemon update is complete.
      mmqos:  Completed.
      
    8. Optionally, issue the mmqos config list command to display the current configuration for collecting QoS statistics for file system gpfs1. Because only pid-stats has been modified, the values that are shown for the other configuration settings are the default values:
      # mmqos config list gpfs1
       Configuration Option            Configuration Value
      -----------------------------------------------------
       fine-stats                      0         <default>  
       pid-stats                       no        <default>  
       stat-poll-interval              5         <default>      
       stat-slot-time                  1000      <default> 
       fileset-stats                   no        <default>
       skim-factor                     .987      <default>
       dqr-enabled                     yes       <default>
      
  2. The following example shows how to issue the mmqos report list command to get QoS status information for a file system and QoS statistics information for a storage pool. In this example, the file system is gpfs1 and the pool is C:
    # mmqos report list gpfs1 --pool C
    QOS config::    enabled -- --ccr:ccr-file-version=4            
    QOS values::    pool=system,other=inf,maintenance/all_local=inf:
                    pool=A,other=inf,maintenance/all_local=inf:
                    pool=B,other=inf,maintenance/all_local=inf:
                    pool=C,HR_Dept_1=100Iops,maintenance/all_local=inf,other=inf
    QOS status:     throttling active, monitoring active
    === for pool C
    01:50:45 misc iops=0.6 MBs=0.0019531 ioql=0.0004632 qsdl=4e-07 et=5
    mmqos: Command completed.
    
  3. The following example shows how to limit the I/O activity of the long running IBM Storage Scale maintenance commands that belong to the QoS maintenance system class. The mmqos class list command shows that only the five QoS system classes exist. No QoS user classes have been created:
    # mmqos class list gpfs1
     Class Name                      Class Type    Fileset Name
    -----------------------------------------------------------
     maintenance                     system        --
     other                           system        --
     misc                            system        --
     dqr-all-sharing                 system        --
     dqr-fs-pool-limit               system        --

    The following mmqos throttle create command creates a throttle for the maintenance class with an I/O limit of 200 MB/s. The command does not specify the -N or -C option, so QoS sets the scope of the new throttle to the default throttle scope value for the maintenance class, which is all_local:

    # mmqos throttle create gpfs1 --pool system --class maintenance --maxMBS 200
    mmqos: Detected the -N and -C options were not optionally supplied with the Maintenance class.
    mmqos: Processing the new QoS configuration...
    mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
    
    mmqos: Validation complete.
    mmqos: The configuration data was written to the CCR successfully
    mmqos: Calling the daemon to update the configuration within the cluster...
    
    QOS configuration has been installed and broadcast to all nodes.
    
    mmqos: Daemon update is complete.
    mmqos: Command completed.
    

    The mmqos throttle list command shows that the throttle has been created:

    # mmqos throttle list gpfs1
     Pool Name     Class Name     Node/Nodeclass    Cluster Scope      MaxIOPS    MaxMBS
    -------------------------------------------------------------------------------------
     system        maintenance    -                 all_local          unlimited  200
    

    This example assumes that QoS is already enabled in the file system, so it is not necessary to issue the mmqos filesystem enable command to start the new throttle working. The last step is to change the I/O limit of the throttle to 400 MB/s:

    # mmqos throttle update gpfs1 --pool system --class maintenance -C all_local --maxMBS 400
    mmqos: Processing the new QoS configuration...
    mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
    
    mmqos: Validation complete.
    mmqos: The configuration data was written to the CCR successfully
    mmqos: Calling the daemon to update the configuration within the cluster...
    
    QOS configuration has been installed and broadcast to all nodes.
    
    mmqos: Daemon update is complete.
    mmqos: Command completed.
    

    The mmqos throttle list command shows that the maximum MB/s setting has changed to 400:

    # mmqos throttle list gpfs1
     Pool Name     Class Name     Node/Nodeclass    Cluster Scope      MaxIOPS    MaxMBS
    -------------------------------------------------------------------------------------
     system        maintenance    -                 all_local          unlimited  400
    
  4. The following example shows how to create a QoS user class and modify the throttle scope and the I/O limits:
    1. The following mmqos class list command shows that no QoS user classes have been created yet:
      # mmqos class list gpfs1
       Class Name                      Class Type    Fileset Name
      -----------------------------------------------------------
       maintenance                     system        --
       other                           system        --
       misc                            system        --
       dqr-all-sharing                 system        --
       dqr-fs-pool-limit               system        --
    2. The following mmqos class create command creates the QoS user class HR_Dept_2, which includes filesets hrfset1 and hrfset2:
      # mmqos class create gpfs1 --class HR_Dept_2 --fileset hrfset1,hrfset2
      mmqos: Processing the new QoS configuration...
      mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
      
      mmqos: Validation complete.
      mmqos: The configuration data was written to the CCR successfully
      mmqos: Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos: Daemon update is complete.
      mmqos: Command completed.
      

      The mmqos class list command shows that the user class HR_Dept_2 is created:

      # mmqos class list gpfs1
       Class Name                      Class Type    Fileset Name
      -----------------------------------------------------------
       maintenance                     system        --
       other                           system        --
       misc                            system        --
       dqr-all-sharing                 system        --
       dqr-fs-pool-limit               system        --
       HR_Dept_2                       user          hrfset1,hrfset2
      
    3. A throttle is created for the new QoS user class. The --force option is used to set the I/O limit below 100 IOPS to 90 IOPS:
      # mmqos throttle create gpfs1 --pool system --class HR_Dept_2 --maxiops 90 --force
      mmqos: Processing the new QoS configuration...
      mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
      
      
      mmqos: Validation complete.
      mmqos: The configuration data was written to the CCR successfully
      mmqos: Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos: Daemon update is complete.
      mmqos: Command completed.
      

      The mmqos throttle list command shows that the throttle is created:

      # mmqos throttle list gpfs1
       Pool Name      Class Name     Node/Nodeclass     Cluster Scope      MaxIOPS    MaxMBS
      --------------------------------------------------------------------------------------
       system         maintenance    -                  all_local          unlimited  200
       system         HR_Dept_2      -                  -                  90         unlimited
      
    4. The mmqos throttle update command is issued to change the maximum IOPS setting of the throttle to 300 IOPS:
      # mmqos throttle update gpfs1 --pool system --class HR_Dept_2 --maxiops 300
      mmqos: Processing the new QoS configuration...
      mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
      
      mmqos: Validation complete.
      mmqos: The configuration data was written to the CCR successfully
      mmqos: Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos: Daemon update is complete.
      mmqos: Command completed.
      

      The mmqos throttle list command shows that the maximum IOPS for the throttle is now 300 IOPS:

      # mmqos throttle list gpfs1
       Pool Name      Class Name     Node/Nodeclass     Cluster Scope      MaxIOPS    MaxMBS
      --------------------------------------------------------------------------------------
       system         maintenance    -                  all_local          unlimited  200
       system         HR_Dept_2      -                  -                  300        unlimited
      
    5. The mmqos throttle updatekey command is issued to narrow the scope of the throttle to a single node gpfsnode2.gpfs.net:
      # mmqos throttle updatekey  gpfs1 --pool system --class HR_Dept_2  --new-N gpfsnode2.gpfs.net
      mmqos: Processing the new QoS configuration...
      mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
      
      mmqos: Validation complete.
      mmqos: The configuration data was written to the CCR successfully
      mmqos: Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos: Daemon update is complete.
      mmqos: Command completed.
      

      The mmqos throttle list command shows that the scope of the throttle is now set to node gpfsnode2.gpfs.net:

      # mmqos throttle list gpfs1
       Pool Name    Class Name     Node/Nodeclass         Cluster Scope     MaxIOPS    MaxMBS
      ---------------------------------------------------------------------------------------
       system       maintenance    -                      all_local         unlimited  200
       system       HR_Dept_2      gpfsnode2.gpfs.net     -                 300        unlimited
      
    6. The mmqos throttle update command is issued to change the maximum MB/s I/O limit to 400 MB/s. Notice that the new throttle scope -N gpfsnode2.gpfs.net must be specified explicitly to enable QoS to identify the throttle:
      # mmqos throttle update gpfs1 --pool system --class HR_Dept_2 -N gpfsnode2.gpfs.net --maxMBS 400
      mmqos: Processing the new QoS configuration...
      mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
      
      
      mmqos: Validation complete.
      mmqos: The configuration data was written to the CCR successfully
      mmqos: Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos: Daemon update is complete.
      mmqos: Command completed.
      

      The mmqos throttle list command shows that the throttle now has a maximum IOPS setting of 300 IOPS and a maximum MB/s setting of 400 MB/s:

      # mmqos throttle list gpfs1
       Pool Name      Class Name     Node/Nodeclass      Cluster Scope      MaxIOPS    MaxMBS
      ----------------------------------------------------------------------------------------
       system         maintenance    -                    all_local          unlimited  200
       system         HR_Dept_2      gpfsnode2.gpfs.net   -                  300        400
      
    7. Finally, the mmqos throttle delete command is issued to delete the throttle:
      # mmqos throttle delete gpfs1 --pool system --class HR_Dept_2 -N gpfsnode2.gpfs.net
      mmqos: Processing the new QoS configuration...
      mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
      
      mmqos: Validation complete.
      mmqos: The configuration data was written to the CCR successfully
      mmqos: Calling the daemon to update the configuration within the cluster...
      
      QOS configuration has been installed and broadcast to all nodes.
      
      mmqos: Daemon update is complete.
      mmqos: Command completed.
      

      The mmqos throttle list command no longer lists the QoS user throttle because it has been deleted:

      # mmqos throttle list gpfs1
       Pool Name      Class Name     Node/Nodeclass      Cluster Scope      MaxIOPS    MaxMBS
      ----------------------------------------------------------------------------------------
       system         maintenance    -                   all_local          unlimited  200
      
  5. The following example shows how to create a throttle for the dqr-all-sharing class to configure class sharing within the system pool and QoS user classes HR_Dept_1, HR_Dept_2 and HR_Dept_3. Initially, the mmqos class list command shows only the five system classes and the three user classes, each of which is bound to a fileset:
    # mmqos class list gpfs1
     Class Name                      Class Type    Fileset Name
    -----------------------------------------------------------
     maintenance                     system        --
     other                           system        --
     misc                            system        --
     dqr-all-sharing                 system        --
     dqr-fs-pool-limit               system        --
     HR_Dept_1                       user          fstest1
     HR_Dept_2                       user          fstest2
     HR_Dept_3                       user          fstest3

    The mmqos throttle list command lists a throttle for the maintenance class and a throttle for each of the three user classes. The pool for all throttles is the system storage pool:

    # mmqos throttle list gpfs1
     Pool Name     Class Name     Node/Nodeclass    Cluster Scope      MaxIOPS    MaxMBS
    -------------------------------------------------------------------------------------
     system        maintenance    -                 all_local          unlimited  100
     system        HR_Dept_1      -                 -                  unlimited  500
     system        HR_Dept_2      -                 -                  unlimited  300
     system        HR_Dept_3      -                 -                  unlimited  200

    The following mmqos throttle create command creates a throttle for the dqr-all-sharing system class with an I/O limit of 1000 MB/s:

    # mmqos throttle create gpfs1 --pool system --class dqr-all-sharing --maxmbs 1000
    mmqos: Processing the new QoS configuration...
    mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
    
    mmqos: Validation complete.
    mmqos: The configuration data was written to the CCR successfully
    mmqos: Calling the daemon to update the configuration within the cluster...
    
    QOS configuration has been installed and broadcast to all nodes.
    
    mmqos: Daemon update is complete.
    mmqos: Command completed.

    The mmqos throttle list command shows that the throttle for the dqr-all-sharing class is created:

    # mmqos throttle list gpfs1
     Pool Name     Class Name          Node/Nodeclass    Cluster Scope      MaxIOPS    MaxMBS
    -----------------------------------------------------------------------------------------
     system        maintenance         -                 all_local          unlimited  100
     system        HR_Dept_1           -                 -                  unlimited  500
     system        HR_Dept_2           -                 -                  unlimited  300
     system        HR_Dept_3           -                 -                  unlimited  200
     system        dqr-all-sharing     -                 -                  unlimited  1000
  6. The following example shows how to create a throttle for the dqr-fs-pool-limit class to configure an aggregate I/O limit for the system pool across all nodes in the remote cluster HR_Cluster1. Initially, the mmqos class list command shows the five system classes and the three user classes: HR_Dept_1, HR_Dept_2, and HR_Dept_3 (each of these user classes includes a fileset).
    # mmqos class list gpfs1
     Class Name                      Class Type    Fileset Name
    -----------------------------------------------------------
     maintenance                     system        --
     other                           system        --
     misc                            system        --
     dqr-all-sharing                 system        --
     dqr-fs-pool-limit               system        --
     HR_Dept_1                       user          fstest1
     HR_Dept_2                       user          fstest2
     HR_Dept_3                       user          fstest3

    The mmqos throttle list command lists a throttle for the maintenance class and a throttle for each of the three user classes, as shown in the next example. The scope of all user class throttles is HR_Cluster1 and the pool for all throttles is the system storage pool.

    # mmqos throttle list gpfs1
     Pool Name     Class Name     Node/Nodeclass    Cluster Scope      MaxIOPS    MaxMBS
    -------------------------------------------------------------------------------------
     system        maintenance    -                 all_local          unlimited  100
     system        HR_Dept_1      -                 HR_Cluster1        unlimited  500
     system        HR_Dept_2      -                 HR_Cluster1        unlimited  300
     system        HR_Dept_3      -                 HR_Cluster1        unlimited  200

    The following mmqos throttle create command creates a throttle for the dqr-fs-pool-limit system class with an I/O limit of 1100 MB/s.

    # mmqos throttle create gpfs1 --pool system --class dqr-fs-pool-limit -C HR_Cluster1 --maxmbs 1100
    mmqos: Processing the new QoS configuration...
    mmqos: File System Manager QoS service validating the configuration (host is gpfsnode1.gpfs.net)...
    mmqos: Validation complete.
    mmqos: The configuration data was written to the CCR successfully
    mmqos: Calling the daemon to update the configuration within the cluster...
    
    QOS configuration has been installed and broadcast to all nodes.
    
    mmqos: Daemon update is complete.
    mmqos: Command completed.

    The mmqos throttle list command shows that the throttle for the dqr-fs-pool-limit class is created:

    # mmqos throttle list gpfs1
     Pool Name     Class Name          Node/Nodeclass    Cluster Scope      MaxIOPS    MaxMBS
    -------------------------------------------------------------------------------------
     system        maintenance         -                 all_local          unlimited  100
     system        HR_Dept_1           -                 HR_Cluster1        unlimited  500
     system        HR_Dept_2           -                 HR_Cluster1        unlimited  300
     system        HR_Dept_3           -                 HR_Cluster1        unlimited  200
     system        dqr-fs-pool-limit   -                 HR_Cluster1        unlimited  1100

    This configuration controls the overall I/O bandwidth that is consumed by workloads that run on nodes in HR_Cluster1 when the system pool is accessed. I/O tasks that are generated through the fstest1, fstest2, and fstest3 filesets are respectively limited to 500 MB/s, 300 MB/s, and 200 MB/s, thus helping ensure predictable performance for each workload.

    All other user workloads from the same cluster that access the system pool through different filesets are guaranteed a baseline throughput of 100 MB/s. When more bandwidth is available, these workloads can automatically use unused capacity from HR_Dept_1, HR_Dept_2, and HR_Dept_3; thus helping ensure that, across all filesets, the combined throughput remains within the overall limit of 1100 MB/s.

    The bandwidth limit applied to the maintenance workload is managed separately. It operates independently of this configuration and does not affect the aggregate throughput that is available to the system pool.

  7. The following example shows how to issue the mmqos filesystem reset command to reset all QoS configuration information for a file system to the default values. Follow these steps:
    1. Issue the mmqos filesystem reset command to reset all the configuration information for file system gpfs1:
      # mmqos filesystem reset gpfs1
      
      mmqos: Are you certain you want to remove all specific QOS configuration for this device (gpfs1)?
             This action will reset all QoS configuration to default values.
             This action cannot be undone.
      
             Permanently remove all specific QoS configuration data for device gpfs1 (yes/no)?
      yes
      QOS configuration has been installed and broadcast to all nodes
      
      Note:
      • Before you do this action, save any QoS configuration information that you might want to use again either with this file system or with another file system. Issue mmqos commands to display the current configuration information. Then copy the information to a secure file.
      • Instead of resetting the QoS configuration information to default values, consider issuing the mmqos filesystem disable command to disable all QoS activity for the file system. When you are ready, issue the mmqos filesystem enable command to enable QoS activity for the file system.
    2. Optionally, issue the mmqos filesystem status command to verify that the QoS configuration information is reset:
      # mmqos filesystem status gpfs1
                          Configuration Repository        QoS Daemon Service
                          ------------------------        -------------------
      State:              Disabled                        disabled
      Version:            3                               3
      Throttling:         --                              inactive
      Monitoring:         --                              inactive
      
      Configured System Objects:
      --------------------------
      QoS File Systems:        1
      
      Class Objects:
        System Classes:        5
        User Classes:          0
        Filesets:              0
      
      Throttle Objects:        0