#include <XrdScheduler.hh>
Inheritance diagram for XrdScheduler:
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 (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 | |
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 |
Definition at line 23 of file XrdScheduler.hh.
XrdScheduler::XrdScheduler | ( | int | minw = 8 , |
|
int | maxw = 2048 , |
|||
int | maxi = 780 | |||
) |
Definition at line 81 of file XrdScheduler.cc.
References firstPID, idl_Workers, max_QLength, max_Workers, max_Workidl, min_Workers, num_Jobs, num_JobsinQ, num_Limited, num_TCreate, num_TDestroy, num_Workers, stk_Workers, TimerQueue, WorkFirst, and WorkLast.
XrdScheduler::~XrdScheduler | ( | ) |
Definition at line 105 of file XrdScheduler.cc.
int XrdScheduler::Active | ( | ) | [inline] |
Definition at line 27 of file XrdScheduler.hh.
References idl_Workers, num_JobsinQ, and num_Workers.
Referenced by XrdStats::Report().
void XrdScheduler::Cancel | ( | XrdJob * | jp | ) |
Definition at line 113 of file XrdScheduler.cc.
References XrdJob::Comment, XrdSysMutex::Lock(), p, TimerMutex, TimerQueue, TRACE, and XrdSysMutex::UnLock().
Referenced by Schedule(), setParms(), and XrdXrootdJob::~XrdXrootdJob().
int XrdScheduler::canStick | ( | ) | [inline] |
Definition at line 31 of file XrdScheduler.hh.
References idl_Workers, num_Workers, and stk_Workers.
Referenced by XrdLink::DoIt().
void XrdScheduler::DoIt | ( | ) | [virtual] |
Implements XrdJob.
Definition at line 143 of file XrdScheduler.cc.
References DispatchMutex, idl_Workers, XrdSysMutex::Lock(), max_Workidl, min_Workers, num_JobsinQ, num_Layoffs, num_Workers, XrdSysSemaphore::Post(), SchedMutex, Schedule(), TRACE, XrdSysMutex::UnLock(), and WorkAvail.
pid_t XrdScheduler::Fork | ( | const char * | id | ) |
Definition at line 173 of file XrdScheduler.cc.
References XrdSysError::Emsg(), firstPID, fork(), XrdSysMutex::Lock(), ReaperMutex, XrdSysThread::Run(), XrdSysMutex::UnLock(), and XrdStartReaper().
Referenced by XrdProofdAdmin::CpFile(), XrdProofdProofServMgr::Create(), XrdProofdAdmin::ExecCmd(), XrdProofdAdmin::GetFile(), XrdRootdProtocol::Match(), XrdProofdAdmin::PutFile(), and XrdROOTMgr::Validate().
void * XrdScheduler::Reaper | ( | ) |
Definition at line 211 of file XrdScheduler.cc.
References firstPID, XrdSysMutex::Lock(), XrdSchedulerPID::next, XrdSchedulerPID::pid, ReaperMutex, TRACE_SCHED, traceExit(), TRACING, ts, and XrdSysMutex::UnLock().
Referenced by XrdStartReaper().
void XrdScheduler::Run | ( | ) |
Definition at line 257 of file XrdScheduler.cc.
References XrdJob::Comment, DispatchMutex, XrdJob::DoIt(), XrdSysError::Emsg(), hireWorker(), idl_Workers, XrdSysMutex::Lock(), XrdJob::NextJob, num_JobsinQ, num_Layoffs, num_TDestroy, num_Workers, SchedMutex, TRACE, XrdSysMutex::UnLock(), XrdSysSemaphore::Wait(), WorkAvail, WorkFirst, and WorkLast.
Referenced by XrdStartWorking().
void XrdScheduler::Schedule | ( | XrdJob * | jp | ) |
Definition at line 300 of file XrdScheduler.cc.
References XrdSysMutex::Lock(), max_QLength, XrdJob::NextJob, num_Jobs, num_JobsinQ, XrdSysSemaphore::Post(), SchedMutex, XrdSysMutex::UnLock(), WorkAvail, WorkFirst, and WorkLast.
Referenced by XrdProofdProofServMgr::Accept(), XrdXrootdJob::CleanUp(), XrdCmsConfig::Configure2(), XrdCmsProtocol::Dispatch(), XrdXrootdProtocol::do_Offload(), XrdCmsNode::do_SelPrep(), DoIt(), XrdXrootdJob::DoIt(), XrdXrootdMonitor_Tick::DoIt(), XrdStatsJob::DoIt(), XrdCmsJob::DoIt(), XrdXrootdPrepare::DoIt(), XrdCmsConfig::DoIt(), XrdCmsPrepare::DoIt(), XrdLogWorker::DoIt(), XrdXrootdCallBack::Done(), XrdXrootdAio::doneRead(), XrdXrootdAio::doneWrite(), XrdCmsCluster::Drop(), XrdLinkScan::idleScan(), mainAccept(), mainAdmin(), XrdXrootdJob2Do::Redrive(), XrdCmsPrepare::Reset(), XrdXrootdJob::Schedule(), setParms(), XrdLink::Setup(), Start(), XrdXrootdMonitor::startClock(), XrdCmsCache::TickTock(), TimeSched(), XrdCmsDrop::XrdCmsDrop(), XrdLogWorker::XrdLogWorker(), XrdStatsJob::XrdStatsJob(), XrdXrootdJob::XrdXrootdJob(), and XrdXrootdPrepare::XrdXrootdPrepare().
Definition at line 331 of file XrdScheduler.cc.
References XrdSysMutex::Lock(), max_QLength, XrdJob::NextJob, num_Jobs, num_JobsinQ, XrdSysSemaphore::Post(), SchedMutex, XrdSysMutex::UnLock(), WorkAvail, WorkFirst, and WorkLast.
void XrdScheduler::Schedule | ( | XrdJob * | jp, | |
time_t | atime | |||
) |
Definition at line 366 of file XrdScheduler.cc.
References Cancel(), XrdJob::Comment, XrdSysMutex::Lock(), XrdJob::NextJob, p, XrdJob::SchedTime, XrdSysCondVar::Signal(), TimerMutex, TimerQueue, TimerRings, TRACE, and XrdSysMutex::UnLock().
void XrdScheduler::setParms | ( | int | minw, | |
int | maxw, | |||
int | avlt, | |||
int | maxi, | |||
int | once = 0 | |||
) |
Definition at line 400 of file XrdScheduler.cc.
References Cancel(), XrdSysMutex::Lock(), max_Workers, max_Workidl, min_Workers, SchedMutex, Schedule(), stk_Workers, TRACE, and XrdSysMutex::UnLock().
Referenced by XrdCmsConfig::Configure2(), and XrdConfig::xsched().
void XrdScheduler::Start | ( | ) |
Definition at line 446 of file XrdScheduler.cc.
References XrdSysError::Emsg(), hireWorker(), max_Workidl, min_Workers, num_Workers, XrdSysThread::Run(), Schedule(), TRACE, XrdStartTSched(), and XRDSYSTHREAD_BIND.
Referenced by XrdConfig::Setup().
int XrdScheduler::Stats | ( | char * | buff, | |
int | blen, | |||
int | do_sync = 0 | |||
) |
Definition at line 475 of file XrdScheduler.cc.
References DispatchMutex, idl_Workers, XrdSysMutex::Lock(), max_QLength, num_Jobs, num_JobsinQ, num_Limited, num_TCreate, num_TDestroy, num_Workers, SchedMutex, snprintf, and XrdSysMutex::UnLock().
Referenced by XrdStats::Stats().
void XrdScheduler::TimeSched | ( | ) |
Definition at line 518 of file XrdScheduler.cc.
References XrdSysMutex::Lock(), XrdJob::NextJob, XrdJob::SchedTime, Schedule(), TimerMutex, TimerQueue, TimerRings, XrdSysMutex::UnLock(), and XrdSysCondVar::Wait().
Referenced by XrdStartTSched().
void XrdScheduler::hireWorker | ( | int | dotrace = 1 |
) | [private] |
Definition at line 547 of file XrdScheduler.cc.
References XrdSysError::Emsg(), XrdSysMutex::Lock(), max_Workers, min_Workers, num_Limited, num_TCreate, num_Workers, XrdSysThread::Run(), SchedMutex, stk_Workers, TRACE, XrdSysMutex::UnLock(), and XrdStartWorking().
void XrdScheduler::Monitor | ( | ) | [private] |
void XrdScheduler::traceExit | ( | pid_t | pid, | |
int | status | |||
) | [private] |
Definition at line 589 of file XrdScheduler.cc.
References TRACE, WEXITSTATUS, WIFEXITED, WIFSIGNALED, and WTERMSIG.
Referenced by Reaper().
Definition at line 56 of file XrdScheduler.hh.
Referenced by hireWorker(), Stats(), and XrdScheduler().
Definition at line 58 of file XrdScheduler.hh.
Referenced by Schedule(), Stats(), and XrdScheduler().
Definition at line 59 of file XrdScheduler.hh.
Referenced by Schedule(), Stats(), and XrdScheduler().
Definition at line 60 of file XrdScheduler.hh.
Referenced by hireWorker(), Stats(), and XrdScheduler().
XrdSysMutex XrdScheduler::DispatchMutex [private] |
int XrdScheduler::idl_Workers [private] |
Definition at line 70 of file XrdScheduler.hh.
Referenced by Active(), canStick(), DoIt(), Run(), Stats(), and XrdScheduler().
int XrdScheduler::min_Workers [private] |
Definition at line 72 of file XrdScheduler.hh.
Referenced by DoIt(), hireWorker(), setParms(), Start(), and XrdScheduler().
int XrdScheduler::max_Workers [private] |
Definition at line 73 of file XrdScheduler.hh.
Referenced by hireWorker(), setParms(), and XrdScheduler().
int XrdScheduler::max_Workidl [private] |
Definition at line 74 of file XrdScheduler.hh.
Referenced by DoIt(), setParms(), Start(), and XrdScheduler().
int XrdScheduler::num_Workers [private] |
Definition at line 75 of file XrdScheduler.hh.
Referenced by Active(), canStick(), DoIt(), hireWorker(), Run(), Start(), Stats(), and XrdScheduler().
int XrdScheduler::stk_Workers [private] |
Definition at line 76 of file XrdScheduler.hh.
Referenced by canStick(), hireWorker(), setParms(), and XrdScheduler().
int XrdScheduler::num_JobsinQ [private] |
Definition at line 77 of file XrdScheduler.hh.
Referenced by Active(), DoIt(), Run(), Schedule(), Stats(), and XrdScheduler().
int XrdScheduler::num_Layoffs [private] |
XrdJob* XrdScheduler::WorkFirst [private] |
XrdJob* XrdScheduler::WorkLast [private] |
XrdSysSemaphore XrdScheduler::WorkAvail [private] |
XrdSysMutex XrdScheduler::SchedMutex [private] |
Definition at line 83 of file XrdScheduler.hh.
Referenced by DoIt(), hireWorker(), Run(), Schedule(), setParms(), and Stats().
XrdJob* XrdScheduler::TimerQueue [private] |
Definition at line 85 of file XrdScheduler.hh.
Referenced by Cancel(), Schedule(), TimeSched(), and XrdScheduler().
XrdSysCondVar XrdScheduler::TimerRings [private] |
XrdSysMutex XrdScheduler::TimerMutex [private] |
XrdSchedulerPID* XrdScheduler::firstPID [private] |
XrdSysMutex XrdScheduler::ReaperMutex [private] |
const char * XrdScheduler::TraceID [static, private] |
Definition at line 95 of file XrdScheduler.hh.