OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [sunrpc/] [metrics.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 *  linux/include/linux/sunrpc/metrics.h
3
 *
4
 *  Declarations for RPC client per-operation metrics
5
 *
6
 *  Copyright (C) 2005  Chuck Lever <cel@netapp.com>
7
 *
8
 *  RPC client per-operation statistics provide latency and retry
9
 *  information about each type of RPC procedure in a given RPC program.
10
 *  These statistics are not for detailed problem diagnosis, but simply
11
 *  to indicate whether the problem is local or remote.
12
 *
13
 *  These counters are not meant to be human-readable, but are meant to be
14
 *  integrated into system monitoring tools such as "sar" and "iostat".  As
15
 *  such, the counters are sampled by the tools over time, and are never
16
 *  zeroed after a file system is mounted.  Moving averages can be computed
17
 *  by the tools by taking the difference between two instantaneous samples
18
 *  and dividing that by the time between the samples.
19
 *
20
 *  The counters are maintained in a single array per RPC client, indexed
21
 *  by procedure number.  There is no need to maintain separate counter
22
 *  arrays per-CPU because these counters are always modified behind locks.
23
 */
24
 
25
#ifndef _LINUX_SUNRPC_METRICS_H
26
#define _LINUX_SUNRPC_METRICS_H
27
 
28
#include <linux/seq_file.h>
29
 
30
#define RPC_IOSTATS_VERS        "1.0"
31
 
32
struct rpc_iostats {
33
        /*
34
         * These counters give an idea about how many request
35
         * transmissions are required, on average, to complete that
36
         * particular procedure.  Some procedures may require more
37
         * than one transmission because the server is unresponsive,
38
         * the client is retransmitting too aggressively, or the
39
         * requests are large and the network is congested.
40
         */
41
        unsigned long           om_ops,         /* count of operations */
42
                                om_ntrans,      /* count of RPC transmissions */
43
                                om_timeouts;    /* count of major timeouts */
44
 
45
        /*
46
         * These count how many bytes are sent and received for a
47
         * given RPC procedure type.  This indicates how much load a
48
         * particular procedure is putting on the network.  These
49
         * counts include the RPC and ULP headers, and the request
50
         * payload.
51
         */
52
        unsigned long long      om_bytes_sent,  /* count of bytes out */
53
                                om_bytes_recv;  /* count of bytes in */
54
 
55
        /*
56
         * The length of time an RPC request waits in queue before
57
         * transmission, the network + server latency of the request,
58
         * and the total time the request spent from init to release
59
         * are measured.
60
         */
61
        unsigned long long      om_queue,       /* jiffies queued for xmit */
62
                                om_rtt,         /* jiffies for RPC RTT */
63
                                om_execute;     /* jiffies for RPC execution */
64
} ____cacheline_aligned;
65
 
66
struct rpc_task;
67
struct rpc_clnt;
68
 
69
/*
70
 * EXPORTed functions for managing rpc_iostats structures
71
 */
72
 
73
#ifdef CONFIG_PROC_FS
74
 
75
struct rpc_iostats *    rpc_alloc_iostats(struct rpc_clnt *);
76
void                    rpc_count_iostats(struct rpc_task *);
77
void                    rpc_print_iostats(struct seq_file *, struct rpc_clnt *);
78
void                    rpc_free_iostats(struct rpc_iostats *);
79
 
80
#else  /*  CONFIG_PROC_FS  */
81
 
82
static inline struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) { return NULL; }
83
static inline void rpc_count_iostats(struct rpc_task *task) {}
84
static inline void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) {}
85
static inline void rpc_free_iostats(struct rpc_iostats *stats) {}
86
 
87
#endif  /*  CONFIG_PROC_FS  */
88
 
89
#endif /* _LINUX_SUNRPC_METRICS_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.