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