All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marko Myllynen <myllynen@redhat.com>
To: linux-nfs@vger.kernel.org
Subject: [PATCH v2] nfsstat: add server io stats
Date: Mon, 22 Sep 2014 15:44:17 +0300	[thread overview]
Message-ID: <542019A1.9040706@redhat.com> (raw)

>From 15fc547d8deb3d1975d160deacc05a0f5bec0845 Mon Sep 17 00:00:00 2001
From: Marko Myllynen <myllynen@redhat.com>
Date: Mon, 22 Sep 2014 15:30:07 +0300
Subject: [PATCH v2] nfsstat: add server io stats

Add server io statistics to nfsstat.

Signed-off-by: Marko Myllynen <myllynen@redhat.com>
---
 utils/nfsstat/nfsstat.c |   26 +++++++++++++++++++++++---
 1 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/utils/nfsstat/nfsstat.c b/utils/nfsstat/nfsstat.c
index 298adcf..83bde9d 100644
--- a/utils/nfsstat/nfsstat.c
+++ b/utils/nfsstat/nfsstat.c
@@ -92,6 +92,10 @@ static unsigned int	srvfhinfo[7], srvfhinfo_old[7];		/* (for kernels >= 2.4.0)
 								 *    compatability.
 								 */
 
+static unsigned int	srvioinfo[3], srvioinfo_old[3];		/* 0  bytes read
+								 * 1  bytes written
+								 */
+
 static const char *	nfsv2name[SRVPROC2_SZ] = {
 	"null", "getattr", "setattr", "root",   "lookup",  "readlink",
 	"read", "wrcache", "write",   "create", "remove",  "rename",
@@ -167,6 +171,7 @@ static const char *     nfssrvproc4opname[SRVPROC4OPS_SZ] = {
 #define LABEL_srvrpc		"Server rpc stats:\n"
 #define LABEL_srvrc		"Server reply cache:\n"
 #define LABEL_srvfh		"Server file handle cache:\n"
+#define LABEL_srvio		"Server io stats:\n"
 #define LABEL_srvproc2		"Server nfs v2:\n"
 #define LABEL_srvproc3		"Server nfs v3:\n"
 #define LABEL_srvproc4		"Server nfs v4:\n"
@@ -198,6 +203,7 @@ typedef struct statinfo {
 					SRV(rpc,s), \
 					SRV(rc,s), \
 					SRV(fh,s), \
+					SRV(io,s), \
 					SRV(proc2,s), \
 					SRV(proc3,s),\
 					SRV(proc4,s), \
@@ -249,6 +255,7 @@ static time_t		starttime;
 #define PRNT_NET	0x0004
 #define PRNT_FH		0x0008
 #define PRNT_RC		0x0010
+#define PRNT_IO		0x0020
 #define PRNT_AUTO	0x1000
 #define PRNT_V2		0x2000
 #define PRNT_V3		0x4000
@@ -277,6 +284,7 @@ void usage(char *name)
      net		Network layer statistics\n\
      fh			Usage information on the server's file handle cache\n\
      rc			Usage information on the server's request reply cache\n\
+     io			Usage information on the server's io statistics\n\
      all		Select all of the above\n\
   -v, --verbose, --all	Same as '-o all'\n\
   -r, --rpc		Show RPC statistics\n\
@@ -366,8 +374,10 @@ main(int argc, char **argv)
 				opt_prt |= PRNT_RC;
 			else if (!strcmp(optarg, "fh"))
 				opt_prt |= PRNT_FH;
+			else if (!strcmp(optarg, "io"))
+				opt_prt |= PRNT_IO;
 			else if (!strcmp(optarg, "all"))
-				opt_prt |= PRNT_CALLS | PRNT_RPC | PRNT_NET | PRNT_RC | PRNT_FH;
+				opt_prt |= PRNT_CALLS | PRNT_RPC | PRNT_NET | PRNT_RC | PRNT_FH | PRNT_IO;
 			else {
 				fprintf(stderr, "nfsstat: unknown category: "
 						"%s\n", optarg);
@@ -435,9 +445,9 @@ main(int argc, char **argv)
 	if (!(opt_prt & 0xe000)) {
 		opt_prt |= PRNT_AUTO;
 	}
-	if ((opt_prt & (PRNT_FH|PRNT_RC)) && !opt_srv) {
+	if ((opt_prt & (PRNT_FH|PRNT_RC|PRNT_IO)) && !opt_srv) {
 		fprintf(stderr,
-			"You requested file handle or request cache "
+			"You requested io, file handle, or request cache "
 			"statistics while using the -c option.\n"
 			"This information is available only for the NFS "
 			"server.\n");
@@ -552,6 +562,16 @@ print_server_stats(int opt_prt)
 			printf("\n");
 		}
 	}
+	if (opt_prt & PRNT_IO) {
+		if (opt_sleep && !has_rpcstats(srvioinfo, 3)) {
+			;
+		} else {
+			print_numbers(LABEL_srvio
+				"read       write\n",
+				srvioinfo, 2);
+			printf("\n");
+		}
+	}
 
 	/*
 	 * 2.2 puts all fh-related info after the 'rc' header
-- 
1.7.1

-- 
Marko Myllynen

             reply	other threads:[~2014-09-22 12:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-22 12:44 Marko Myllynen [this message]
2014-09-22 14:12 ` [PATCH v2] nfsstat: add server io stats Steve Dickson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=542019A1.9040706@redhat.com \
    --to=myllynen@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.