4 * CODA operation statistics
7 * by Michihiro Kuramochi, Zhenyu Xia and Zhanyong Wan
8 * zhanyong.wan@yale.edu
15 void coda_sysctl_init(void);
16 void coda_sysctl_clean(void);
17 void coda_upcall_stats(int opcode
, unsigned long jiffies
);
19 #include <linux/sysctl.h>
20 #include <linux/coda_fs_i.h>
21 #include <linux/coda.h>
23 /* these four files are presented to show the result of the statistics:
25 * /proc/fs/coda/vfs_stats
30 * these four files are presented to reset the statistics to 0:
32 * /proc/sys/coda/vfs_stats
38 /* VFS operation statistics */
49 /* inode operations */
60 /* symlink operatoins*/
65 struct coda_upcall_stats_entry
68 unsigned long time_sum
;
69 unsigned long time_squared_sum
;
74 /* cache hits for permissions statistics */
75 struct coda_permission_stats
81 /* cache invalidation statistics */
82 struct coda_cache_inv_stats
93 /* these global variables hold the actual statistics data */
94 extern struct coda_vfs_stats coda_vfs_stat
;
95 extern struct coda_permission_stats coda_permission_stat
;
96 extern struct coda_cache_inv_stats coda_cache_inv_stat
;
97 extern int coda_upcall_timestamping
;
99 /* reset statistics to 0 */
100 void reset_coda_vfs_stats( void );
101 void reset_coda_upcall_stats( void );
102 void reset_coda_permission_stats( void );
103 void reset_coda_cache_inv_stats( void );
105 /* some utitlities to make it easier for you to do statistics for time */
106 void do_time_stats( struct coda_upcall_stats_entry
* pentry
,
107 unsigned long jiffy
);
109 double get_time_average( const struct coda_upcall_stats_entry * pentry );
110 double get_time_std_deviation( const struct coda_upcall_stats_entry * pentry );
112 unsigned long get_time_average( const struct coda_upcall_stats_entry
* pentry
);
113 unsigned long get_time_std_deviation( const struct coda_upcall_stats_entry
* pentry
);
115 /* like coda_dointvec, these functions are to be registered in the ctl_table
116 * data structure for /proc/sys/... files
118 int do_reset_coda_vfs_stats( ctl_table
* table
, int write
, struct file
* filp
,
119 void * buffer
, size_t * lenp
);
120 int do_reset_coda_upcall_stats( ctl_table
* table
, int write
,
121 struct file
* filp
, void * buffer
,
123 int do_reset_coda_permission_stats( ctl_table
* table
, int write
,
124 struct file
* filp
, void * buffer
,
126 int do_reset_coda_cache_inv_stats( ctl_table
* table
, int write
,
127 struct file
* filp
, void * buffer
,
130 /* these functions are called to form the content of /proc/fs/coda/... files */
131 int coda_vfs_stats_get_info( char * buffer
, char ** start
, off_t offset
,
133 int coda_upcall_stats_get_info( char * buffer
, char ** start
, off_t offset
,
135 int coda_permission_stats_get_info( char * buffer
, char ** start
, off_t offset
,
137 int coda_cache_inv_stats_get_info( char * buffer
, char ** start
, off_t offset
,
141 #endif /* _CODA_PROC_H */