20 #ifndef __XrdThrottleManager_hh_ 21 #define __XrdThrottleManager_hh_ 24 #define likely(x) __builtin_expect(!!(x), 1) 25 #define unlikely(x) __builtin_expect(!!(x), 0) 50 void Apply(
int reqsize,
int reqops,
int uid);
54 void SetThrottles(
float reqbyterate,
float reqoprate,
int concurrency,
float interval_length)
58 void SetLoadShed(std::string &hostname,
unsigned port,
unsigned frequency)
64 int GetUid(
const char *username);
68 void PrepLoadShed(
const char *opaque, std::string &lsOpaque);
72 void PerformLoadShed(
const std::string &opaque, std::string &host,
unsigned &port);
93 void GetShares(
int &shares,
int &request);
95 void StealShares(
int uid,
int &reqsize,
int &reqops);
143 struct timespec end_timer = {0, 0};
144 #if defined(__linux__) || defined(__GNU__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) 145 int retval = clock_gettime(
clock_id, &end_timer);
151 end_timer.tv_sec -=
m_timer.tv_sec;
152 end_timer.tv_nsec -=
m_timer.tv_nsec;
153 if (end_timer.tv_nsec < 0)
156 end_timer.tv_nsec += 1000000000;
180 #if defined(__linux__) || defined(__GNU__) || (defined(__FreeBSD_kernel__) && defined(__GLIBC__)) ~XrdThrottleManager()
Definition: XrdThrottleManager.hh:76
static int clock_id
Definition: XrdThrottleManager.hh:196
void PerformLoadShed(const std::string &opaque, std::string &host, unsigned &port)
Definition: XrdThrottleManager.hh:41
static const int m_max_users
Definition: XrdThrottleManager.hh:110
void PrepLoadShed(const char *opaque, std::string &lsOpaque)
bool CheckLoadShed(const std::string &opaque)
static void * RecomputeBootstrap(void *pp)
float m_ops_per_second
Definition: XrdThrottleManager.hh:105
XrdThrottleManager(XrdSysError *lP, XrdOucTrace *tP)
float m_interval_length_seconds
Definition: XrdThrottleManager.hh:103
void StopTimer()
Definition: XrdThrottleManager.hh:141
std::vector< int > m_secondary_bytes_shares
Definition: XrdThrottleManager.hh:112
Definition: XrdOucTrace.hh:35
Definition: XrdSysError.hh:89
void SetLoadShed(std::string &hostname, unsigned port, unsigned frequency)
Definition: XrdThrottleManager.hh:58
XrdThrottleTimer(XrdThrottleManager &manager)
Definition: XrdThrottleManager.hh:177
Definition: XrdThrottleManager.hh:134
static int GetUid(const char *username)
void GetShares(int &shares, int &request)
XrdThrottleManager & m_manager
Definition: XrdThrottleManager.hh:193
XrdOucTrace * m_trace
Definition: XrdThrottleManager.hh:97
struct timespec m_stable_io_wait
Definition: XrdThrottleManager.hh:122
XrdSysCondVar m_compute_var
Definition: XrdThrottleManager.hh:100
Definition: XrdSysPthread.hh:78
std::vector< int > m_primary_bytes_shares
Definition: XrdThrottleManager.hh:111
bool IsThrottling()
Definition: XrdThrottleManager.hh:52
struct timespec m_timer
Definition: XrdThrottleManager.hh:194
std::string m_loadshed_host
Definition: XrdThrottleManager.hh:125
struct timespec m_io_wait
Definition: XrdThrottleManager.hh:119
unsigned m_loadshed_port
Definition: XrdThrottleManager.hh:126
void SetThrottles(float reqbyterate, float reqoprate, int concurrency, float interval_length)
Definition: XrdThrottleManager.hh:54
std::vector< int > m_primary_ops_shares
Definition: XrdThrottleManager.hh:113
void StealShares(int uid, int &reqsize, int &reqops)
~XrdThrottleTimer()
Definition: XrdThrottleManager.hh:167
int m_last_round_allocation
Definition: XrdThrottleManager.hh:115
int m_concurrency_limit
Definition: XrdThrottleManager.hh:106
unsigned m_loadshed_frequency
Definition: XrdThrottleManager.hh:127
int m_loadshed_limit_hit
Definition: XrdThrottleManager.hh:128
float m_bytes_per_second
Definition: XrdThrottleManager.hh:104
int m_io_counter
Definition: XrdThrottleManager.hh:118
#define likely(x)
Definition: XrdThrottleManager.hh:27
#define unlikely(x)
Definition: XrdThrottleManager.hh:28
int m_stable_io_counter
Definition: XrdThrottleManager.hh:121
std::vector< int > m_secondary_ops_shares
Definition: XrdThrottleManager.hh:114
static const char * TraceID
Definition: XrdThrottleManager.hh:130
void Apply(int reqsize, int reqops, int uid)
XrdSysError * m_log
Definition: XrdThrottleManager.hh:98
void StopIOTimer(struct timespec)
XrdThrottleTimer StartIOTimer()