mmqos command

Controls 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 with IBM Spectrum Scale Advanced Edition, IBM Spectrum Scale Data Management Edition, IBM Spectrum Scale Developer Edition, or IBM Spectrum Scale Erasure Code Edition.

Description

With the mmqos command, you can regulate I/O accesses to disk storage pools to prevent I/O-intensive processes from dominating I/O access and significantly delaying other processes that access the pools. The disk storage pools can be the system storage pool or user storage pools.
  • With the QoS system classes, you can prevent certain I/O-intensive long running IBM Spectrum Scale maintenance commands from dominating I/O access to storage pools. This feature allows the maintenance commands to be run during regular system operation without significantly slowing other processes that access the same storage pools.

  • With QoS user classes, you can regulate I/O access to files in filesets. This feature allows you to assign different allotments of I/O access to groups in your business organization, such as departments or task forces, based on their business priorities. For example, you can put the frequently accessed files of Department HR into filesets FS01 and FS02. You can then assign FS01 and FS02 to a QoS user class CL01 and set an I/O limit per second for the class. At run time, the QoS component allows I/O accesses per second to filesets FS01 and FS02 up to the I/O limit per second that you set for class CL01.

You can assign I/O limits to QoS classes either as I/O operations per second (IOPS) or as megabytes per second (MB/s). You can display regular or fine-grained statistics of I/O accesses by processes over time.

The mmqos command provides all the features that were introduced with the mmchqos and mmlsqos commands, supports QoS user classes, and has an easy-to-use command syntax.
Warning: mmqos is the future command for all QoS functions and it was built to replace the configuration capability of the mmchqos command. You can only use either mmchqos or mmqos on a file system at any time, but not both. If you start to configure a QoS file system with mmchqos or having been using it for a while and you try to use mmqos to change that configuration, mmqos will issue you a usage error. If you start to configure a QoS file system with the new mmqos command and you try to use mmchqos to change that configuration, mmchqos will issue you a usage error. If you are ready to switch to mmqos from mmchqos, use the following commands to remove the existing mmchqos configuration:
mmchqos Device --reset --stat-poll-interval 0 --stat-slot-time 0
mmchqos Device --disable
Both commands have reset functions to remove their configuration with a file system. After removing the existing configuration, you can move to using the other command.

For more information, see Setting the Quality of Service for I/O operations.

QoS user classes

With the QoS user classes, you can regulate I/O access to the system pool or to user storage pools by functional groups in your business organization, such as departments, projects, or task forces. Follow these general steps for each functional group:
  1. Put files that are frequently accessed by the group into one or more filesets.
  2. Identify the disk storage pool where the contents of the files are stored.
  3. Create a QoS user class and assign the filesets to it.
  4. Create a QoS throttle for the user class. The throttle configuration includes two types of information:
    • The I/O context, which specifies the file system, the disk storage pool, the QoS user class including the filesets, and the nodes that members of the functional group will use to access the files in the fileset.
    • The I/O limits, which you can specify in MB/s or in IOPS.
When the throttle is created, QoS limits the collective IOPS or MB/s by all processes that access the files in the filesets to the I/O limits that are set in the throttle.

QoS system classes

The QoS system classes provide file-system-wide allocation of IOPS or MB/s to four broad categories of processes. The disk storage pool can be the system storage pool or a user storage pool.

maintenance class
The maintenance class consists of the following I/O-intensive long running IBM Spectrum Scale maintenance commands:
Typically you assign a smaller share of IOPS or MB/s to the maintenance class than you do to the class named other. A smaller share of IOPS or MB/s prevents these maintenance commands from dominating file system performance and significantly delaying other processes that use I/O.

When the maintenance class is configured with I/O limits, QoS restricts the processes in the class from collectively consuming more I/O resources than are set in the I/O limits. The default limit is unlimited, which means that QoS does not restrict the I/O at all.

other class
The other class includes almost all other processes that use file system I/O. Typically you assign a larger share of IOPS or MB/s or the constant unlimited to this class so that normal processes have greater access to I/O resources and finish more quickly.

The mmchdisk command by default runs in the class named other. However, when you issue the mmchdisk command you can specify that you want to assign it to the maintenance class. This assignment is effective only for the instance of the mmchdisk command that you are starting. Use this option in situations in which you need to limit the I/O of the mmchdisk command so that normal processes that use I/O can finish more quickly. For more information, see mmchdisk command.

When the other class is configured with I/O limits, QoS restricts the processes in the class from collectively consuming more I/O resources than are set in the I/O limits. The default limit is unlimited, which means that QoS does not restrict the I/O at all.

misc class
The misc class stores the count of IOPS or MB/s that some critical file system processes consume. You cannot assign IOPS or MB/s to this class, but its count of IOPS or MB/s is displayed along with the statistics of the other classes by the mmqos report list command.

mdio-all-sharing class
The mdio-all-sharing class is used for class sharing. For more information, see the subtopic Class sharing later in this topic.
Note: Enabling and disabling mmqos QoS services is somewhat 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 then should be infrequent.

Each invocation of the mmqos command that changes the configuration with actions like create, update, delete, set, enable, or disable causes the daemon to reread the QoS configuration from the CCR. If the mmqos QoS services are enabled, it causes a small delay of a couple of seconds in throttling accuracy, as new statistics are generated with the updated configuration. If the mmqos QoS services are enabled, it might take additional time to process these actions. That is, large changes to the configuration is more efficient when the mmqos QoS services are disabled.

Creating and modifying throttles

