perfstat_disk Subroutine
Purpose
Retrieves individual disk usage statistics.
Library
Perfstat
library (libperfstat.a
)
Syntax
#include <libperfstat.h>
int perfstat_disk (name, userbuff, sizeof_struct, desired_number)
perfstat_id_t *name;
perfstat_disk_t *userbuff;
size_t sizeof_struct;
int desired_number;
Description
The perfstat_disk subroutine retrieves one or more individual disk usage statistics. The same function can also be used to retrieve the number of available sets of disk statistics.
To get one or more sets of disk usage metrics, set the name parameter to the
name of the first disk for which the the statistics are wanted, and set the
desired_number parameter. To start from the first disk, specify "" or FIRST_DISK
as the name. The userbuff parameter must always point to a
memory area significant enough to contain the wanted number of perfstat_disk_t
structures that will be copied by this function. Upon return, the name parameter
will be set to either the name of the next disk, or to "" after all structures have been copied.
To retrieve the number of available sets of disk usage metrics, set the name and userbuff parameters to NULL, and the desired_number parameter to 0. The returned value will be the number of available sets.
The perfstat_disk subroutine retrieves information from the ODM database. This information is automatically cached into a dictionary, which is assumed to be frozen once loaded. The perfstat_reset subroutine must be called to flush the dictionary whenever the machine configuration has changed.
To improve system performance, the collection of disk input and output statistics is disabled by default in current releases of AIX.
chdev -l sys0 -a iostat=true
lsattr -E -l sys0 -a iostat
Another way to enable the collection of the disk input and output statistics is to use the sys_parm API and the SYSP_V_IOSTRUN flag:
struct vario var;
sys_parm(SYSP_GET,SYSP_V_IOSTRUN, &var);
struct vario var;
var.v.v_iostrun.value=1; /* 1 to set & 0 to unset */
sys_parm(SYSP_SET,SYSP_V_IOSTRUN, &var);
Parameters
Item | Description |
---|---|
name | Contains either "", FIRST_DISK, or a name identifying the first disk for which statistics are
wanted. For example:
|
userbuff | Points to the memory area to be filled with one or more perfstat_disk_t
structures. |
sizeof_struct | Specifies the size of the perfstat_disk_t structure:
sizeof(perfstat_disk_t) |
desired_number | Specifies the number of perfstat_disk_t structures to copy to
userbuff. |
Return Values
Unless the function is used to retrieve the number of available structures, the number of structures that are filled is returned upon successful completion. If unsuccessful, a value of -1 is returned and the errno global variable is set.
Error Codes
The perfstat_disk subroutine is unsuccessful if one of the following is true:
Item | Description |
---|---|
EINVAL |
One of the parameters is not valid. |
EFAULT |
Insufficient memory. |
ENOMEM |
The string default length is too short. |
ENOMSG |
Cannot access the dictionary. |
Files
The libperfstat.h file defines standard macros, data types, and subroutines.