X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flprocfs_status.h;h=5c7ddb2998858ee7f71a49e2986cda352c9d26df;hp=2336a2479d9e517087e8a06569d25124821bfdf9;hb=8a84c7f9c7d65f6f880be6fe4d94fca26a405d81;hpb=588f17c88a415e19394d793be32f6a695449519f diff --git a/lustre/include/lprocfs_status.h b/lustre/include/lprocfs_status.h index 2336a24..5c7ddb2 100644 --- a/lustre/include/lprocfs_status.h +++ b/lustre/include/lprocfs_status.h @@ -103,28 +103,6 @@ struct obd_histogram { }; enum { - BRW_R_PAGES = 0, - BRW_W_PAGES, - BRW_R_RPC_HIST, - BRW_W_RPC_HIST, - BRW_R_IO_TIME, - BRW_W_IO_TIME, - BRW_R_DISCONT_PAGES, - BRW_W_DISCONT_PAGES, - BRW_R_DISCONT_BLOCKS, - BRW_W_DISCONT_BLOCKS, - BRW_R_DISK_IOSIZE, - BRW_W_DISK_IOSIZE, - BRW_R_DIO_FRAGS, - BRW_W_DIO_FRAGS, - BRW_LAST, -}; - -struct brw_stats { - struct obd_histogram hist[BRW_LAST]; -}; - -enum { RENAME_SAMEDIR_SIZE = 0, RENAME_CROSSDIR_SRC_SIZE, RENAME_CROSSDIR_TGT_SIZE, @@ -132,7 +110,8 @@ enum { }; struct rename_stats { - struct obd_histogram hist[RENAME_LAST]; + ktime_t rs_init; + struct obd_histogram rs_hist[RENAME_LAST]; }; /* An lprocfs counter can be configured using the enum bit masks below. @@ -230,6 +209,7 @@ struct lprocfs_stats { /* 1 + the biggest cpu # whose ls_percpu slot has been allocated */ unsigned short ls_biggest_alloc_num; enum lprocfs_stats_flags ls_flags; + ktime_t ls_init; /* Lock used when there are no percpu stats areas; For percpu stats, * it is used to protect ls_biggest_alloc_num change */ spinlock_t ls_lock; @@ -405,6 +385,42 @@ enum lprocfs_extra_opc { EXTRA_LAST_OPC }; +#ifdef HAVE_SERVER_SUPPORT +enum brw_rw_stats { + BRW_R_PAGES = 0, + BRW_W_PAGES, + BRW_R_DISCONT_PAGES, + BRW_W_DISCONT_PAGES, + BRW_R_DISCONT_BLOCKS, + BRW_W_DISCONT_BLOCKS, + BRW_R_DIO_FRAGS, + BRW_W_DIO_FRAGS, + BRW_R_RPC_HIST, + BRW_W_RPC_HIST, + BRW_R_IO_TIME, + BRW_W_IO_TIME, + BRW_R_DISK_IOSIZE, + BRW_W_DISK_IOSIZE, + BRW_RW_STATS_NUM, +}; + +struct brw_stats_props { + const char *bsp_name; + const char *bsp_units; + bool bsp_scale; +}; + +struct brw_stats { + ktime_t bs_init; + struct obd_histogram bs_hist[BRW_RW_STATS_NUM]; + struct brw_stats_props bs_props[BRW_RW_STATS_NUM / 2]; +}; + +void ldebugfs_register_osd_stats(struct dentry *parent, + struct brw_stats *brw_stats, + struct lprocfs_stats *stats); +#endif /* HAVE_SERVER_SUPPORT */ + #define EXTRA_FIRST_OPC LDLM_GLIMPSE_ENQUEUE /* class_obd.c */ extern struct proc_dir_entry *proc_lustre_root; @@ -412,7 +428,6 @@ extern struct dentry *debugfs_lustre_root; extern struct kset *lustre_kset; struct obd_device; -struct obd_histogram; #define JOBSTATS_JOBID_VAR_MAX_LEN 20 #define JOBSTATS_DISABLE "disable" @@ -427,8 +442,8 @@ struct obd_job_stats { struct cfs_hash *ojs_hash; /* hash of jobids */ struct list_head ojs_list; /* list of job_stat structs */ rwlock_t ojs_lock; /* protect ojs_list/js_list */ - unsigned int ojs_cleanup_interval;/* seconds before expiry */ - time64_t ojs_last_cleanup; /* previous cleanup time */ + ktime_t ojs_cleanup_interval;/* 1/2 expiry seconds */ + ktime_t ojs_cleanup_last;/* previous cleanup time */ cntr_init_callback ojs_cntr_init_fn;/* lprocfs_stats initializer */ unsigned short ojs_cntr_num; /* number of stats in struct */ bool ojs_cleaning; /* currently expiring stats */ @@ -570,6 +585,9 @@ extern int lprocfs_seq_create(struct proc_dir_entry *parent, const char *name, extern int lprocfs_obd_seq_create(struct obd_device *obd, const char *name, mode_t mode, const struct proc_ops *seq_fops, void *data); +extern void lprocfs_stats_header(struct seq_file *seq, ktime_t now, + ktime_t ts_init, int width, const char *colon, + bool show_units); /* Generic callbacks */ extern int lprocfs_uuid_seq_show(struct seq_file *m, void *data);