A throttle is a specification for limiting I/O for a QoS class. Each throttle consists of two parts: an I/O context and an I/O limit. As the following table shows, the I/O context consists of a file system, a disk pool, a QoS class, and a set of nodes. These elements occur as options in the mmqos throttle commands:
Table 1. Elements of an I/O context
Option Element Valid values Default value Create and modify
Device File system An existing file system. These are required elements of the I/O context. There are no default values.
  • Create: These elements must be specified in the mmqos throttle create command.

  • Modify: These elements cannot be changed after the throttle is created. To make a change, you must delete the throttle and re-create it with different elements.
--pool Disk pool An existing disk pool.
--class A QoS user class
or
a QoS system class
An existing QoS user class that was created or updated with one or more filesets, which become part of the I/O context.
QoS system classes:
  • maintenance
  • other
  • mdio-all-sharing
-N or -C

Either option can be used to identify the nodes that the throttle applies to.
-N specifies one or more nodes. Node or
NodeClass (which includes class all)
All local nodes.
  • Create: mmqos throttle create command.
  • Modify: mmqos throttle updatekey command.
Only one of -N or -C can be specified in an mmqos command. The one that is not specified is ignored.
-C refers to all the nodes in the specified cluster or clusters. all, all_local, all_remote, or ClusterName All local and remote clusters.
For more information, see the description of the mmqos throttle create command later in this topic.
Notes:
  • Throttle scope
    • The throttle scope identifies the nodes across which the I/O limit of the throttle is to be applied. The throttle scope can be set by either the -N option or the -C option.

    • For all QoS user classes and the QoS system class other, the default initial throttle scope is all nodes, both local and remote. For the QoS system class maintenance, the default initial throttle scope is all_local. This setting means that the I/O limits are applied across all the nodes in the local cluster.

    • If the throttle scope is not specified in the -N option or the -C option of the mmqos throttle create command, then the default value is all_local for the maintenance class and all for all other classes. The setting all_local means all nodes in the local cluster that have mounted the file system. The setting all means all nodes in the local cluster and in remote clusters that have mounted the file system.

  • Specifying the correct throttle description
    • In the mmqos throttle update and the mmqos throttle delete commands, be sure to specify the correct throttle description, including the file system, pool, class, and throttle scope. For example, suppose that you created the following throttle, which has an I/O limit of 100 MB/s:
      # mmqos throttle create qos2 --pool system --class HR_Dept2 -N TCTNodeClass1 --maxmbs 100
      If you later issue the mmqos throttle update command to change the I/O limit of this throttle to 200 MB/s, you must specify exactly the same throttle description:
      # mmqos throttle update qos2 --pool system --class HR_Dept2 -N TCTNodeClass1 --maxmbs 200
      If you changed the throttle scope to -C all_local after you created the throttle, you must specify the new throttle scope when you change the I/O limit:
      # mmqos throttle update qos2 --pool system --class HR_Dept2 -C all_local --maxmbs 200
      If you accepted the default throttle scope when you created the throttle and you never changed the throttle scope afterward, then you do not need to specify the -N option or the -C option in the mmqos throttle update command:
      # mmqos throttle create qos2 --pool system --class HR_Dept2 --maxmbs 100
      ...
      # mmqos throttle update qos2 --pool system --class HR_Dept2 --maxmbs 200
    • If you specify a non-existent throttle description, the command responds with an informative message.

    • To see the current throttle descriptions, issue the mmqos throttle list command:
      # mmqos throttle list qos2
       Pool Name      Class Name      Node/Nodeclass      Cluster Scope       MaxIOPS    MaxMBS
      -----------------------------------------------------------------------------------------
       system         HR_Dept2        TCTNodeClass1       -                   unlimited  100
      

As the following table shows, the I/O limit of a throttle consists of an IOPS limit or an MB/s limit. These elements occur as options in the mmqos throttle create and mmqos throttle update commands:
Table 2. Elements of I/O limits
Option Element Valid values Default value Create or modify
--maxiops Maximum I/O operations per second 0 - 1999999999 or unlimited unlimited mmqos throttle create
mmqos throttle update
--maxmbs Maximum megabytes per second of I/O 0 - 1999999999 or unlimited unlimited
Notes:
  • The default value for either the maximum IOPS or the maximum MB/s of a throttle is unlimited. This setting indicates that QoS does not restrict the I/O of the nodes that are specified in the throttle. But to create a throttle, one of the 2 settings requires a non-default value to ensure throttling is implemented.

  • Although the I/O limit can include both a maximum IOPS setting and a maximum MB/s setting, at run time the more restrictive setting controls the I/O usage. For example, if the I/O limit is unlimited IOPS and 40 MB/s, then at run time the nodes that are specified in the throttle are collectively limited to 40 MB/s of I/O.

  • No advantage results from setting both the maximum IOPS and the maximum MB/s to specific values. If both types of limit are set, QoS tracks both the IOPS usage and the MB/s usage at run time and restricts the I/O when either the maximum IOPS setting or the maximum MB/s setting is reached. To avoid uncertainty about which limit might be controlling the I/O usage for the throttle, it is a good idea to specify either MB/s or IOPS but not both.

  • The maximum IOPS or the maximum MB/s settings are divided among the nodes that are specified in the throttle. For more information, see the subtopic QoS operation later in this topic.

QoS operation

