Interface perfstat_partial_reset
L'interface perfstat_partial_reset réinitialise les métriques en cache spécifiées qui sont stockées par l'API libperfstat .
L'interface perfstat_partial_reset peut également réinitialiser les compteurs minimum et maximum du système liés aux disques et aux chemins d'accès. Le tableau suivant récapitule les différentes actions de l'interface perfstat_partial_reset :
| Valeur du masque de réinitialisation | Action effectuée lorsque la valeur du nom est NULL | Action effectuée lorsque la valeur du nom n'est pas NULL et qu'une valeur de masque de réinitialisation unique est définie |
|---|---|---|
| FLUSH_CPUTOTAL | Vide les valeurs speed et description dans la structure perfstat_cputotal_t . |
Erreur. La valeur de errno est définie sur EINVAL. |
| DISQUE_FLUSHS | Vide les valeurs description, adapter, size, freeet vgname dans chaque structure perfstat_disk_t structure.Flushes de la liste des adaptateurs de disque. Vide les valeurs size, freeet description dans chaque structureperfstat_diskadapter_t . |
Vide les valeurs description, adapter, size, freeet vgname dans la structure perfstat_disk_t spécifiée. Vide la valeur adapter dans chaque structure perfstat_diskpath_t qui correspond au nom de disque suivi de l'identificateur _Path . Vide les valeurs size, freeet description de chaque structure perfstat_diskadapter_t liée à un chemin d'accès au disque ou au disque lui-même. |
| RESET_DISK_MINMAX | Réinitialise les valeurs suivantes dans chaque structure perfstat_diskadapter_t :
|
Erreur. La valeur de errno est définie sur ENOTSUP. |
| ADAPTATEUR_DISQUE_FLUSH_ | Vide la liste des adaptateurs de disque. Vide les valeurs size, freeet description dans chaque structure perfstat_diskadapter_t . Vide la valeur adapter dans chaque structure perfstat_diskpath_t . Vide les valeurs description et adapter dans chaque structure perfstat_disk_t . |
Vide la liste des adaptateurs de disque. Vide les valeurs size, freeet description dans chaque structure perfstat_diskadapter_t structure.Flushes la valeur adapter dans chaque structure perfstat_diskpath_t . Vide les valeurs description et adapter dans chaque structure perfstat_disk_t . |
| CHEMIN_DISQUE_FLUSH_ | Vide la valeur adapter dans chaque structure perfstat_diskpath_t . |
Vide la valeur adapter dans la structure perfstat_diskpath_t spécifiée. |
| ESPACE_PAGING_FLUSH_ | Vide la liste des espaces de pagination. Vide les fichiers automatic, type, lpsize, mbsize, hostname, filename, et vgname dans chaque structure perfstat_pagingspace_t . |
Vide la liste des espaces de pagination. Vide les fichiers automatic, type, lpsize, mbsize, hostname, filename, et vgname dans la structure perfstat_pagingspace_t spécifiée. |
| FLUSH_NETINTERFACE | Vide la valeur description dans chaque structure perfstat_netinterface_t . |
Vide la valeur description dans la structure perfstat_netinterface_t spécifiée. |
| VOLUME_LOGIQUE_FLUSH_LOGIQUE | Vide la valeur description dans chaque structure perfstat_logicalvolume_t . |
Vide la valeur description dans chaque structure perfstat_logicalvolume_t . |
| FLUSH_VOLUMEGROUP | Vide la valeur description dans chaque structure perfstat_volumegroup_t . |
Vide la valeur description dans chaque structure perfstat_volumegroup_t . |
Vous pouvez voir comment utiliser l'interface perfstat_partial_reset dans l'exemple de code suivant:
#include <stdio.h>
#include <stdlib.h>
#include <libperfstat.h>
int main(int argc, char *argv[]) {
int i, retcode;
perfstat_id_t diskname;
perfstat_disk_t *statp;
/* set name of the disk */
strcpy(diskname.name, "hdisk0");
/* we will now reset global system min/max metrics
* Be careful as this could interact with other programs.
*/
perfstat_partial_reset(NULL, RESET_DISK_MINMAX);
/* min/max values are now reset.
* We can now wait for some time before checking the variation range.
*/
sleep(10);
retcode = perfstat_disk(NULL, NULL, sizeof(perfstat_disk_t), 0);
statp = calloc (retcode,sizeof(perfstat_disk_t));
/* get disk metrics - min/max counters illustrate variations during the
* last 60 seconds unless someone else reset these
* values in the meantime.
*/
retcode = perfstat_disk(&diskname, statp, sizeof(perfstat_disk_t), 1);
/* At this point, we assume the disk free part changes due to chfs for example */
/* if we get disk metrics here, the free field will be wrong as it was
* cached by the libperfstat.
*/
/* That is why we reset cached metrics */
perfstat_partial_reset("hdisk0", FLUSH_DISK);
/* we can now get updated disk metrics */
retcode = perfstat_disk(&diskname, statp, sizeof(perfstat_disk_t), 1);
for(i=0;i<retcode;i++){
printf("Name of the disk=%s\n",statp[i].name);
printf("Disk description=%s\n",statp[i].description);
printf("Volume group name=%s\n",statp[i].vgname);
printf("Size of the disk=%lld\n",statp[i].size);
printf("Free portion of the disk=%lld\n",statp[i].free);
printf("Disk block size=%lld\n",statp[i].bsize);
}
}Le programme affiche une sortie similaire à l'exemple suivant:Name of the disk=hdisk0
Disk description=Virtual SCSI Disk Drive
Volume group name=rootvg
Size of the disk=25568
Free portion of the disk=18752
Disk block size=512