00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef _P_CLUSTER_H__
00025 #define _P_CLUSTER_H__
00026 
00027 #include "libts.h"
00028 #include "P_EventSystem.h"
00029 #include "I_RecProcess.h"
00030 #include "P_Net.h"
00031 #include "P_Cache.h"
00032 
00033 #ifdef HTTP_CACHE
00034 #include "MIME.h"
00035 #include "HTTP.h"
00036 
00037 #endif
00038 
00039 #include "P_ClusterMachine.h"
00040 #include "P_ClusterCache.h"
00041 #include "P_ClusterCacheInternal.h"
00042 #include "P_ClusterInternal.h"
00043 #include "P_ClusterHandler.h"
00044 #include "P_ClusterInline.h"
00045 #include "P_ClusterLib.h"
00046 #include "P_ClusterLoadMonitor.h"
00047 #include "P_TimeTrace.h"
00048 
00049 
00050 #define ECLUSTER_NO_VC                    (CLUSTER_ERRNO+0)
00051 #define ECLUSTER_NO_MACHINE               (CLUSTER_ERRNO+1)
00052 #define ECLUSTER_OP_TIMEOUT               (CLUSTER_ERRNO+2)
00053 #define ECLUSTER_ORB_DATA_READ            (CLUSTER_ERRNO+3)
00054 #define ECLUSTER_ORB_EIO                  (CLUSTER_ERRNO+4)
00055 #define ECLUSTER_CHANNEL_INUSE            (CLUSTER_ERRNO+5)
00056 #define ECLUSTER_NOMORE_CHANNELS          (CLUSTER_ERRNO+6)
00057 
00058 int init_clusterprocessor(void);
00059 enum
00060 {
00061   CLUSTER_CONNECTIONS_OPEN_STAT,
00062   CLUSTER_CONNECTIONS_OPENNED_STAT,
00063   CLUSTER_CON_TOTAL_TIME_STAT,
00064   CLUSTER_CTRL_MSGS_SENT_STAT,
00065   CLUSTER_SLOW_CTRL_MSGS_SENT_STAT,
00066   CLUSTER_CTRL_MSGS_RECVD_STAT,
00067   CLUSTER_SLOW_CTRL_MSGS_RECVD_STAT,
00068   CLUSTER_CTRL_MSGS_SEND_TIME_STAT,
00069   CLUSTER_CTRL_MSGS_RECV_TIME_STAT,
00070   CLUSTER_READ_BYTES_STAT,
00071   CLUSTER_WRITE_BYTES_STAT,
00072   CLUSTER_OP_DELAYED_FOR_LOCK_STAT,
00073   CLUSTER_CONNECTIONS_READ_LOCKED_STAT,
00074   CLUSTER_CONNECTIONS_WRITE_LOCKED_STAT,
00075   CLUSTER_CONNECTIONS_BUMPED_STAT,
00076   CLUSTER_NODES_STAT,
00077   CLUSTER_NET_BACKUP_STAT,
00078   CLUSTER_MACHINES_ALLOCATED_STAT,
00079   CLUSTER_MACHINES_FREED_STAT,
00080   CLUSTER_CONFIGURATION_CHANGES_STAT,
00081   CLUSTER_DELAYED_READS_STAT,
00082   CLUSTER_BYTE_BANK_USED_STAT,
00083   CLUSTER_ALLOC_DATA_NEWS_STAT,
00084   CLUSTER_WRITE_BB_MALLOCS_STAT,
00085   CLUSTER_PARTIAL_READS_STAT,
00086   CLUSTER_PARTIAL_WRITES_STAT,
00087   CLUSTER_CACHE_OUTSTANDING_STAT,
00088   CLUSTER_REMOTE_OP_TIMEOUTS_STAT,
00089   CLUSTER_REMOTE_OP_REPLY_TIMEOUTS_STAT,
00090   CLUSTER_CHAN_INUSE_STAT,
00091   CLUSTER_OPEN_DELAYS_STAT,
00092   CLUSTER_OPEN_DELAY_TIME_STAT,
00093   CLUSTER_CACHE_CALLBACKS_STAT,
00094   CLUSTER_CACHE_CALLBACK_TIME_STAT,
00095   CLUSTER_THREAD_STEAL_EXPIRES_STAT,
00096   CLUSTER_RDMSG_ASSEMBLE_TIME_STAT,
00097   CLUSTER_PING_TIME_STAT,
00098   cluster_setdata_no_CLUSTERVC_STAT,
00099   CLUSTER_SETDATA_NO_TUNNEL_STAT,
00100   CLUSTER_SETDATA_NO_CACHEVC_STAT,
00101   cluster_setdata_no_CLUSTER_STAT,
00102   CLUSTER_VC_WRITE_STALL_STAT,
00103   CLUSTER_NO_REMOTE_SPACE_STAT,
00104   CLUSTER_LEVEL1_BANK_STAT,
00105   CLUSTER_MULTILEVEL_BANK_STAT,
00106   CLUSTER_VC_CACHE_INSERT_LOCK_MISSES_STAT,
00107   CLUSTER_VC_CACHE_INSERTS_STAT,
00108   CLUSTER_VC_CACHE_LOOKUP_LOCK_MISSES_STAT,
00109   CLUSTER_VC_CACHE_LOOKUP_HITS_STAT,
00110   CLUSTER_VC_CACHE_LOOKUP_MISSES_STAT,
00111   CLUSTER_VC_CACHE_SCANS_STAT,
00112   CLUSTER_VC_CACHE_SCAN_LOCK_MISSES_STAT,
00113   CLUSTER_VC_CACHE_PURGES_STAT,
00114   CLUSTER_WRITE_LOCK_MISSES_STAT,
00115   CLUSTER_CACHE_RMT_CALLBACK_TIME_STAT,
00116   CLUSTER_CACHE_LKRMT_CALLBACK_TIME_STAT,
00117   CLUSTER_LOCAL_CONNECTION_TIME_STAT,
00118   CLUSTER_REMOTE_CONNECTION_TIME_STAT,
00119   CLUSTER_SETDATA_NO_CLUSTERVC_STAT,
00120   CLUSTER_SETDATA_NO_CLUSTER_STAT,
00121   CLUSTER_VC_READ_LIST_LEN_STAT,
00122   CLUSTER_VC_WRITE_LIST_LEN_STAT,
00123   cluster_stat_count
00124 };
00125 
00126 extern RecRawStatBlock *cluster_rsb;
00127 #define CLUSTER_INCREMENT_DYN_STAT(x) \
00128         RecIncrRawStat(cluster_rsb, mutex->thread_holding, (int) x, 1);
00129 #define CLUSTER_DECREMENT_DYN_STAT(x) \
00130         RecIncrRawStat(cluster_rsb, mutex->thread_holding, (int) x, -1);
00131 #define CLUSTER_SUM_DYN_STAT(x, y) \
00132         RecIncrRawStat(cluster_rsb, mutex->thread_holding, (int) x, y);
00133 #define CLUSTER_SUM_GLOBAL_DYN_STAT(x, y) \
00134         RecIncrGlobalRawStatSum(cluster_rsb,x,y)
00135 #define CLUSTER_CLEAR_DYN_STAT(x) \
00136 do { \
00137         RecSetRawStatSum(cluster_rsb, x, 0); \
00138         RecSetRawStatCount(cluster_rsb, x, 0); \
00139 } while (0);
00140 
00141 
00142 #endif