The following text describes how QoS regulates the consumption of a specified number of IOPS or MB/s by processes that access files in the disk storage pools of a QoS class. Where the term "IOPS" appears, the intended meaning is "either IOPS or MB/s":
  • For each class, QoS divides the specified IOPS among the nodes in the throttle scope that have mounted the file system. If the allocation is static, QoS assigns an equal number of IOPS to each node and does not change the assignments. If the allocation is Mount Dynamic I/O, QoS periodically adjusts the assignment of IOPS to each node based on the relative frequency of I/O accesses to the disk storage pools of the class by the processes that are running on each node. For more information, see the topic Mount dynamic I/O (MDIO).

  • If the class is a QoS user class, QoS regulates I/O accesses to files for which the following conditions are true:
    • The file is in a fileset that belongs to the specified user class.
    • The file data is located in the disk pool that is specified by the throttle.
    If the class is one of the QoS system classes maintenance or other, QoS regulates I/O accesses to files for which the following conditions are true:
    • The process that initiates the I/O access belongs to the specified QoS system class.
    • The file data is located in the disk pool that is specified by the throttle.

  • A QoS component on each node monitors the I/O accesses of the processes that are running on the node. During each one-second period, for each QoS class, the QoS component allows a QoS I/O access if the IOPS or MB/s that are allocated to the node have not been exhausted during the current one-second period. Otherwise, QoS queues the I/O access until the next one-second period begins.

  • When you change IOPS allocations, a brief delay due to reconfiguration occurs before QoS begins applying the new allocations.

  • The following QoS operations apply to unmounting and mounting a file system:
    • QoS stops applying IOPS allocations to a file system when you unmount it and resumes when you remount it.
    • IOPS allocations persist across unmounting and remounting a file system.
    • When you mount a file system, a brief delay due to reconfiguration occurs before QoS starts applying allocations.

Mount dynamic I/O (MDIO)

QoS can dynamically balance the allocation of IOPS or MB/s among the nodes that have mounted the file system based on the relative proportions of attempted I/O accesses to the storage pool of the class by the processes running on each node. This feature is called MDIO. By default, MDIO is enabled for QoS user classes and is disabled for QoS system classes. You can enable or disable MDIO for a class with the mmqos class set command.

When MDIO is disabled for a class, QoS allocates the specified IOPS or MB/s of the class equally among all the nodes that have mounted the file system. QoS does not take into account the frequency of accesses to the storage pool of the class by the processes that are running on a node.

For example, suppose that MDIO is disabled in class CL01 and that the class is assigned 300 IOPS for storage pool P01. If three nodes A, B, and C have mounted the file system, QoS allocates 100 IOPS to each node for pool P01 and never changes the allocation. If the processes that are running on nodes B and C currently require only 50 IOPS of access to P01, their combined surplus of 100 IOPS goes unused. If node A requires a total of 200 IOPS of access to P01, it cannot draw the 100 IOPS that it needs from the unused IOPS on nodes B and C.

When MDIO is enabled for a class, QoS dynamically balances the allocation of IOPS or MB/s among the nodes that have mounted the file system. QoS determines the allocations based on the total number of attempted accesses to the storage pool of the class by processes on each node during an internally set time period. At the end of each time period, QoS calculates for each node the proportion of its attempted accesses to the total number of attempted accesses during the time period. If the proportions have changed since the end of the previous time period, QoS rebalances the allocations according to the new proportions.

For example, suppose that MDIO is now enabled in class C01 and that the class is again assigned 300 IOPS for storage pool P01. Again QoS initially assigns 100 IOPS to each of the nodes A, B, and C. However, QoS then monitors the number of attempted I/O accesses to pool P01 for class CL01 by the processes on each node. Suppose that during the most recent measurement period the number of attempted I/O accesses to P01 for CL01 were 240 from node A, 92 from node B, and 68 from node C, for a total of 400 attempted accesses. The proportions of the number of attempted accesses from each node compared to the total number of attempted accesses are .60 (240/400), .23 (92/400), and .17 (68/400). If these proportions are different from those of the previous time period, QoS rebalances the allocation of IOPS according to the new proportions. In this example 300 IOPS are specified for the class, so QoS allocates 180 (.60 x 300) IOPS to node A, 69 IOPS (.23 x 300) to node B, and 51 IOPS (.17 x 300) to node C.

Class sharing

Class sharing is an easy and powerful way to integrate throttles that use the same storage pool and to give them the ability to share surplus I/O accesses dynamically among themselves. To participate in class sharing, a class must be mdio-enabled. For more information, see the subtopic Mount dynamic I/O (MDIO).

The following steps provide an overview of class sharing:
  1. Two or more existing throttles regulate I/O accesses to the same storage pool P01. You want to change the limit on their combined I/O accesses to P01 but keep the relative proportion of their I/O limits the same. You also want any unused I/O accesses to be shared with throttles that need more I/O accesses.

  2. You can create a throttle for the QoS system class mdio-all-sharing that regulates I/O accesses to the common storage pool. Set the I/O limit of the throttle to the total number of IOPS or MB/s that you want to allow for the combined throttles.

  3. Now the individual throttles are collectively limited to the I/O limit that you configured for the mdio-all-sharing throttle. Each individual throttle now has an actual I/O limit that is based on the ratio of its original I/O limit to the total original I/O limits of all the individual throttles. If one individual throttle has surplus I/O accesses, they are shared proportionally among the other individual throttles.

For example, suppose that you have three existing throttles that regulate I/O accesses to the system pool and that have I/O limits of 200 IOPS, 300 IOPS, and 500 IOPS for a total of 1000 IOPS. You create a throttle for the mdio-all-sharing class and the system pool and assign an I/O limit of 1200 IOPS to the new throttle. Now the three individual throttles are collectively limited to 1200 IOPS. The individual throttles now have actual I/O limits of 240 IOPS (200/1000 x 1200), 360 IOPS (300/1000 x 1200), and 600 IOPS (500/1000 x 1200). If at some point in time the third throttle has a surplus of 200 IOPS, then 80 IOPS of the surplus (200/500 x 200) are dynamically assigned to the first throttle and 120 IOPS of the surplus (300/500 x 200) are dynamically assigned to the second throttle.

