[BACK]Return to rf_acctrace.h CVS log [TXT][DIR] Up to [local] / sys / dev / raidframe

Annotation of sys/dev/raidframe/rf_acctrace.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: rf_acctrace.h,v 1.3 2002/12/16 07:01:03 tdeval Exp $  */
                      2: /*     $NetBSD: rf_acctrace.h,v 1.3 1999/02/05 00:06:06 oster Exp $    */
                      3:
                      4: /*
                      5:  * Copyright (c) 1995 Carnegie-Mellon University.
                      6:  * All rights reserved.
                      7:  *
                      8:  * Author: Mark Holland
                      9:  *
                     10:  * Permission to use, copy, modify and distribute this software and
                     11:  * its documentation is hereby granted, provided that both the copyright
                     12:  * notice and this permission notice appear in all copies of the
                     13:  * software, derivative works or modified versions, and any portions
                     14:  * thereof, and that both notices appear in supporting documentation.
                     15:  *
                     16:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     17:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
                     18:  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     19:  *
                     20:  * Carnegie Mellon requests users of this software to return to
                     21:  *
                     22:  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
                     23:  *  School of Computer Science
                     24:  *  Carnegie Mellon University
                     25:  *  Pittsburgh PA 15213-3890
                     26:  *
                     27:  * any improvements or extensions that they make and grant Carnegie the
                     28:  * rights to redistribute these changes.
                     29:  */
                     30:
                     31: /*****************************************************************************
                     32:  *
                     33:  * acctrace.h -- Header file for acctrace.c
                     34:  *
                     35:  *****************************************************************************/
                     36:
                     37:
                     38: #ifndef        _RF__RF_ACCTRACE_H_
                     39: #define        _RF__RF_ACCTRACE_H_
                     40:
                     41: #include "rf_types.h"
                     42: #include "rf_hist.h"
                     43: #include "rf_etimer.h"
                     44:
                     45: typedef struct RF_user_acc_stats_s {
                     46:        RF_uint64       suspend_ovhd_us;/*
                     47:                                         * usec spent mucking in the
                     48:                                         * access-suspension code.
                     49:                                         */
                     50:        RF_uint64       map_us;         /* usec spent mapping the access. */
                     51:        RF_uint64       lock_us;        /*
                     52:                                         * usec spent locking & unlocking
                     53:                                         * stripes, including time spent
                     54:                                         * blocked.
                     55:                                         */
                     56:        RF_uint64       dag_create_us;  /* usec spent creating the DAGs. */
                     57:        RF_uint64       dag_retry_us;   /*
                     58:                                         * _total_ usec spent retrying the op
                     59:                                         * -- not broken down into components.
                     60:                                         */
                     61:        RF_uint64       exec_us;        /* usec spent in DispatchDAG. */
                     62:        RF_uint64       exec_engine_us; /*
                     63:                                         * usec spent in engine, not including
                     64:                                         * blocking time.
                     65:                                         */
                     66:        RF_uint64       cleanup_us;     /*
                     67:                                         * usec spent tearing down the dag &
                     68:                                         * maps, and generally cleaning up.
                     69:                                         */
                     70: } RF_user_acc_stats_t;
                     71:
                     72: typedef struct RF_recon_acc_stats_s {
                     73:        RF_uint32       recon_start_to_fetch_us;
                     74:        RF_uint32       recon_fetch_to_return_us;
                     75:        RF_uint32       recon_return_to_submit_us;
                     76: } RF_recon_acc_stats_t;
                     77:
                     78: typedef struct RF_acctrace_entry_s {
                     79:        union {
                     80:                RF_user_acc_stats_t     user;
                     81:                RF_recon_acc_stats_t    recon;
                     82:        }               specific;
                     83:        RF_uint8        reconacc;       /*
                     84:                                         * Whether this is a tracerec for a
                     85:                                         * user acc or a recon acc.
                     86:                                         */
                     87:        RF_uint64       xor_us;         /* usec spent doing XORs. */
                     88:        RF_uint64       q_us;           /* usec spent doing XORs. */
                     89:        RF_uint64       plog_us;        /*
                     90:                                         * usec spent waiting to stuff parity
                     91:                                         * into log.
                     92:                                         */
                     93:        RF_uint64       diskqueue_us;   /*
                     94:                                         * _total_ usec spent in disk queue(s),
                     95:                                         * incl concurrent ops.
                     96:                                         */
                     97:        RF_uint64       diskwait_us;    /*
                     98:                                         * _total_ usec spent actually waiting
                     99:                                         * on the disk, incl concurrent ops.
                    100:                                         */
                    101:        RF_uint64       total_us;       /* Total usec spent on this access. */
                    102:        RF_uint64       num_phys_ios;   /* Number of physical I/Os invoked. */
                    103:        RF_uint64       phys_io_us;     /* Time of physical I/O. */
                    104:        RF_Etimer_t     tot_timer;      /*
                    105:                                         * A timer used to compute total
                    106:                                         * access time.
                    107:                                         */
                    108:        RF_Etimer_t     timer;          /*
                    109:                                         * A generic timer val for timing
                    110:                                         * events that live across procedure
                    111:                                         * boundaries.
                    112:                                         */
                    113:        RF_Etimer_t     recon_timer;    /* Generic timer for recon stuff. */
                    114:        RF_uint64       index;
                    115: } RF_AccTraceEntry_t;
                    116:
                    117: typedef struct RF_AccTotals_s {
                    118:        /* User acc stats. */
                    119:        RF_uint64       suspend_ovhd_us;
                    120:        RF_uint64       map_us;
                    121:        RF_uint64       lock_us;
                    122:        RF_uint64       dag_create_us;
                    123:        RF_uint64       dag_retry_us;
                    124:        RF_uint64       exec_us;
                    125:        RF_uint64       exec_engine_us;
                    126:        RF_uint64       cleanup_us;
                    127:        RF_uint64       user_reccount;
                    128:        /* Recon acc stats. */
                    129:        RF_uint64       recon_start_to_fetch_us;
                    130:        RF_uint64       recon_fetch_to_return_us;
                    131:        RF_uint64       recon_return_to_submit_us;
                    132:        RF_uint64       recon_io_overflow_count;
                    133:        RF_uint64       recon_phys_io_us;
                    134:        RF_uint64       recon_num_phys_ios;
                    135:        RF_uint64       recon_diskwait_us;
                    136:        RF_uint64       recon_reccount;
                    137:        /* Trace entry stats. */
                    138:        RF_uint64       xor_us;
                    139:        RF_uint64       q_us;
                    140:        RF_uint64       plog_us;
                    141:        RF_uint64       diskqueue_us;
                    142:        RF_uint64       diskwait_us;
                    143:        RF_uint64       total_us;
                    144:        RF_uint64       num_log_ents;
                    145:        RF_uint64       phys_io_overflow_count;
                    146:        RF_uint64       num_phys_ios;
                    147:        RF_uint64       phys_io_us;
                    148:        RF_uint64       bigvals;
                    149:        /* Histograms. */
                    150:        RF_Hist_t       dw_hist[RF_HIST_NUM_BUCKETS];
                    151:        RF_Hist_t       tot_hist[RF_HIST_NUM_BUCKETS];
                    152: } RF_AccTotals_t;
                    153:
                    154: #if    RF_UTILITY == 0
                    155: RF_DECLARE_EXTERN_MUTEX(rf_tracing_mutex);
                    156: #endif /* RF_UTILITY == 0 */
                    157:
                    158: int  rf_ConfigureAccessTrace(RF_ShutdownList_t **);
                    159: void rf_LogTraceRec(RF_Raid_t * raid, RF_AccTraceEntry_t *);
                    160: void rf_FlushAccessTraceBuf(void);
                    161:
                    162: #endif /* !_RF__RF_ACCTRACE_H_ */

CVSweb