Date: Tue, 24 Mar 2015 12:23:22 +0100 From: Willem Jan Withagen <wjw@digiware.nl> To: fs@freebsd.org Subject: Re: Missing some ZFS values in sysctl output Message-ID: <5511492A.5020408@digiware.nl> In-Reply-To: <550F45CA.5000302@digiware.nl> References: <550F45CA.5000302@digiware.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
On 22-3-2015 23:44, Willem Jan Withagen wrote: > Hoi, > > There is this zfs-snmp script that allows one the graph certain things > from a ZFS setup. > The original uses solaris' kstat, but just about all values are in > Sysctl with FreeBSD. > > However I seem to overlook the values for: > > Original code: > ==== > def zfs_read(oid): > return ('counter', kstat("unix:0:vopstats_zfs:read_bytes") / 1024 % > 2**32) # 32 bit KB counter > > def zfs_readdir(oid): > return ('counter', kstat("unix:0:vopstats_zfs:readdir_bytes") / 1024 > % 2**32) # 32 bit KB counter > > def zfs_write(oid): > return ('counter', kstat("unix:0:vopstats_zfs:write_bytes") / 1024 % > 2**32) # 32 bit KB counter > ======= > > Read and write are available for L2 arc, but for the global values I > seem to miss them. > > Are they really not in ZFS? > And is it possible to add them? Right, Just to answer my own question.... I looked into the illumos code, and it looks like the vopstats are stats that are kept per filesystem-type on solaris, and these are the ZFS variants.... typedef struct vopstats { kstat_named_t nopen; /* VOP_OPEN */ kstat_named_t nclose; /* VOP_CLOSE */ kstat_named_t nread; /* VOP_READ */ kstat_named_t read_bytes; kstat_named_t nwrite; /* VOP_WRITE */ kstat_named_t write_bytes; kstat_named_t nioctl; /* VOP_IOCTL */ kstat_named_t nsetfl; /* VOP_SETFL */ kstat_named_t ngetattr; /* VOP_GETATTR */ kstat_named_t nsetattr; /* VOP_SETATTR */ kstat_named_t naccess; /* VOP_ACCESS */ kstat_named_t nlookup; /* VOP_LOOKUP */ kstat_named_t ncreate; /* VOP_CREATE */ kstat_named_t nremove; /* VOP_REMOVE */ kstat_named_t nlink; /* VOP_LINK */ kstat_named_t nrename; /* VOP_RENAME */ kstat_named_t nmkdir; /* VOP_MKDIR */ kstat_named_t nrmdir; /* VOP_RMDIR */ kstat_named_t nreaddir; /* VOP_READDIR */ kstat_named_t readdir_bytes; kstat_named_t nsymlink; /* VOP_SYMLINK */ kstat_named_t nreadlink; /* VOP_READLINK */ kstat_named_t nfsync; /* VOP_FSYNC */ kstat_named_t ninactive; /* VOP_INACTIVE */ kstat_named_t nfid; /* VOP_FID */ kstat_named_t nrwlock; /* VOP_RWLOCK */ kstat_named_t nrwunlock; /* VOP_RWUNLOCK */ kstat_named_t nseek; /* VOP_SEEK */ kstat_named_t ncmp; /* VOP_CMP */ kstat_named_t nfrlock; /* VOP_FRLOCK */ kstat_named_t nspace; /* VOP_SPACE */ kstat_named_t nrealvp; /* VOP_REALVP */ kstat_named_t ngetpage; /* VOP_GETPAGE */ kstat_named_t nputpage; /* VOP_PUTPAGE */ kstat_named_t nmap; /* VOP_MAP */ kstat_named_t naddmap; /* VOP_ADDMAP */ kstat_named_t ndelmap; /* VOP_DELMAP */ kstat_named_t npoll; /* VOP_POLL */ kstat_named_t ndump; /* VOP_DUMP */ kstat_named_t npathconf; /* VOP_PATHCONF */ kstat_named_t npageio; /* VOP_PAGEIO */ kstat_named_t ndumpctl; /* VOP_DUMPCTL */ kstat_named_t ndispose; /* VOP_DISPOSE */ kstat_named_t nsetsecattr; /* VOP_SETSECATTR */ kstat_named_t ngetsecattr; /* VOP_GETSECATTR */ kstat_named_t nshrlock; /* VOP_SHRLOCK */ kstat_named_t nvnevent; /* VOP_VNEVENT */ kstat_named_t nreqzcbuf; /* VOP_REQZCBUF */ kstat_named_t nretzcbuf; /* VOP_RETZCBUF */ } vopstats_t; As far as I can tell we do not have these structures in vnode.{c,h} and as such do not keep tracks of these statistics. Nothing equal to this jumps out from the sysctl-tree. But I happily stand corrected. Tinkering this in just the ZFS code would be a serious undertaking. At least for me. And all this just to some snmp-stats. --WjW
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5511492A.5020408>