QoS statistics

On each node, a QoS component collects I/O statistics for each process that accesses a QoS disk storage pool. Periodically, the QoS component sends a report of the accumulated statistics to a QoS manager node. A QoS manager node stores and manages the statistics of QoS classes and nodes so that the statistics can be displayed by an mmqos report list command.

As the number of statistics reports increases, it can become so great that the QoS manager node is unable to process reports in a timely manner. If so, the statistics that are reported by the mmqos report list command might not reflect the actual number of I/O accesses.

For each class, two QoS attributes affect the frequency with which reports are sent to a QoS manager node. These attributes are set by the mmqos config command:
stat-poll-interval=Seconds
This attribute specifies the length of the time period during which class statistics are collected. The following events occur during this period:
  1. The QoS statistics variables for the class are reset to zero.
  2. Statistics are collected until the collection interval ends.
  3. The accumulated statistics are sent to a QoS manager node.
The length of the collection period determines the fine-grainedness of data that is collected. The shorter that the collection period is, the more fine-grained the data becomes.

stat-slot-time=Milliseconds
This attribute specifies the amount of time that QoS waits after the end of one stat-poll-interval before beginning the next. The purpose of this attribute is to reduce the number of statistics reports that are sent for the class to the QoS manager node. The longer that the slot time period is, the fewer are the class-statistic reports that are sent.
The number of statistics reports also increases or decreases as or more or fewer nodes mount the file system. To counter these effects, it is a good idea to adjust the values of the stat-poll-interval and the stat-slot-time attributes for each class as the number of nodes that mount the file system significantly increases or decreases. You can adjust the values manually for each class, or you can activate automatic adjustments for a class by setting both stat-poll-interval and stat-slot-time to zero. The following table shows the values that automatic adjustment sets. If you adjust the values manually, use the values in the table as guidelines:
Table 3. Automatic adjustments of stat-poll-interval and stat-slot-time
Number of nodes that have mounted the file system stat-slot-time (milliseconds) stat-poll-interval (seconds)
< 32 1000 5
< 64 2000 10
< 128 3000 15
< 256 4000 20
< 512 6000 30
< 1024 8000 40
< 2048 10000 50
< 4096 12000 60
< 8192 12000 60
< 16384 12000 60
16384 or more 24000 120

Limitations

The mmqos command is subject to the following limitations:
  • The mmqos command is available only for the Linux® operating system. However, The daemon supports QoS throttling functions on both Linux and AIX® nodes within a cluster.
  • The QoS system classes have the following limitations:
    • They cannot use filesets.
    • They do not support MDIO by default.
  • The mmqos filesystem reset command does not make a backup copy of the QoS configuration before it deletes it.
  • To avoid creating stale data within the mmqos configuration, you must first remove any QoS configuration information associated with or that references other IBM Spectrum Scale system objects, such as file system, pool, fileset, node, or cluster name. Ensure the following when you plan to remove these objects from the cluster:
    • Before you delete a fileset (mmdelfileset), issue the mmqos class delete command to remove the fileset from the mmqos configuration. If the class contains a fileset that is referenced by a throttle object, delete that throttle object first with the mmqos throttle delete command and then remove the class that contains the fileset.
    • Before you delete a node (mmdelnode), a storage pool (mmdeldisk), or a cluster name (mmremotecluster delete), issue the mmqos throttle delete command to remove the throttle object that contains any of those system objects from the QoS configuration.
    • Before you delete a file system, issue the mmqos filesystem reset command first to remove any QoS configuration information that is associated with the file system.
Note:
  • No limit is imposed on the number of user classes, other than limits that might be imposed by the operating system or hardware.
  • No limit is imposed on the number of filesets that can be associated with a user class, other than limits that might be imposed by the operating system or hardware.

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:
mdio-enabled={yes | no}
Enables or disables MDIO for the class. By default, the value of this class attribute shadows the value of the file-system-level mdio-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, MDIO is enabled for QoS user classes and is disabled for QoS system classes.

For more information, see the subtopic Mount dynamic I/O (MDIO) earlier in this topic.

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 the subtopic Creating and modifying throttles earlier in this topic.

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. For more information, see the subtopic QoS operation earlier in this topic.

-N {Node | NodeClass }
The nodes among which the IOPS or MB/s for this throttle are to be divided. Also referred to as the throttle scope. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
Node
The specified node.
NodeClass
The nodes in the specified 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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
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 requested access to 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 that belong to any cluster that requested access to the file system.
ClusterName
All nodes that have mounted the file system and that belong to the specified cluster.
--maxiops MaxIOPS
The IOPS that are to be divided among the nodes that are governed by this throttle. The default value is unlimited. The valid range is 0 - 1999999999. To specify a value less than 100, you must specify the force option. It is a good idea not to specify both an IOPS limit and an MB/s limit for the same throttle.
--maxmbs maxMBS
The megabytes per second of data transfer that are to be divided among the nodes that are governed by this throttle. The default value is unlimited. The valid range is 0 - 1999999999. To specify a value less than 100, you must specify the force option. It is a good idea not to specify both an IOPS limit and an MB/s limit for the same throttle.
--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 on the value that the --maxiops option or the --maxmbs option can be set to. Setting a value below the limit with the --force option typically causes the processes that are 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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
--class ClassName
A QoS user class or system class. Be sure to specify the correct class for the throttle that you want to update. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
-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 will 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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
--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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
-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. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
Device
The device name of the file system.
--pool PoolName
The disk storage pool of the throttle that you want to delete. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
--class ClassName
The QoS class for the throttle that you want to delete. For more information, see the subtopic Creating and modifying throttles earlier in this topic.
-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 at the class level, see the descriptions of the following commands:
  • mmqos class set
  • mmqos class list
