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 ごとに、ディスク・アダプターのリストの description、 adapter、 size、 free、および vgname の値をフラッシュします。 すべてのperfstat_diskadapter_t 構造内の size、 free、および description の値をフラッシュします。 |
指定された perfstat_disk_t 構造内の description、 adapter、 size、 free、および vgname 値をフラッシュします。 _Path ID が後に続くディスク名と一致するすべての perfstat_diskpath_t 構造内の adapter 値をフラッシュします。 ディスクまたはディスク自体に至るパスにリンクされている各 perfstat_diskadapter_t 構造の size値、 free値、および description 値をフラッシュします。 |
| 最小値の再設定 (RESET_DISK_MINMAX) | すべての perfstat_diskadapter_t 構造で以下の値をリセットします。
|
エラー。 errno の値は ENOTSUP に設定されます。 |
| フラッシュ・ディスク・アダプター | ディスク・アダプターのリストをフラッシュします。 すべての perfstat_diskadapter_t 構造内の size、 free、および description の値をフラッシュします。 すべての perfstat_diskpath_t 構造で adapter 値をフラッシュします。 すべての perfstat_disk_t 構造内の description 値と adapter 値をフラッシュします。 |
ディスク・アダプターのリストをフラッシュします。 すべての perfstat_diskadapter_t structure.Flushes の size、 free、および description の値を、すべての パフォーマンス・ディスク・パス 構造の adapter 値にフラッシュします。 すべての perfstat_disk_t 構造内の description 値と adapter 値をフラッシュします。 |
| フラッシュ・ディスク・パス | すべての perfstat_diskpath_t 構造で adapter 値をフラッシュします。 |
指定された perfstat_diskpath_t 構造内の adapter 値をフラッシュします。 |
| フラッシュページングスペース | ページング・スペースのリストをフラッシュします。 automatic、 type、 lpsize、 mbsize、 hostname、 filenameをフラッシュします。 およびすべての perfstat_pagingspace_t 構造内の vgname 値。 |
ページング・スペースのリストをフラッシュします。 automatic、 type、 lpsize、 mbsize、 hostname、 filenameをフラッシュします。 および指定された 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