start solaris nfs metrics
This commit is contained in:
parent
b27e2e8eb3
commit
f3ac51daa5
|
@ -2385,10 +2385,74 @@ sigar_tcp_stat_get(sigar_t *sigar,
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int sigar_nfs_get(sigar_t *sigar,
|
||||||
|
char *type,
|
||||||
|
char **names,
|
||||||
|
char *nfsstat)
|
||||||
|
{
|
||||||
|
size_t offset;
|
||||||
|
kstat_t *ksp;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (sigar_kstat_update(sigar) == -1) {
|
||||||
|
return errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(ksp = kstat_lookup(sigar->kc, "nfs", 0, type))) {
|
||||||
|
return SIGAR_ENOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (kstat_read(sigar->kc, ksp, NULL) < 0) {
|
||||||
|
return errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=0, offset=0;
|
||||||
|
names[i];
|
||||||
|
i++, offset+=sizeof(sigar_uint64_t))
|
||||||
|
{
|
||||||
|
sigar_uint64_t val;
|
||||||
|
kstat_named_t *kv =
|
||||||
|
kstat_data_lookup(ksp, names[i]);
|
||||||
|
|
||||||
|
if (kv) {
|
||||||
|
val = kv->value.ui64;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
val = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
*(sigar_uint64_t *)((char *)nfsstat + offset) = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SIGAR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *nfs_v2_names[] = {
|
||||||
|
"null",
|
||||||
|
"getattr",
|
||||||
|
"setattr",
|
||||||
|
"root",
|
||||||
|
"lookup",
|
||||||
|
"readlink",
|
||||||
|
"read",
|
||||||
|
"wrcache",
|
||||||
|
"write",
|
||||||
|
"create",
|
||||||
|
"remove",
|
||||||
|
"rename",
|
||||||
|
"link",
|
||||||
|
"symlink",
|
||||||
|
"mkdir",
|
||||||
|
"rmdir",
|
||||||
|
"readdir",
|
||||||
|
"statfs",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
int sigar_nfs_client_v2_get(sigar_t *sigar,
|
int sigar_nfs_client_v2_get(sigar_t *sigar,
|
||||||
sigar_nfs_client_v2_t *nfsstat)
|
sigar_nfs_client_v2_t *nfsstat)
|
||||||
{
|
{
|
||||||
return SIGAR_ENOTIMPL;
|
return sigar_nfs_get(sigar, "rfsreqcnt_v2", nfs_v2_names, (char *)nfsstat);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sigar_nfs_server_v2_get(sigar_t *sigar,
|
int sigar_nfs_server_v2_get(sigar_t *sigar,
|
||||||
|
@ -2397,10 +2461,36 @@ int sigar_nfs_server_v2_get(sigar_t *sigar,
|
||||||
return SIGAR_ENOTIMPL;
|
return SIGAR_ENOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *nfs_v3_names[] = {
|
||||||
|
"null",
|
||||||
|
"getattr",
|
||||||
|
"setattr",
|
||||||
|
"lookup",
|
||||||
|
"access",
|
||||||
|
"readlink",
|
||||||
|
"read",
|
||||||
|
"write",
|
||||||
|
"create",
|
||||||
|
"mkdir",
|
||||||
|
"symlink",
|
||||||
|
"mknod",
|
||||||
|
"remove",
|
||||||
|
"rmdir",
|
||||||
|
"rename",
|
||||||
|
"link",
|
||||||
|
"readdir",
|
||||||
|
"readdirplus",
|
||||||
|
"fsstat",
|
||||||
|
"fsinfo",
|
||||||
|
"pathconf",
|
||||||
|
"commit",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
int sigar_nfs_client_v3_get(sigar_t *sigar,
|
int sigar_nfs_client_v3_get(sigar_t *sigar,
|
||||||
sigar_nfs_client_v3_t *nfsstat)
|
sigar_nfs_client_v3_t *nfsstat)
|
||||||
{
|
{
|
||||||
return SIGAR_ENOTIMPL;
|
return sigar_nfs_get(sigar, "rfsreqcnt_v3", nfs_v3_names, (char *)nfsstat);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sigar_nfs_server_v3_get(sigar_t *sigar,
|
int sigar_nfs_server_v3_get(sigar_t *sigar,
|
||||||
|
|
Loading…
Reference in New Issue