set Device Attribute=Value[,Attribute=Value...]
Sets the initial value to be assigned to an attribute of a class when the class is created. For example, the following command causes the class attribute fileset-stats to be initialized to yes in each subsequent new class. This command does not alter the value of fileset-stats in existing classes:
mmqos config set Device fileset-stats=yes
If the initial value is later set to no, as in the following command, then fileset-stats is initialized to no in each subsequent new class. This command does not affect the value of fileset-stats in existing classes:
mmqos config set Device fileset-stats=no

You cannot set the value yes for pid-stats and fileset-stats attributes at a time. That is, either pid-stats=yes or fileset-stats=yes can be used in the configuration.

The following table shows the initial values of all the file-system-level attributes when QoS is initialized:
Table 4. Attributes at the file system level
Attribute Value when QoS is initialized
fileset-stats no
fine-stats 0
mdio-enabled yes
pid-stats no
skim-factor .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 keeps statistics for each fileset that is associated with the class. The default value is no, which means that QoS does not keep statistics.

fine-stats=Seconds
Specifies how many seconds of fine-grained statistics to save in memory so that the mmqos report list command can list 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 specified intervals and contain more information than regular statistics. The interval at which fine-grained statistics are collected is set with the slat-slot-time file-system-level attribute. The display of fine-grained statistics is controlled by the --fine-stats-display-range option of the mmqos report list command.

mdio-enabled={yes | no}
Enables or disables MDIO. When MDIO is enabled for a class, QoS dynamically balances the allocation of IOPS or MB/s among the nodes that have mounted the file system, based on the relative proportions of their attempted I/O accesses to the storage pool of the class. When MDIO is disabled for a class, QoS allocates a fixed number of IOPS or MB/s among the nodes that have mounted the file system and never changes the allocation.

By default, MDIO is enabled for QoS user classes and is disabled for QoS system classes. You can change the value of this attribute for individual classes with the mmqos class set command.

For more information, see the subtopic Mount dynamic I/O (MDIO) earlier in this topic.

pid-stats= {yes | no}
Specifies whether QoS keeps statistics for each process that accesses the storage pool of a QoS class. The default value is no, which means that QoS does not keep statistics for each process.

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 .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 interval in seconds between each sending of accumulated QoS statistics by a node to the QoS manager node. The QoS manager node is an internally selected node that stores and manages the statistics of a QoS class so that the statistics can be displayed by an mmqos report list command. The QoS statistics are described in the following subtopics, which appear later in this topic:

At the beginning of each stat-poll-interval, the QoS component on the node sets the node's QoS statistics variables to zero. During the stat-poll-interval interval, the QoS component adds an amount to the appropriate statistics variable whenever a relevant event occurs. For example, when a process on a node consumes some number of IOPS, the QoS component adds the IOPS count to the statistics variable for the number of IOPS consumed by the node. At the end of the interval, the QoS component on the node sends the accumulated value for QoS statistics to the QoS manager node.

The valid range of values for stat-poll-interval is 0 - 120 seconds in one-second intervals. The default value is 5 seconds, which means that a node collects QoS statistics for 5 seconds before it sends the accumulated QoS statistics to the QoS manager node. The stat-poll-interval must be a multiple of the value of the stat-slot-time attribute. For more information, see the description of that attribute.

Reducing the frequency of QoS statistics reports:

For any QoS class, the number of statistics reports that the QoS manager node must process depends on the following factors:

The number of nodes that mount the file system
As the number of nodes increases, the number of reports also increases.
The value of stat-poll-interval
As the value decreases, the frequency of reports increases. In other words, the shorter that the data collection interval is, the greater are the number of reports that are sent per second or per minute to the QoS manager node.
The value of stat-slot-time
The stat-slot-time attribute provides a way to reduce the frequency of statistics reports that are sent to the QoS manager node. The value of stat-slot-time sets the length of the delay that QoS interposes between the end of one stat-poll-interval and the beginning of the next. As the value of stat-slot-time increases, the frequency of reports decreases. In other words, the greater that the delay is between reporting intervals, the fewer are the reports that are sent per second or per minute to the QoS manager node. For more information, see the description of stat-slot-time attribute that appears immediately after the description of stat-slot-time in this topic.
If the flow of new reports becomes too great, the QoS manager node can no longer update its stored statistics values in a timely manner. In that case, the statistics that are reported by the mmqos report list command can be incorrect.
Two options are available to compensate for the increase in the number of reports that occurs when the number of nodes that mount the file system increases by a significant amount:
  • Activate the dynamic adjustment of stat-poll-interval and stat-slot-time by setting both attributes to zero. To suspend dynamic adjustment, set the value of either attribute to a nonzero value. For more information, see the subtopic QoS statistics earlier in this topic.
  • Manually increase the values of stat-poll-interval and stat-slot-time. For guidance in selecting values for stat-poll-interval and stat-slot-time, see Table 3.
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. Valid values are 125, 250, 500, 1000, and 2000 - 24000 in 1000 millisecond increments. The default value is 125. Increasing the value of stat-slot-time reduces the number of QoS statistics reports that are sent to the QoS manager node.
list
Lists the current settings of the QoS data collection attributes for this file system.
Note: You can issue this command action early in your configuration process to see default data collection attribute values that have already been set. The following example shows the settings after mmqos filesystem enable Device is issued, 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 customer-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 stops accumulating performance statistics. This command does not modify any customer-created QoS configuration and does not discard accumulated performance statistics.
Device
The device name of the file system.
reset
Removes all QoS customer-created QoS configuration information and accumulated performance statistics from the specified file system. Resets the QoS configuration to the same state that mmqos filesystem init sets. This command fails if QoS is in the enabled state.
Warning: Issue this command only if you are sure that you no longer need QoS functions in this file system. If you remove all the QoS configuration information and later find that you need QoS functions, you must re-create the configuration step-by-step.

Device
The device name of the file system.
refresh
Refreshes the active QoS configuration in the IBM Spectrum Scale daemon from the master 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 working with reports.
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 I/O performance values that were collected during the previous specified number of seconds. The valid range is 1 - 999 seconds. The default is 60 seconds. The values are listed over a number of subperiods within the period that you specify. You cannot configure the number or length of subperiods. Examples of subperiods are every 5 seconds over the last 60 seconds or every 60 seconds over the last 600 seconds.
--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 taken at one-second intervals and contain more information than regular statistics. The default interval is one second. You can set the interval with the stat-slot-time option. 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 the content of the statistics, see the subtopic later in this topic.

For more information, see the subtopics Analyzing regular output from the mmqos report list command and Analyzing fine-grained output from the mmqos report list command later in this topic.

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.

Analyzing regular output from the mmqos report list command

The mmqos report list command always displays the following lines of output first:
QOS config::
This line indicates whether QoS is actively regulating I/O accesses (enabled) or not (disabled).

QOS values::
This line displays information for each pool that is part of a throttle configuration. For each pool, the information consists of the pool name followed information about each QoS class that accesses the pool. For each class, the information includes the IOPS or MB/s of the throttles and in some cases the throttle scope. In the following example fragment, the QOS values line shows that the system storage pool is used by a throttle for the other class that is set to 500 IOPS and a throttle for the maintenance class that is set to 200 MB/s. The line also displays the throttle scope of the maintenance class, all_local, which is the default throttle scope for the class:
QOS values:: pool=system,other=500IOps,maintenance/all_local=200MBs
Note: The QOS values line does not display a system class if the IOPS and MB/s of the class are set to unlimited.
QOS status::
This line indicates whether QoS is regulating the consumption of IOPS ("throttling") and also whether QoS is recording ("monitoring") the consumption of IOPS of each storage pool.
The following example shows the complete output of an mmqos report list command:
# mmqos report list gpfs1 --seconds 30 
QOS config::	 enabled -- --ccr:ccr-file-version=3
QOS values::	 pool=system,other=100Iops
QOS status::	 throttling active, monitoring active
QOS IO stats for pool: system
03:22:25 misc        iops=2.80000         MBs=0.06172      maxIOPS=unlimited   maxMBS=unlimited ioql=0.00136    qsdl=0.00000    et=5 wideOpen=yes(1:1:1)
03:22:25 other       iops=50.00000        MBs=197.60469    maxIOPS=50.0        maxMBS=unlimited ioql=3.04175    qsdl=22.94107   et=5 wideOpen=no(0:0:0)
03:22:30 other       iops=49.40000        MBs=197.60000    maxIOPS=50.0        maxMBS=unlimited ioql=2.99324    qsdl=27.92655   et=5 wideOpen=no(0:0:0)
03:22:35 misc        iops=2.20000         MBs=0.04219      maxIOPS=unlimited   maxMBS=unlimited ioql=0.00058    qsdl=0.00000    et=5 wideOpen=yes(1:1:1)
03:22:35 other       iops=43.20000        MBs=170.40469    maxIOPS=50.0        maxMBS=unlimited ioql=1.67852    qsdl=17.50021   et=5 wideOpen=no(0:0:0)
03:22:40 misc        iops=0.80000         MBs=0.00859      maxIOPS=unlimited   maxMBS=unlimited ioql=0.00031    qsdl=0.00000    et=5 wideOpen=yes(1:1:1)
03:23:10 misc        iops=1.20000         MBs=0.81484      maxIOPS=unlimited   maxMBS=unlimited ioql=0.00905    qsdl=0.00000    et=5 wideOpen=yes(1:1:1)
03:23:20 misc        iops=0.20000         MBs=0.00078      maxIOPS=unlimited   maxMBS=unlimited ioql=0.00006    qsdl=0.00000    et=5 wideOpen=yes(1:1:1)
mmqos: Command completed.
The command requests a list of I/O performance values for all QoS pools over the previous 30 seconds. Because the options --sum_classes and --sum_nodes are missing, the command also requests I/O performance for each storage pool separately and summed across all the nodes of the cluster.

Only one pool is part of a throttle configuration, the system storage pool. The output indicates that IOPS and MB/s occurred only for processes in the other class and in the misc class. The meaning of the categories in each line is as follows:

First column
The time when the measurement period ends.
Second column
The QoS class for which the measurement is made.
iops=
The performance of the class in I/O operations per second.
MBs=
The performance of the class in megabytes per second.
maxIOPS=
The maxIOPS throttling limitation for the interval.
maxMBS=
The maxMBS throttling limitation for the interval.
ioql=
The average number of I/O requests in the class that are pending for reasons other than being queued by QoS. This number includes, for example, I/O requests that are waiting for network or storage device servicing.
qsdl=
The average number of I/O requests in the class that are queued by QoS. When the QoS system receives an I/O request from the file system, QoS first finds the class to which the I/O request belongs. It then finds whether the class has any I/O operations available for consumption. If not, then QoS queues the request until more I/O operations become available for the class. The Qsdl value is the average number of I/O requests that are held in this queue.
et=
The interval in seconds during which the measurement was made.
wideOpen=
Whether the throttling of the class in that interval is unlimited (1) or not (0).

