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...]]
ormmqos class update Device --class ClassName [{ {add | replace} --fileset FilesetName[,FilesetName...] |
--remove --fileset FilesetName}]
ormmqos class delete Device --class ClassName
ormmqos class set Device --class ClassName Attribute=Value[,Attribute=Value...]
ormmqos class list Device [--config] [-Y]
ormmqos throttle create Device --pool PoolName --class ClassName
[{-N {Node | NodeClass} | -C {all | all_local | all_remote | ClusterName}}]
[--maxiops MaxIOPS] [--maxmbs MaxMBS] [--force]
ormmqos throttle update Device --pool PoolName --class ClassName
[{-N {Node | NodeClass} | -C {all | all_local | all_remote | ClusterName}}]
[--maxiops MaxIOPS] [--maxmbs MaxMBS] [--force]
ormmqos 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}}]
ormmqos throttle list Device [{--pool PoolName | --class ClassName}] [-Y]
ormmqos config set Device Attribute=Value[,Attribute=Value...]
ormmqos config list Device [-Y]
ormmqos filesystem init Device
ormmqos filesystem enable Device
ormmqos filesystem disable Device
ormmqos filesystem reset Device
ormmqos filesystem refresh Device
ormmqos filesystem list [-Y]
ormmqos filesystem status Device [-Y]
ormmqos filesystem restore --restore-file RestoreFile
ormmqos 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 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.
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
- Put files that are frequently accessed by the group into one or more filesets.
- Identify the disk storage pool where the contents of the files are stored.
- Create a QoS user class and assign the filesets to it.
- 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.
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.
mmadddisk mmdeldisk mmfileid mmlssnapshot mmapplypolicy mmdelfileset mmfsck mmrestripefs mmbackup mmdelsnapshot mmimgbackup mmrpldisk mmcheckquota mmdf mmimgrestore 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
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. |
|
--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:
|
||||
-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. |
|
-C refers to all the nodes in the specified cluster or clusters. | all, all_local, all_remote, or ClusterName | All local and remote clusters. |
- 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.
- 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.
- 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:
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 create qos2 --pool system --class HR_Dept2 -N TCTNodeClass1 --maxmbs 100
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 -N TCTNodeClass1 --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 update qos2 --pool system --class HR_Dept2 -C all_local --maxmbs 200
# 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
- 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:
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 |
- 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)
.
- 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.
- 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.
- 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.
- 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:
- The QoS statistics variables for the class are reset to zero.
- Statistics are collected until the collection interval ends.
- The accumulated statistics are sent to a QoS manager node.
- 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.
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 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.
- 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.
- -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 subtopicCreating 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. - 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:
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=yes
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:
- Analyzing regular output from the mmqos report list command
- Analyzing fine-grained output from the mmqos report list command
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.
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 isgpfs1
:
All the settings that are listed in this example are default values.# 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
- 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 command displays QoS status information for the file system both as it exists in the CCR and as it exists in the file system:# mmqos filesystem status fs1 Configuration Repository Daemon ------------------------ ------ State: disabled disabled Version: 49 49 Throttling: -- inactive Monitoring: -- inactive
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 as2
, 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.
Analyzing regular output from the mmqos report list command
andAnalyzing 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
- 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.
# 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
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 |
- 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.
- 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.
## conti=4
You can avoid redisplaying statistics by having the next
mmqos report list command display statistics beginning at this block
index.Examples
- This example shows the steps for creating a new QoS configuration:
- Issue the mmqos class create command to create a user class
HR_Dept_1
and to associate it with an existing filesettestfs1
:# 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.
- Optionally, you can Issue the mmqos class list command to verify that
user class
HR_Dept_1
has been created and is associated with filesettestfs1
:# mmqos class list gpfs1 Class Name Type Fileset Name ------------------------------------------- maintenance system -- other system -- misc system -- mdio-all-sharing system -- HR_Dept_1 user testfs1
- Issue mmqos throttle create command to create a throttle. In this
example, the command does the following actions:
- It creates a new throttle.
- It associates the throttle with an existing storage pool
C
and with the new user classHR_Dept_1
. - 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.
- 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
- Issue the mmqos filesystem enable command to enable QoS processing for file
system
gpfs1:
The QoS class specification provides the following information:# 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 only storage pool listed is storage pool
C
. That is because poolC
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.
- The only storage pool listed is storage pool
- 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
- 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.
- 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>
- Issue the mmqos class create command to create a user class
- 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.
- 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:
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 class list gpfs1 Class Name Class Type Fileset Name ----------------------------------------------------------- maintenance system -- other system -- misc system -- mdio-all-sharing system --
The mmqos throttle list command shows that the throttle has been created:# 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.
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 list gpfs1 Pool Name Class Name Node/Nodeclass Cluster Scope MaxIOPS MaxMBS ------------------------------------------------------------------------------------- system maintenance - all_local unlimited 200
The mmqos throttle list command shows that the maximum MB/s setting has changed to 400:# 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.
# mmqos throttle list gpfs1 Pool Name Class Name Node/Nodeclass Cluster Scope MaxIOPS MaxMBS ------------------------------------------------------------------------------------- system maintenance - all_local unlimited 400
- The following example shows how to create a QoS user class and modify the throttle scope and the
I/O limits:
- 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 --
- The following mmqos class create command creates the QoS user class
HR_Dept_2
, which includes filesetshrfset1
andhrfset2
:
The mmqos class list command shows that the user class# 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.
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
- 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:
The mmqos throttle list command shows that the throttle is created:# 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.
# 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
- The mmqos throttle update command is issued to change the maximum IOPS
setting of the throttle to 300
IOPS:
The mmqos throttle list command shows that the maximum IOPS for the throttle is now 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.
# 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
- The mmqos throttle updatekey command is issued to narrow the scope of
the throttle to a single node
gpfsnode2.gpfs.net
:
The mmqos throttle list command shows that the scope of the throttle is now set to node# 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.
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
- 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:
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 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.
# 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
- Finally, the mmqos throttle delete command is issued to delete the
throttle:
The mmqos throttle list command no longer lists the QoS user throttle, because it has been deleted:# 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.
# mmqos throttle list gpfs1 Pool Name Class Name Node/Nodeclass Cluster Scope MaxIOPS MaxMBS ---------------------------------------------------------------------------------------- system maintenance - all_local unlimited 200
- The following mmqos class list command shows that no QoS user classes
have been created
yet:
- 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:
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 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 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 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 mmqos throttle list command shows that the throttle for the mdio-all-sharing class is created:# 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.
# 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
- 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:
In the second example, the node# 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
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.
- 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:
- 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.
- 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
- Issue the mmqos filesystem reset command to reset all the
configuration information for file system gpfs1: