xrootd
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
XrdThrottleManager Class Reference

#include <XrdThrottleManager.hh>

Collaboration diagram for XrdThrottleManager:
Collaboration graph
[legend]

Public Member Functions

void Init ()
 
bool OpenFile (const std::string &entity, std::string &open_error_message)
 
bool CloseFile (const std::string &entity)
 
void Apply (int reqsize, int reqops, int uid)
 
bool IsThrottling ()
 
void SetThrottles (float reqbyterate, float reqoprate, int concurrency, float interval_length)
 
void SetLoadShed (std::string &hostname, unsigned port, unsigned frequency)
 
void SetMaxOpen (unsigned long max_open)
 
void SetMaxConns (unsigned long max_conns)
 
XrdThrottleTimer StartIOTimer ()
 
void PrepLoadShed (const char *opaque, std::string &lsOpaque)
 
bool CheckLoadShed (const std::string &opaque)
 
void PerformLoadShed (const std::string &opaque, std::string &host, unsigned &port)
 
 XrdThrottleManager (XrdSysError *lP, XrdOucTrace *tP)
 
 ~XrdThrottleManager ()
 

Static Public Member Functions

static int GetUid (const char *username)
 

Protected Member Functions

void StopIOTimer (struct timespec)
 

Private Member Functions

void Recompute ()
 
void RecomputeInternal ()
 
int WaitForShares ()
 
void GetShares (int &shares, int &request)
 
void StealShares (int uid, int &reqsize, int &reqops)
 

Static Private Member Functions

static void * RecomputeBootstrap (void *pp)
 

Private Attributes

XrdOucTracem_trace
 
XrdSysErrorm_log
 
XrdSysCondVar m_compute_var
 
float m_interval_length_seconds
 
float m_bytes_per_second
 
float m_ops_per_second
 
int m_concurrency_limit
 
std::vector< int > m_primary_bytes_shares
 
std::vector< int > m_secondary_bytes_shares
 
std::vector< int > m_primary_ops_shares
 
std::vector< int > m_secondary_ops_shares
 
int m_last_round_allocation
 
int m_io_counter
 
struct timespec m_io_wait
 
int m_stable_io_counter
 
struct timespec m_stable_io_wait
 
std::string m_loadshed_host
 
unsigned m_loadshed_port
 
unsigned m_loadshed_frequency
 
int m_loadshed_limit_hit
 
unsigned long m_max_open {0}
 
unsigned long m_max_conns {0}
 
std::unordered_map< std::string, unsigned long > m_file_counters
 
std::unordered_map< std::string, unsigned long > m_conn_counters
 
std::unordered_map< std::string, std::unique_ptr< std::unordered_map< pid_t, unsigned long > > > m_active_conns
 
std::mutex m_file_mutex
 

Static Private Attributes

static const int m_max_users
 
static const char * TraceID
 

Friends

class XrdThrottleTimer
 

Constructor & Destructor Documentation

◆ XrdThrottleManager()

XrdThrottleManager::XrdThrottleManager ( XrdSysError lP,
XrdOucTrace tP 
)

◆ ~XrdThrottleManager()

XrdThrottleManager::~XrdThrottleManager ( )
inline

Member Function Documentation

◆ Apply()

void XrdThrottleManager::Apply ( int  reqsize,
int  reqops,
int  uid 
)

◆ CheckLoadShed()

bool XrdThrottleManager::CheckLoadShed ( const std::string &  opaque)

◆ CloseFile()

bool XrdThrottleManager::CloseFile ( const std::string &  entity)

◆ GetShares()

void XrdThrottleManager::GetShares ( int &  shares,
int &  request 
)
private

◆ GetUid()

static int XrdThrottleManager::GetUid ( const char *  username)
static

◆ Init()

void XrdThrottleManager::Init ( )

◆ IsThrottling()

bool XrdThrottleManager::IsThrottling ( )
inline

◆ OpenFile()

bool XrdThrottleManager::OpenFile ( const std::string &  entity,
std::string &  open_error_message 
)

◆ PerformLoadShed()

void XrdThrottleManager::PerformLoadShed ( const std::string &  opaque,
std::string &  host,
unsigned &  port 
)

◆ PrepLoadShed()

void XrdThrottleManager::PrepLoadShed ( const char *  opaque,
std::string &  lsOpaque 
)

◆ Recompute()

void XrdThrottleManager::Recompute ( )
private

◆ RecomputeBootstrap()

static void * XrdThrottleManager::RecomputeBootstrap ( void *  pp)
staticprivate