You can calculate the average service time for an I/O operation as ((Ioql + Qsdl) / Iops). For a system that is running IO-intensive applications, you can interpret the value (Ioql + Qsdl) as the number of threads in the I/O-intensive applications. This interpretation assumes that each thread spends most of its time in waiting for an I/O operation to complete.

Analyzing fine-grained output from the mmqos report list command

The following code block shows an example of fine-grained output. Each line displays the sum of the data for all the QoS programs that are running on the specified node. If the --pid-stats option is specified in the mmqos report list command, then each line displays the data for one QoS program that is running on the specified node:
Time, Class, Node, Iops, TotSctrs, Pool, Pid, RW, SctrI, AvgTm, SsTm, MinTm, MaxTm, AvgQd, SsQd
1480606227,misc,172.20.0.21,285,2360,system,0,R,16,0.000260,0.000197,0.000006,0.005894,0.000001,0.000000
1480606228,misc,172.20.0.21,631,5048,system,0,R,16,0.000038,0.000034,0.000006,0.002463,0.000000,0.000000
1480606239,other,172.20.0.21,13,112,system,26724,R,16,0.000012,0.000000,0.000008,0.000022,0.000001,0.000000
1480606239,other,172.20.0.21,1,512,system,26724,R,512,0.000375,0.000000,0.000375,0.000375,0.000002,0.000000
1480606239,other,172.20.0.21,30,15360,system,26724,W,512,0.000910,0.000004,0.000451,0.002042,0.000001,0.000000
1480606240,misc,172.20.0.21,5,48,system,14680072,W,16,0.000135,0.000000,0.000025,0.000258,0.000000,0.000000
1480606240,other,172.20.0.21,4,32,system,26724,R,16,0.000017,0.000000,0.000009,0.000022,0.000001,0.000000
1480606240,other,172.20.0.21,48,24576,system,26724,W,512,0.000916,0.000006,0.000490,0.002141,0.000001,0.000000
1480606241,other,172.20.0.21,10,80,system,26724,R,16,0.000017,0.000000,0.000007,0.000039,0.000001,0.000000
1480606241,other,172.20.0.21,34,17408,system,26724,W,512,0.000873,0.000007,0.000312,0.001957,0.000001,0.000000
1480606241,misc,172.20.0.21,12,104,system,15597572,W,16,0.000042,0.000000,0.000024,0.000096,0.000000,0.000000
1480606241,misc,172.20.0.21,1,512,system,15597572,W,512,0.000192,0.000000,0.000192,0.000192,0.000000,0.000000
1480606241,misc,172.20.0.21,9,72,system,14680071,W,16,0.000029,0.000000,0.000024,0.000040,0.000000,0.000000
## conti=4
The following table shows the same output in table format. Only the first 10 columns are shown:
Time Class Node Iops TotSctrs Pool Pid RW Sctrl AvgTime
1480606227 misc 172.20.0.21 285 2360 system 0 R 16 0.00026
1480606228 misc 172.20.0.21 631 5048 system 0 R 16 0.000038
1480606239 other 172.20.0.21 13 112 system 26724 R 16 0.000012
1480606239 other 172.20.0.21 1 512 system 26724 R 512 0.000375
1480606239 other 172.20.0.21 30 15360 system 26724 W 512 0.00091
1480606240 misc 172.20.0.21 5 48 system 14680072 W 16 0.000135
1480606240 other 172.20.0.21 4 32 system 26724 R 16 0.000017
1480606240 other 172.20.0.21 48 24576 system 26724 W 512 0.000916
1480606241 other 172.20.0.21 10 80 system 26724 R 16 0.000017
1480606241 other 172.20.0.21 34 17408 system 26724 W 512 0.000873
1480606241 misc 172.20.0.21 12 104 system 15597572 W 16 0.000042
1480606241 misc 172.20.0.21 1 512 system 15597572 W 512 0.000192
1480606241 misc 172.20.0.21 9 72 system 14680071 W 16 0.000029
The following list describes the type of content in each column:
Time
The time when the measurement was made, expressed in seconds since the UNIX epoch of January 1, 1970.
Class
The QoS class of the process.
Node
The IP address of the node on which the process was running.
Iops
The number of IOPS that the process consumed during the sample period.
MB/s
The number of MB/s that the process consumed during the sample period.
TotSctrs
The number of sectors for which data was read or written. By default, one sector is 512 bytes.
Note: The number of TotSctrs from one process or one node might not be equal to the actual number of bytes that are read or written. For cached I/O in IBM Spectrum Scale, if the modified data from one application I/O operation is less than fgdbRangeSize (4 KiB by default) IBM Spectrum Scale writes the number of bytes that are specified by fgdbRangeSize from the page pool to backend disks. If the application updates only one byte of the file, the value that is displayed by TotSctrs is eight sectors.
Pool
The storage pool where the I/O operations were done.
Pid
The process ID of the process that initiated the I/O. When the --pid-stats option of the mmqos report list command is not specified, this value is always 0.
RW
The type of I/O operation, read or write.
SctrI
The number of sectors that were affected by the I/O operation. This value is expressed in terms of one of the following measures:
  • A single sector.
  • 1/32 or less of a full block.
  • Less than a full block.
  • A full block.
