mmlsqos command

Displays the I/O performance values of a file system, when you enable Quality of Service for I/O operations (QoS) with the mmchqos command.

Synopsis

mmlsqos Device
        [--pool {all | Pool}] 
        [--seconds Seconds] 
        [--sum-classes {yes | no}] 
        [--sum-nodes {yes | no}]

Availability

Available on all IBM Spectrum Scale™ editions.

Description

With the mmlsqos command, you can display the consumption of I/O operations by processes that access designated storage pools. With the mmchqos command, you can regulate I/O access to a specified storage pool by allocating shares of I/O operations to two QoS classes:
maintenance
The default QoS class for some I/O intensive, potentially long-running GPFS™ commands, such as mmbackup, mmrestore
other
The default QoS class for all other processes.

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

Remember the following points:
  • Allocations persist across unmounting and remounting the file system.
  • QoS stops applying allocations when you unmount the file system and resumes when you remount it.
  • When you change allocations or mount the file system, a brief delay due to reconfiguration occurs before QoS starts applying allocations.
For more information about this command, see Setting the Quality of Service for I/O operations (QoS).

When the file system is mounted, the command displays information about the QoS classes of both explicitly named pools and unnamed pools. Unnamed pools are storage pools that you have not specified by name in any mmchqos command. When the file system is unmounted, the command displays information about only the QoS classes of explicitly named pools.

Parameters

Device
The device name of the file system to which the QoS action applies.
--pool
Display the I/O performance values for all QoS pools if all is specified, or for the named pool if a pool name is specified. The default is all.
--seconds
Display the I/O performance values for the previous number of seconds. The valid range of seconds is 1-999. The default value is 60 seconds. The values are displayed for subperiods within the period that you specify. The subperiods might be every 5 seconds over the last 60 seconds, or every 60 seconds over the last 600 seconds. You cannot configure the number or length of subperiods.
--sum-classes
Display the I/O performance for each QoS class separately if no is specified, or summed across all the QoS classes if yes is specified. The default is no.
--sum-nodes
If yes is specified, display the I/O performance summed across all the nodes in the cluster. If no is specified, display the I/O performance for each node separately. The default is yes.

Exit status

0
Successful completion.
Nonzero
A failure occurred.

Security

You must have root authority to run the mmlsqos command.

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

Analyzing the output from mmlsqos

The mmlsqos command always shows the first three lines of output:
QOS config::
Indicates whether QoS is actively regulating I/O consumption (enabled) or is quiescent (disabled).
QOS values::
Displays, for each storage pool that you configured, the name of the storage pool and the IOPS that you assigned to the other class and the maintenance class. In the following example fragment, the command shows that the system storage pool is configured with the value of inf for both QoS classes:
QOS values:: pool=system,other=inf,maintenance/all_local=inf
The qualifier /all_local after maintenance indicates that the maintenance IOPS are applied to all the files systems owned by the cluster. This value is the default for the maintenance class.
QOS status::
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 sample output is complete:
# mmlsqos fs --seconds 30
QOS config::     enabled
QOS values::     pool=system,other=inf,maintenance/all_local=inf:pool=fpodata,other=inf,maintenance/all_local=inf
QOS status::     throttling active, monitoring active
=== for pool fpodata
01:31:45  misc iops=11 ioql=0.016539 qsdl=1.2e-06 et=5
=== for pool system
01:31:45  misc iops=8.2 ioql=0.013774 qsdl=2e-06 et=5
The command mmlsqos fs0 --seconds 30 requests a display of I/O performance values for all QoS pools over the previous 30 seconds. Because the parameters --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.

The information that is displayed for the two configured pools, fpodata and system, indicates that IOPS occurred only for processes 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.
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.

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.

Examples

  1. The following command displays the I/O performance values for all the pools in the file system over the previous 60 seconds. It does so for each QoS class separately and summed across all the nodes in the cluster.
    mmlsqos fs0 --seconds 60
  2. The following command displays the I/O performance values for the named pool over the previous 60 seconds. It does so for each QoS class separately and for each node separately.
    mmlsqos fs0 --pool pname0 --sum-nodes no

Location

/usr/lpp/mmfs/bin