GaudiMP::pTools::Syncer Class Reference
List of all members.
Detailed Description
Definition at line 554 of file pTools.py.
Member Function Documentation
| def GaudiMP::pTools::Syncer::__init__ |
( |
|
self, |
|
|
|
nWorkers, |
|
|
|
log, |
|
|
|
manyEvents = False, |
|
|
|
limit = None, |
|
|
|
step = None, |
|
|
|
firstEvent = None | |
|
) |
| | |
| def GaudiMP::pTools::Syncer::checkAll |
( |
|
self |
) |
|
Definition at line 659 of file pTools.py.
00660 :
00661
00662
00663 currentStatus = [ mini.check() for mini in self.d.values() ]
00664 return all( currentStatus )
| def GaudiMP::pTools::Syncer::checkLastEvents |
( |
|
self |
) |
|
Definition at line 665 of file pTools.py.
00666 :
00667
00668 stat = [ sMini.checkLast() for sMini in self.d.values() ]
00669 return all(stat)
00670
00671
| def GaudiMP::pTools::Syncer::processHang |
( |
|
self |
) |
|
Definition at line 653 of file pTools.py.
00654 :
00655 self.log.critical('Some proc is hanging during Event processing!')
00656 for k in self.keys :
00657 self.log.critical( "Proc/Stat : %i / %s"%(k,self.d[k].check()) )
00658 return
| def GaudiMP::pTools::Syncer::syncAll |
( |
|
self, |
|
|
|
step = "Not specified" | |
|
) |
| | |
Definition at line 570 of file pTools.py.
00571 :
00572
00573
00574
00575 if self.manyEvents :
00576 sc = self.syncAllRolling( )
00577 return sc
00578
00579
00580 for i in xrange( 0, self.limit, self.step ) :
00581 if self.checkAll( ) :
00582 self.log.info('%s : All procs done @ %i s'%(step,i))
00583 break
00584 else :
00585 time.sleep(self.step)
00586
00587
00588 if self.checkAll() :
00589 self.log.info("All processes : %s ok."%(step))
00590 return SUCCESS
00591 else :
00592 self.log.critical('Some process is hanging on : %s'%(step))
00593 for k in self.keys :
00594 hangString= "%s : Proc/Stat : %i/%s"%(step,k,self.d[k].check())
00595 self.log.critical( hangString )
00596 return FAILURE
| def GaudiMP::pTools::Syncer::syncAllRolling |
( |
|
self |
) |
|
Definition at line 597 of file pTools.py.
00598 :
00599
00600
00601
00602
00603
00604
00605
00606 begin = time.time()
00607 firstEv = {}
00608 timers = {}
00609 for k in self.keys :
00610 self.d[k].reset()
00611 firstEv[k] = False
00612 timers[k] = 0.0
00613
00614 active = self.keys
00615 while True :
00616
00617 for k in active :
00618 sMini = self.d[k]
00619
00620 if sMini.check() :
00621 if sMini.checkLast() :
00622
00623 active.remove( k )
00624 alive = time.time()-begin
00625 self.log.info( "Audit : Node %i alive for %5.2f"\
00626 %(k,alive) )
00627 else :
00628 sMini.reset()
00629 else :
00630
00631
00632 wait = time.time()-sMini.getTime()
00633 cond = wait > self.limit
00634 if not firstEv[k] :
00635 cond = wait > self.limitFirst
00636 firstEv[k] = True
00637 if cond :
00638
00639 self.log.critical('Single event wait : %5.2f'%(wait))
00640 self.processHang()
00641 return FAILURE
00642
00643
00644 if self.checkLastEvents() :
00645 self.log.info('TC met for event loop')
00646 break
00647 else :
00648
00649 time.sleep(self.step)
00650
00651 self.log.info("All processes Completed all Events ok")
00652 return SUCCESS
Member Data Documentation
The documentation for this class was generated from the following file:
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v22r0/GaudiMP/python/GaudiMP/pTools.py