For example, if the disk block size is 512, the command displays one of the following values: 1, 16, 511, or 512.
AvgTm
The mean time that was required for an I/O operation to be completed.
SsTm
The sum of the squares of differences from the mean value that is displayed for AvgTm. You can use this value to calculate the variance of I/O service times.
MinTm
The minimum time that was required for an I/O operation to be completed.
MaxTm
The maximum time that was required for an I/O operation to be completed.
AvgQd
The mean time for which QoS imposed a delay of the read or write operation.
SsQd
The sum of the squares of differences from the mean value that is displayed for AvgQd.
The last line in the example indicates that the index of the next block to be displayed is 4:
## conti=4
You can avoid redisplaying statistics by having the next mmqos report list command display statistics beginning at this block index.

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   -- 
      mdio-all-sharing      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-launched processes access storage pool C they will collectively be 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...
      
      Adjusted QOS Class specification: pool=C,HR_Dept_1=100Iops,maintenance/all_local=inf,other=inf,_skimf=0
      
      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:
      # mmlsqos 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...
      
      Adjusted QOS Class specification: pool=C,HR_Dept_1=100Iops,maintenance/all_local=inf,other=inf,_skimf=0
      
      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.
      
      The QoS class specification provides the following information:
      • The only storage pool listed is storage pool C. That is because pool C is the only storage pool that has been associated with a throttle in file system gpfs1.
      • When processes that belong to class HR_Dept_1 access storage pool C, they can collectively consume up to 100 I/O operations per second. This category includes almost all user-launched processes, including most user-launched IBM Spectrum Scale administrative commands, such as mmchfs, mmlsfs, and many others.
      • When processes that belong to the maintenance class access storage pool C, they can collectively consume an unlimited number of I/O operations per second. This category includes most of the long-running IBM Spectrum Scale administrative commands. For more information about this class, see section QoS user classes earlier in this topic.
      • When processes that belong to the other class access storage pool C, they can collectively consume an unlimited number of I/O operations per second. This category includes some critical file system processes. For more information about this class, see section QoS user classes earlier in this topic.
      • The skim factor is set to the default value which is 0.

    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:           2
      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...
      
      Adjusted QOS Class specification: pool=C,HR_Dept_1=100Iops,maintenance/all_local=inf,other=inf,_skimf=0
      
      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>
       mdio-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,
                    _skimf=0
    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 Spectrum Scale maintenance commands that belong to the QoS maintenance system class. The mmqos class list command shows that only the four 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        --
     mdio-all-sharing                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        --
       mdio-all-sharing                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        --
       mdio-all-sharing                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 mdio-all-sharing class to configure class sharing within the system pool and QoS user classes HR_Dept_1 and HR_Dept_2. Initially the mmqos class list command shows only the four system classes and the two user classes, each of which includes a fileset:
    # mmqos class list gpfs1
     Class Name                      Class Type    Fileset Name
    -----------------------------------------------------------
     maintenance                     system        --
     other                           system        --
     misc                            system        --
     mdio-all-sharing                system        --
     HR_Dept_2                       user          fstest2
     HR_Dept_1                       user          fstest1
    The mmqos throttle list command lists a throttle for the maintenance class and a throttle for each of the two user classes. The pool for all three 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  400
     system        HR_Dept_1      -                 -                  unlimited  200
     system        HR_Dept_2      -                 -                  unlimited  300
    The following mmqos throttle create command creates a throttle for the mdio-all-sharing system class with an I/O limit of 500 MB/s:
    # mmqos throttle create gpfs1 --pool system --class mdio-all-sharing --maxmbs 500
    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 mdio-all-sharing class is created:
    # mmqos throttle list gpfs1
     Pool Name     Class Name          Node/Nodeclass    Cluster Scope      MaxIOPS    MaxMBS
    -----------------------------------------------------------------------------------------
     system        maintenance         -                 all_local          unlimited  400
     system        HR_Dept_1           -                 -                  unlimited  200
     system        HR_Dept_2           -                 -                  unlimited  300
     system        mdio-all-sharing    -                 -                  unlimited  500
    
  6. If one of the system objects that can be elements of a QoS class or a QoS throttle, such as a fileset, a pool, a node, a node class, or a cluster, is deleted before the class or throttle is deleted, the configuration of the class or throttle contains references to non-existent objects. These references can cause the QoS configuration validation phase to fail and display error messages when you try to revise or delete the class or throttle.

    To revise or delete the class or throttle, you can use the special option QOSSkipValidate=1 to override the QoS configuration validation phase. This option must be used only in this situation. Using the option in any other situation can result in an invalid configuration.

    The following two examples illustrate how to use this option. In the first example, the fileset hrfset1, which is included in QoS user class HR_Dept_2, was accidentally deleted from the system with the command mmdelfileset. When you try to remove the fileset from the class, the command fails with a configuration validation error. To remove the fileset from the class, issue the following command:
    #  QOSSkipValidate=1  mmqos class update gpfs1 --class HR_Dept_2 --remove --fileset hrfset1
    mmqos: Processing the new QoS configuration...
    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.
    
    # mmqos class list gpfs1
     Class Name                      Class Type    Fileset Name
    -----------------------------------------------------------
     maintenance                     system        --
     other                           system        --
     misc                            system        --
     mdio-all-sharing                system        --
     HR_Dept_2                       user          hrfset2
    
    In the second example, the node gpfsnode1.gpfs.net, which defines the throttle scope of QoS user class HR_Dept_2, was removed from the cluster. When you try to delete the throttle, the command fails with a configuration validation error. To delete the throttle, issue the following command:
    #  QOSSkipValidate=1  mmqos  throttle delete gpfs1 --pool system --class HR_Dept_2 -N gpfsnode1.gpfs.net
    mmqos: Processing the new QoS configuration...
    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.
  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 has been 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:        3
      
      Class Objects:
        System Classes:        4
        User Classes:          0
        Filesets:              0
      
      Throttle Objects:        0