From patchwork Mon Sep 22 05:21:20 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marko Myllynen X-Patchwork-Id: 4945661 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id F154E9F32F for ; Mon, 22 Sep 2014 05:21:25 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 192262010E for ; Mon, 22 Sep 2014 05:21:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0A5B82010C for ; Mon, 22 Sep 2014 05:21:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751256AbaIVFVW (ORCPT ); Mon, 22 Sep 2014 01:21:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:3233 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751039AbaIVFVW (ORCPT ); Mon, 22 Sep 2014 01:21:22 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s8M5LMFa019185 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Mon, 22 Sep 2014 01:21:22 -0400 Received: from mmyllyne.csb (vpn1-7-35.ams2.redhat.com [10.36.7.35]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s8M5LK7V006797 for ; Mon, 22 Sep 2014 01:21:21 -0400 Message-ID: <541FB1D0.503@redhat.com> Date: Mon, 22 Sep 2014 08:21:20 +0300 From: Marko Myllynen Reply-To: myllynen@redhat.com Organization: Red Hat User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: linux-nfs@vger.kernel.org Subject: [PATCH] nfsstat: add server io stats X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From 15fc547d8deb3d1975d160deacc05a0f5bec0845 Mon Sep 17 00:00:00 2001 From: Marko Myllynen Date: Mon, 22 Sep 2014 08:02:17 +0300 Subject: [PATCH] nfsstat: add server io stats --- 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