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 :
  • wq_min_time
  • wq_max_time
  • min_rserv
  • max_rserv
  • min_wserv
  • max_wserv
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