XrdScheduler Class Reference

#include <XrdScheduler.hh>

Inheritance diagram for XrdScheduler:

XrdJob List of all members.

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
XrdJobWorkFirst
XrdJobWorkLast
XrdSysSemaphore WorkAvail
XrdSysMutex SchedMutex
XrdJobTimerQueue
XrdSysCondVar TimerRings
XrdSysMutex TimerMutex
XrdSchedulerPIDfirstPID
XrdSysMutex ReaperMutex

Static Private Attributes

static const char * TraceID

Detailed Description

Definition at line 23 of file XrdScheduler.hh.


Constructor & Destructor Documentation

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.


Member Function Documentation

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().

void XrdScheduler::Schedule ( int  num,
XrdJob jfirst,
XrdJob jlast 
)

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().

Referenced by Run(), and Start().

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().


Member Data Documentation

int XrdScheduler::num_TCreate

Definition at line 56 of file XrdScheduler.hh.

Referenced by hireWorker(), Stats(), and XrdScheduler().

int XrdScheduler::num_TDestroy

Definition at line 57 of file XrdScheduler.hh.

Referenced by Run(), Stats(), and XrdScheduler().

int XrdScheduler::num_Jobs

Definition at line 58 of file XrdScheduler.hh.

Referenced by Schedule(), Stats(), and XrdScheduler().

int XrdScheduler::max_QLength

Definition at line 59 of file XrdScheduler.hh.

Referenced by Schedule(), Stats(), and XrdScheduler().

int XrdScheduler::num_Limited

Definition at line 60 of file XrdScheduler.hh.

Referenced by hireWorker(), Stats(), and XrdScheduler().

XrdSysMutex XrdScheduler::DispatchMutex [private]

Definition at line 69 of file XrdScheduler.hh.

Referenced by DoIt(), Run(), and Stats().

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]

Definition at line 78 of file XrdScheduler.hh.

Referenced by DoIt(), and Run().

XrdJob* XrdScheduler::WorkFirst [private]

Definition at line 80 of file XrdScheduler.hh.

Referenced by Run(), Schedule(), and XrdScheduler().

XrdJob* XrdScheduler::WorkLast [private]

Definition at line 81 of file XrdScheduler.hh.

Referenced by Run(), Schedule(), and XrdScheduler().

XrdSysSemaphore XrdScheduler::WorkAvail [private]

Definition at line 82 of file XrdScheduler.hh.

Referenced by DoIt(), Run(), and Schedule().

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]

Definition at line 86 of file XrdScheduler.hh.

Referenced by Schedule(), and TimeSched().

XrdSysMutex XrdScheduler::TimerMutex [private]

Definition at line 87 of file XrdScheduler.hh.

Referenced by Cancel(), Schedule(), and TimeSched().

XrdSchedulerPID* XrdScheduler::firstPID [private]

Definition at line 89 of file XrdScheduler.hh.

Referenced by Fork(), Reaper(), and XrdScheduler().

XrdSysMutex XrdScheduler::ReaperMutex [private]

Definition at line 90 of file XrdScheduler.hh.

Referenced by Fork(), and Reaper().

const char * XrdScheduler::TraceID [static, private]

Definition at line 95 of file XrdScheduler.hh.


The documentation for this class was generated from the following files:
Generated on Tue Jul 5 16:50:43 2011 for ROOT_528-00b_version by  doxygen 1.5.1