50 #define DIM_LO (DIM_HI >> DIM_SHFT) 51 #define DIM_RAP (DIM_HI / DIM_LO) 67 #define THROTTLE_LOCK() \ 68 if (pthread_mutex_lock(&hdata.mutex) != 0) { \ 69 ZE_LogSysError("pthread_mutex_lock"); \ 72 #define THROTTLE_UNLOCK() \ 73 if (pthread_mutex_unlock(&hdata.mutex) != 0) { \ 74 ZE_LogSysError("pthread_mutex_unlock"); \ 104 memset(hdata.
sec, 0, sizeof (hdata.
sec));
105 memset(hdata.
min, 0, sizeof (hdata.
min));
137 return throttle_init();
183 static time_t st_last = 0;
199 memset(hdata.
min, 0, sizeof (hdata.
min));
203 for (ti = t0; ti < t + 1; ti++) {
216 for (i = 0; i <
DIM_HI; i++)
219 for (i = 0; i <
DIM_LO; i++)
223 "THROTTLE : short=[%7.3f/%7.3f] long=[%7.3f/%7.3f] (mean/std dev)",
236 static bool dos_current =
FALSE;
248 #define HOLD_TIME 120 250 static time_t dos_start_time = 0;
251 static time_t dos_last_log = 0;
260 double last_mean = (double) hdata.
min[
DIM_LO - 1].
nb;
267 for (i = 0; i < (
DIM_LO - 1); i++)
272 gmean = mean =
zeKMean(&stats);
283 if (last_mean > gmean +
DOS_COEF * sqrt(gmean)) {
284 time_t now = time(NULL);
287 dos_start_time = now;
289 if ((dos_last_log == (time_t) 0) && (dos_last_log +
HOLD_TIME < now)) {
291 mean, stddev, last_mean);
297 if (dos_last_log != (time_t) 0) {
299 dos_last_log = (time_t) 0;
301 dos_start_time = (time_t) 0;
315 double mean =
zeKMean(&st_min);
318 double last_mean = (double) hdata.
min[
DIM_LO - 1].
nb;
321 ZE_MessageInfo(9,
"THROTTLE STAT : %7.3f %7.3f %7.3f", mean, stddev,
337 sum = tmp = exp(-lambda);
344 printf(
" i : %3d - sum : %7.5f\n", i, sum);
void add_throttle_entry(time_t)
void zeKStatsReset(kstats_T *)
void update_throttle(time_t)
#define THROTTLE_UNLOCK()
void zeKStatsUpdate(kstats_T *, double)
#define ZE_MessageInfo(level,...)
void log_throttle_stats()
bool check_throttle_dos()
int throttle_resize(size_t sza, size_t szb)
double poisson_upper_bound(double, double)
double zeKMean(kstats_T *s)
double zeKStdDev(kstats_T *s)
bool update_throttle_dos()