perfstat_partial_reset インターフェース

perfstat_partial_reset インターフェースは、 libperfstat API によって保管された、指定されたキャッシュ・メトリックをリセットします。

perfstat_partial_reset インターフェースは、ディスクおよびパスに関連するシステムの最小カウンターおよび最大カウンターをリセットすることもできます。 以下の表に、 perfstat_partial_reset インターフェースの各種アクションの要約を示します。
リセット・マスク値 名前の値が NULL の場合に実行されるアクション 名前の値が NULL ではなく、単一のリセット・マスク値が設定されている場合に実行されるアクション
FLUSH_CPUTOTAL perfstat_cputotal_t 構造内の speed 値および description 値をフラッシュします。 エラー。 errno の値は EINVAL に設定されます。
フラッシュ・ディスク (FLUSH_DISK) パフォーマンス・ステータス・ディスク structure.Flushes ごとに、ディスク・アダプターのリストの descriptionadaptersizefree、および vgname の値をフラッシュします。 すべてのperfstat_diskadapter_t 構造内の sizefree、および description の値をフラッシュします。 指定された perfstat_disk_t 構造内の descriptionadaptersizefree、および vgname 値をフラッシュします。 _Path ID が後に続くディスク名と一致するすべての perfstat_diskpath_t 構造内の adapter 値をフラッシュします。 ディスクまたはディスク自体に至るパスにリンクされている各 perfstat_diskadapter_t 構造の size値、 free値、および description 値をフラッシュします。
最小値の再設定 (RESET_DISK_MINMAX) すべての perfstat_diskadapter_t 構造で以下の値をリセットします。
  • wq_min_time
  • wq_max_time
  • min_rserv
  • max_rserv
  • min_wserv
  • max_wserv
エラー。 errno の値は ENOTSUP に設定されます。
フラッシュ・ディスク・アダプター ディスク・アダプターのリストをフラッシュします。 すべての perfstat_diskadapter_t 構造内の sizefree、および description の値をフラッシュします。 すべての perfstat_diskpath_t 構造で adapter 値をフラッシュします。 すべての perfstat_disk_t 構造内の description 値と adapter 値をフラッシュします。 ディスク・アダプターのリストをフラッシュします。 すべての perfstat_diskadapter_t structure.Flushes の sizefree、および description の値を、すべての パフォーマンス・ディスク・パス 構造の adapter 値にフラッシュします。 すべての perfstat_disk_t 構造内の description 値と adapter 値をフラッシュします。
フラッシュ・ディスク・パス すべての perfstat_diskpath_t 構造で adapter 値をフラッシュします。 指定された perfstat_diskpath_t 構造内の adapter 値をフラッシュします。
フラッシュページングスペース ページング・スペースのリストをフラッシュします。 automatictypelpsizembsizehostnamefilenameをフラッシュします。 およびすべての perfstat_pagingspace_t 構造内の vgname 値。 ページング・スペースのリストをフラッシュします。 automatictypelpsizembsizehostnamefilenameをフラッシュします。 および指定された perfstat_pagingspace_t 構造の vgname 値。
FLUSH_NETINTERFACE すべての perfstat_netinterface_t 構造で description 値をフラッシュします。 指定された perfstat_netinterface_t 構造で description 値をフラッシュします。
フラッシュ・ボリューム (FLUSH_LOGICALVOLUME) すべての perfstat_logicalvolume_t 構造で description 値をフラッシュします。 すべての perfstat_logicalvolume_t 構造で description 値をフラッシュします。
フラッシュボリュームグループ すべての perfstat_volumegroup_t 構造で description 値をフラッシュします。 すべての perfstat_volumegroup_t 構造で description 値をフラッシュします。
perfstat_partial_reset インターフェースの使用方法については、以下のコード例を参照してください。
#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);
  }
}
プログラムは、以下の出力例のような出力を表示します。
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