◆ RecomputeInternal()

void XrdThrottleManager::RecomputeInternal ( )
private

◆ SetLoadShed()

void XrdThrottleManager::SetLoadShed ( std::string &  hostname,
unsigned  port,
unsigned  frequency 
)
inline

◆ SetMaxConns()

void XrdThrottleManager::SetMaxConns ( unsigned long  max_conns)
inline

References m_max_conns.

◆ SetMaxOpen()

void XrdThrottleManager::SetMaxOpen ( unsigned long  max_open)
inline

References m_max_open.

◆ SetThrottles()

void XrdThrottleManager::SetThrottles ( float  reqbyterate,
float  reqoprate,
int  concurrency,
float  interval_length 
)
inline

◆ StartIOTimer()

XrdThrottleTimer XrdThrottleManager::StartIOTimer ( )

◆ StealShares()

void XrdThrottleManager::StealShares ( int  uid,
int &  reqsize,
int &  reqops 
)
private

◆ StopIOTimer()

void XrdThrottleManager::StopIOTimer ( struct timespec  )
protected

◆ WaitForShares()

int XrdThrottleManager::WaitForShares ( )
private

Friends And Related Symbol Documentation

◆ XrdThrottleTimer

friend class XrdThrottleTimer
friend

Member Data Documentation

◆ m_active_conns

std::unordered_map<std::string, std::unique_ptr<std::unordered_map<pid_t, unsigned long> > > XrdThrottleManager::m_active_conns
private

◆ m_bytes_per_second

float XrdThrottleManager::m_bytes_per_second
private

Referenced by IsThrottling(), and SetThrottles().

◆ m_compute_var

XrdSysCondVar XrdThrottleManager::m_compute_var
private

◆ m_concurrency_limit

int XrdThrottleManager::m_concurrency_limit
private

Referenced by SetThrottles().

◆ m_conn_counters

std::unordered_map<std::string, unsigned long> XrdThrottleManager::m_conn_counters
private

◆ m_file_counters

std::unordered_map<std::string, unsigned long> XrdThrottleManager::m_file_counters
private

◆ m_file_mutex

std::mutex XrdThrottleManager::m_file_mutex
private

◆ m_interval_length_seconds

float XrdThrottleManager::m_interval_length_seconds
private

Referenced by SetThrottles().

◆ m_io_counter

int XrdThrottleManager::m_io_counter
private

◆ m_io_wait

struct timespec XrdThrottleManager::m_io_wait
private

◆ m_last_round_allocation

int XrdThrottleManager::m_last_round_allocation
private

◆ m_loadshed_frequency

unsigned XrdThrottleManager::m_loadshed_frequency
private

Referenced by SetLoadShed().

◆ m_loadshed_host

std::string XrdThrottleManager::m_loadshed_host
private

Referenced by SetLoadShed().

◆ m_loadshed_limit_hit

int XrdThrottleManager::m_loadshed_limit_hit
private

◆ m_loadshed_port

unsigned XrdThrottleManager::m_loadshed_port
private

Referenced by SetLoadShed().

◆ m_log

XrdSysError* XrdThrottleManager::m_log
private

◆ m_max_conns

unsigned long XrdThrottleManager::m_max_conns {0}
private

Referenced by SetMaxConns().

◆ m_max_open

unsigned long XrdThrottleManager::m_max_open {0}
private

Referenced by SetMaxOpen().

◆ m_max_users

const int XrdThrottleManager::m_max_users
staticprivate

◆ m_ops_per_second

float XrdThrottleManager::m_ops_per_second
private

Referenced by IsThrottling(), and SetThrottles().

◆ m_primary_bytes_shares

std::vector<int> XrdThrottleManager::m_primary_bytes_shares
private

◆ m_primary_ops_shares

std::vector<int> XrdThrottleManager::m_primary_ops_shares
private

◆ m_secondary_bytes_shares

std::vector<int> XrdThrottleManager::m_secondary_bytes_shares
private

◆ m_secondary_ops_shares

std::vector<int> XrdThrottleManager::m_secondary_ops_shares
private

◆ m_stable_io_counter

int XrdThrottleManager::m_stable_io_counter
private

◆ m_stable_io_wait

struct timespec XrdThrottleManager::m_stable_io_wait
private

◆ m_trace

XrdOucTrace* XrdThrottleManager::m_trace
private

◆ TraceID

const char* XrdThrottleManager::TraceID
staticprivate

The documentation for this class was generated from the following file: