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)
72 void PerformLoadShed(
const std::string &opaque, std::string &host,
unsigned &port);
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__))
#define likely(x)
Definition: XrdThrottleManager.hh:27
#define unlikely(x)
Definition: XrdThrottleManager.hh:28
Definition: XrdOucTrace.hh:36
Definition: XrdSysPthread.hh:79
Definition: XrdSysError.hh:90
Definition: XrdThrottleManager.hh:42
std::vector< int > m_secondary_ops_shares
Definition: XrdThrottleManager.hh:114
~XrdThrottleManager()
Definition: XrdThrottleManager.hh:76
unsigned m_loadshed_frequency
Definition: XrdThrottleManager.hh:127
void SetThrottles(float reqbyterate, float reqoprate, int concurrency, float interval_length)
Definition: XrdThrottleManager.hh:54
bool IsThrottling()
Definition: XrdThrottleManager.hh:52
XrdSysError * m_log
Definition: XrdThrottleManager.hh:98
int m_last_round_allocation
Definition: XrdThrottleManager.hh:115
void Apply(int reqsize, int reqops, int uid)
float m_ops_per_second
Definition: XrdThrottleManager.hh:105
void StopIOTimer(struct timespec)
void StealShares(int uid, int &reqsize, int &reqops)
std::vector< int > m_secondary_bytes_shares
Definition: XrdThrottleManager.hh:112
XrdOucTrace * m_trace
Definition: XrdThrottleManager.hh:97
std::vector< int > m_primary_ops_shares
Definition: XrdThrottleManager.hh:113
void SetLoadShed(std::string &hostname, unsigned port, unsigned frequency)
Definition: XrdThrottleManager.hh:58
XrdSysCondVar m_compute_var
Definition: XrdThrottleManager.hh:100
void PrepLoadShed(const char *opaque, std::string &lsOpaque)
bool CheckLoadShed(const std::string &opaque)
struct timespec m_io_wait
Definition: XrdThrottleManager.hh:119
int m_loadshed_limit_hit
Definition: XrdThrottleManager.hh:128
void GetShares(int &shares, int &request)
int m_io_counter
Definition: XrdThrottleManager.hh:118
XrdThrottleTimer StartIOTimer()
unsigned m_loadshed_port
Definition: XrdThrottleManager.hh:126
int m_concurrency_limit
Definition: XrdThrottleManager.hh:106
float m_interval_length_seconds
Definition: XrdThrottleManager.hh:103
XrdThrottleManager(XrdSysError *lP, XrdOucTrace *tP)
static const char * TraceID
Definition: XrdThrottleManager.hh:130
void PerformLoadShed(const std::string &opaque, std::string &host, unsigned &port)
float m_bytes_per_second
Definition: XrdThrottleManager.hh:104
struct timespec m_stable_io_wait
Definition: XrdThrottleManager.hh:122
std::vector< int > m_primary_bytes_shares
Definition: XrdThrottleManager.hh:111
int m_stable_io_counter
Definition: XrdThrottleManager.hh:121
static void * RecomputeBootstrap(void *pp)
static int GetUid(const char *username)
std::string m_loadshed_host
Definition: XrdThrottleManager.hh:125
static const int m_max_users
Definition: XrdThrottleManager.hh:110
Definition: XrdThrottleManager.hh:135
static int clock_id
Definition: XrdThrottleManager.hh:196
XrdThrottleTimer(XrdThrottleManager &manager)
Definition: XrdThrottleManager.hh:177
XrdThrottleManager & m_manager
Definition: XrdThrottleManager.hh:193
void StopTimer()
Definition: XrdThrottleManager.hh:141
~XrdThrottleTimer()
Definition: XrdThrottleManager.hh:167
struct timespec m_timer
Definition: XrdThrottleManager.hh:194