|
xrootd
|
#include <XrdScheduler.hh>


Public Member Functions | |
| int | Active () |
| void | Cancel (XrdJob *jp) |
| int | canStick () |
| void | DoIt () |
| pid_t | Fork (const char *id) |
| void * | Reaper () |
| void | Run () |
| void | Schedule (XrdJob *jp) |
| void | Schedule (int num, XrdJob *jfirst, XrdJob *jlast) |
| void | Schedule (XrdJob *jp, time_t atime) |
| void | setParms (int minw, int maxw, int avlt, int maxi, int once=0) |
| void | Start () |
| int | Stats (char *buff, int blen, int do_sync=0) |
| void | TimeSched () |
| XrdScheduler (XrdSysError *eP, XrdOucTrace *tP, int minw=8, int maxw=2048, int maxi=780) | |
| ~XrdScheduler () | |
Public Attributes | |
| int | num_TCreate |
| int | num_TDestroy |
| int | num_Jobs |
| int | max_QLength |
| int | num_Limited |
Private Member Functions | |
| void | hireWorker (int dotrace=1) |
| void | Monitor () |
| void | traceExit (pid_t pid, int status) |
Private Attributes | |
| XrdSysError * | XrdLog |
| XrdOucTrace * | XrdTrace |
| XrdSysMutex | DispatchMutex |
| int | idl_Workers |
| int | min_Workers |
| int | max_Workers |
| int | max_Workidl |
| int | num_Workers |
| int | stk_Workers |
| int | num_JobsinQ |
| int | num_Layoffs |
| XrdJob * | WorkFirst |
| XrdJob * | WorkLast |
| XrdSysSemaphore | WorkAvail |
| XrdSysMutex | SchedMutex |
| XrdJob * | TimerQueue |
| XrdSysCondVar | TimerRings |
| XrdSysMutex | TimerMutex |
| XrdSchedulerPID * | firstPID |
| XrdSysMutex | ReaperMutex |
Static Private Attributes | |
| static const char * | TraceID = "Sched" |
| XrdScheduler::XrdScheduler | ( | XrdSysError * | eP, |
| XrdOucTrace * | tP, | ||
| int | minw = 8, |
||
| int | maxw = 2048, |
||
| int | maxi = 780 |
||
| ) |
References XrdLog, XrdTrace, min_Workers, max_Workers, max_Workidl, num_Workers, num_JobsinQ, stk_Workers, idl_Workers, num_Jobs, max_QLength, num_TCreate, num_TDestroy, num_Limited, firstPID, WorkFirst, WorkLast, and TimerQueue.
| XrdScheduler::~XrdScheduler | ( | ) |
| int XrdScheduler::Active | ( | ) | [inline] |
References num_Workers, idl_Workers, and num_JobsinQ.
Referenced by XrdStats::Report().
| void XrdScheduler::Cancel | ( | XrdJob * | jp | ) |
References TimerMutex, XrdSysMutex::Lock(), TimerQueue, XrdJob::NextJob, TRACE, XrdJob::Comment, and XrdSysMutex::UnLock().
Referenced by Schedule(), setParms(), and XrdXrootdJob::~XrdXrootdJob().
| int XrdScheduler::canStick | ( | ) | [inline] |
References num_Workers, stk_Workers, and idl_Workers.
Referenced by XrdLink::DoIt().
| void XrdScheduler::DoIt | ( | ) | [virtual] |
Implements XrdJob.
References num_JobsinQ, DispatchMutex, XrdSysMutex::Lock(), idl_Workers, XrdSysMutex::UnLock(), min_Workers, TRACE, num_Workers, SchedMutex, num_Layoffs, WorkAvail, XrdSysSemaphore::Post(), max_Workidl, and Schedule().
| pid_t XrdScheduler::Fork | ( | const char * | id | ) |
References fork(), XrdLog, XrdSysError::Emsg(), ReaperMutex, XrdSysMutex::Lock(), firstPID, XrdSysMutex::UnLock(), XrdSysThread::Run(), and XrdStartReaper().
Referenced by XrdRootdProtocol::Match().
| void XrdScheduler::hireWorker | ( | int | dotrace = 1 | ) | [private] |
References SchedMutex, XrdSysMutex::Lock(), num_Workers, max_Workers, num_Limited, XrdLog, XrdSysError::Emsg(), XrdSysMutex::UnLock(), num_TCreate, Run(), XrdStartWorking(), min_Workers, stk_Workers, and TRACE.
| void XrdScheduler::Monitor | ( | ) | [private] |
| void * XrdScheduler::Reaper | ( | ) |
References ReaperMutex, XrdSysMutex::Lock(), firstPID, XrdSchedulerPID::pid, TRACING, TRACE_SCHED, traceExit(), XrdSchedulerPID::next, and XrdSysMutex::UnLock().
Referenced by XrdStartReaper().
| void XrdScheduler::Run | ( | ) |
References DispatchMutex, XrdSysMutex::Lock(), idl_Workers, XrdSysMutex::UnLock(), WorkAvail, XrdSysSemaphore::Wait(), SchedMutex, WorkFirst, XrdJob::NextJob, WorkLast, num_JobsinQ, XrdLog, XrdSysError::Emsg(), num_Layoffs, num_TDestroy, num_Workers, TRACE, hireWorker(), XrdJob::Comment, and XrdJob::DoIt().
Referenced by XrdStartWorking(), and hireWorker().
| void XrdScheduler::Schedule | ( | XrdJob * | jp | ) |
References SchedMutex, XrdSysMutex::Lock(), XrdJob::NextJob, WorkFirst, WorkLast, WorkAvail, XrdSysSemaphore::Post(), num_Jobs, num_JobsinQ, max_QLength, and XrdSysMutex::UnLock().
Referenced by XrdCmsCache::TickTock(), XrdCmsDrop::XrdCmsDrop(), XrdCmsCluster::Drop(), XrdCmsConfig::Configure2(), XrdCmsConfig::DoIt(), XrdCmsJob::DoIt(), XrdCmsNode::do_SelPrep(), XrdCmsPrepare::DoIt(), XrdCmsPrepare::Reset(), XrdCmsProtocol::Dispatch(), XrdLogWorker::DoIt(), XrdLogWorker::XrdLogWorker(), XrdLink::Setup(), XrdLinkScan::idleScan(), mainAccept(), mainAdmin(), XrdObjectQ::DoIt(), XrdObjectQ::Set(), XrdPollDev::Disable(), XrdPollDev::Start(), XrdPollE::Disable(), XrdPollE::Start(), XrdPollPoll::Disable(), XrdPollPoll::Start(), XrdPollPoll::Restart(), DoIt(), setParms(), Start(), TimeSched(), XrdStatsJob::DoIt(), XrdStatsJob::XrdStatsJob(), XrdXrootdAio::doneRead(), XrdXrootdAio::doneWrite(), XrdXrootdCallBack::Done(), XrdXrootdJob2Do::Redrive(), XrdXrootdJob::XrdXrootdJob(), XrdXrootdJob::DoIt(), XrdXrootdJob::Schedule(), XrdXrootdJob::CleanUp(), XrdXrootdMonitor_Tick::DoIt(), XrdXrootdMonitor::startClock(), XrdXrootdPrepare::XrdXrootdPrepare(), XrdXrootdPrepare::DoIt(), and XrdXrootdProtocol::do_Offload().
References SchedMutex, XrdSysMutex::Lock(), XrdJob::NextJob, WorkFirst, WorkLast, num_Jobs, num_JobsinQ, max_QLength, WorkAvail, XrdSysSemaphore::Post(), and XrdSysMutex::UnLock().
| void XrdScheduler::Schedule | ( | XrdJob * | jp, |
| time_t | atime | ||
| ) |
| void XrdScheduler::setParms | ( | int | minw, |
| int | maxw, | ||
| int | avlt, | ||
| int | maxi, | ||
| int | once = 0 |
||
| ) |
References SchedMutex, XrdSysMutex::Lock(), XrdSysMutex::UnLock(), max_Workers, min_Workers, stk_Workers, max_Workidl, Cancel(), Schedule(), and TRACE.
Referenced by XrdConfig::xsched().
| void XrdScheduler::Start | ( | ) |
References XrdSysThread::Run(), XrdStartTSched(), XRDSYSTHREAD_BIND, XrdLog, XrdSysError::Emsg(), max_Workidl, Schedule(), min_Workers, hireWorker(), TRACE, and num_Workers.
Referenced by XrdConfig::Setup().
| int XrdScheduler::Stats | ( | char * | buff, |
| int | blen, | ||
| int | do_sync = 0 |
||
| ) |
References DispatchMutex, XrdSysMutex::Lock(), idl_Workers, XrdSysMutex::UnLock(), SchedMutex, num_Workers, num_Jobs, num_JobsinQ, max_QLength, num_TCreate, num_TDestroy, num_Limited, and snprintf.
Referenced by XrdStats::Stats().
| void XrdScheduler::TimeSched | ( | ) |
References TimerMutex, XrdSysMutex::Lock(), TimerQueue, XrdJob::SchedTime, XrdSysMutex::UnLock(), TimerRings, XrdSysCondVar::Wait(), XrdJob::NextJob, and Schedule().
Referenced by XrdStartTSched().
| void XrdScheduler::traceExit | ( | pid_t | pid, |
| int | status | ||
| ) | [private] |
References WIFEXITED, WEXITSTATUS, WIFSIGNALED, WTERMSIG, and TRACE.
Referenced by Reaper().
XrdSysMutex XrdScheduler::DispatchMutex [private] |
XrdSchedulerPID* XrdScheduler::firstPID [private] |
Referenced by XrdScheduler(), Fork(), and Reaper().
int XrdScheduler::idl_Workers [private] |
Referenced by XrdScheduler(), DoIt(), Run(), Stats(), Active(), and canStick().
Referenced by XrdScheduler(), Schedule(), and Stats().
int XrdScheduler::max_Workers [private] |
Referenced by XrdScheduler(), setParms(), and hireWorker().
int XrdScheduler::max_Workidl [private] |
Referenced by XrdScheduler(), DoIt(), setParms(), and Start().
int XrdScheduler::min_Workers [private] |
Referenced by XrdScheduler(), DoIt(), setParms(), Start(), and hireWorker().
Referenced by XrdScheduler(), Schedule(), and Stats().
int XrdScheduler::num_JobsinQ [private] |
Referenced by XrdScheduler(), DoIt(), Run(), Schedule(), Stats(), and Active().
int XrdScheduler::num_Layoffs [private] |
Referenced by XrdScheduler(), Stats(), and hireWorker().
Referenced by XrdScheduler(), Stats(), and hireWorker().
Referenced by XrdScheduler(), Run(), and Stats().
int XrdScheduler::num_Workers [private] |
Referenced by XrdScheduler(), DoIt(), Run(), Start(), Stats(), hireWorker(), Active(), and canStick().
XrdSysMutex XrdScheduler::ReaperMutex [private] |
XrdSysMutex XrdScheduler::SchedMutex [private] |
Referenced by DoIt(), Run(), Schedule(), setParms(), Stats(), and hireWorker().
int XrdScheduler::stk_Workers [private] |
Referenced by XrdScheduler(), setParms(), hireWorker(), and canStick().
XrdSysMutex XrdScheduler::TimerMutex [private] |
Referenced by Cancel(), Schedule(), and TimeSched().
XrdJob* XrdScheduler::TimerQueue [private] |
Referenced by XrdScheduler(), Cancel(), Schedule(), and TimeSched().
XrdSysCondVar XrdScheduler::TimerRings [private] |
Referenced by Schedule(), and TimeSched().
const char * XrdScheduler::TraceID = "Sched" [static, private] |
XrdSysSemaphore XrdScheduler::WorkAvail [private] |
Referenced by DoIt(), Run(), and Schedule().
XrdJob* XrdScheduler::WorkFirst [private] |
Referenced by XrdScheduler(), Run(), and Schedule().
XrdJob* XrdScheduler::WorkLast [private] |
Referenced by XrdScheduler(), Run(), and Schedule().
XrdSysError* XrdScheduler::XrdLog [private] |
Referenced by XrdScheduler(), Fork(), Run(), Start(), and hireWorker().
XrdOucTrace* XrdScheduler::XrdTrace [private] |
Referenced by XrdScheduler().
1.7.5