jc icon indicating copy to clipboard operation
jc copied to clipboard

Feature request - nfsiostat support

Open kmickeletto opened this issue 2 years ago • 6 comments

I will be completely honest, I'm sitting in a restaurant salivating thinking about getting back home and playing with this tool! The one thing that I have noticed that is missing that would make my life so much easier would be the inclusion of nfsiostat output support.

nfsiostat output is very similar to iostat, so it shouldn't be overly complicated to either tweak --iostat or create a new --nfsiostat command from the --iostat parser.

I'll come back and include some examples of the output to make your life a bit easier.

Thanks for creating this! Can't wait to get back home and check this out and kick the tires!

kmickeletto avatar Oct 25 '22 18:10 kmickeletto

Hey thanks for the kind words and for the parser suggestion! Examples would be great and if it is similar to --iostat then it could be fairly straightforward to port.

kellyjonbrazil avatar Oct 25 '22 18:10 kellyjonbrazil

Okay, as promised, here is the output.

nfsiostat

# nfsiostat

192.168.128.220:/mnt/warm/archivedb mounted on /archive:

           ops/s       rpc bklog
           4.234           0.000

read:              ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)  avg queue (ms)          errors
                   0.000           0.000           0.335        0 (0.0%)           6.013           6.239           0.013        0 (0.0%)
write:             ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)  avg queue (ms)          errors
                   0.000           0.000           0.000        0 (0.0%)           0.000           0.000           0.000        0 (0.0%)

192.168.128.221:/mnt/secondmount mounted on /blah:

           ops/s       rpc bklog
           3.215           0.000

read:              ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)  avg queue (ms)          errors
                   0.000           0.000           0.335        0 (0.0%)           6.013           4.231           0.011        0 (0.0%)
write:             ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)  avg queue (ms)          errors
                   0.000           0.000           0.000        0 (0.0%)           0.000           0.000           0.000        0 (0.0%)

iostat

# iostat -xy
Linux 4.18.0-372.19.1.el8_6.x86_64 (myhost.domain.local)    10/25/2022      _x86_64_        (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.81    0.00    0.79    0.02    0.00   87.39

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              0.08    2.36      1.22     33.17     0.00     0.11   5.48   4.31    0.44    1.70   0.00    15.06    14.08   0.75   0.18
sdd              0.05    0.00      0.01      0.00     0.00     0.00   0.00   0.00    0.03    4.88   0.00     0.13   258.56   0.17   0.00
sdc              0.07    0.95      2.45    100.88     0.00     0.11   0.10  10.55    1.19    9.34   0.01    36.91   106.52   1.20   0.12
sdb              0.07    2.78      1.41     26.42     0.00     0.16   0.12   5.38    0.35    1.80   0.01    20.17     9.51   1.55   0.44
dm-0             0.01    0.01      0.02      0.34     0.00     0.00   0.00   0.00    1.90   61.13   0.00     4.39    23.15   0.15   0.00
dm-1             0.03    2.44      1.17     32.79     0.00     0.00   0.00   0.00    1.00    1.77   0.00    39.32    13.41   0.74   0.18

After looking at them side by side, I guess my memory was slightly off on the formatting. I guess they aren't so similar after all. :-)

kmickeletto avatar Oct 25 '22 19:10 kmickeletto

Interesting, is this the same nfsiostat program? If so, it looks like it was written in python 2.x.

https://github.com/kouril/nfs-utils/blob/master/tools/nfs-iostat/nfs-iostat.py

If there is an updated python 3.x version it might be easier to put in a Pull Request for a JSON output option. :)

kellyjonbrazil avatar Oct 25 '22 23:10 kellyjonbrazil

Hi @kmickeletto I'm looking at implementing this parser soon. Could you let me know if this type of schema looks ok or if I'm missing anything? Thanks!

[
    {
        "filesystem": "192.168.128.220:/mnt/warm/archivedb",
        "mount": "/archive",
        "ops_sec": 4.234,
        "rpc_bklog": 0.0,
        "read": {
            "ops_s": 0.0,
            "kb_s": 0.0,
            "kb_op": 0.335,
            "retrans": 0,
            "retrans_percent": 0.0,
            "avg_rtt_ms": 6.013,
            "avg_exe_ms": 6.239,
            "avg_queue_ms": 0.013,
            "errors": 0,
            "errors_percent": 0.0
        },
        "write": {
            "ops_s": 0.0,
            "kb_s": 0.0,
            "kb_op": 0.335,
            "retrans": 0,
            "retrans_percent": 0.0,
            "avg_rtt_ms": 6.013,
            "avg_exe_ms": 6.239,
            "avg_queue_ms": 0.013,
            "errors": 0,
            "errors_percent": 0.0
        } 
    }
]

Note, it looks like there is another (older?) version of nfsiostat floating around. Not sure if that is still used: https://www.admin-magazine.com/HPC/Articles/Monitoring-NFS-Storage-with-nfsiostat

kellyjonbrazil avatar Dec 04 '22 22:12 kellyjonbrazil

@kmickeletto any way you could get me an output sample with a count of 3 or 5? Something like:

$ nfsiostat 1 5

Thanks!

kellyjonbrazil avatar Dec 08 '22 21:12 kellyjonbrazil

@kmickeletto I should be able to knock this parser out pretty quickly but I need a sample of nfsiostat output with multiple runs. Could you send me the output of the following?

$ nfsiostat 1 5

kellyjonbrazil avatar Jan 24 '23 04:01 kellyjonbrazil