[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     ! 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