library: libProof
#include "TAdaptivePacketizer.h"

TAdaptivePacketizer


class description - header file - source file
viewCVS header - viewCVS source

class TAdaptivePacketizer: public TVirtualPacketizer

Inheritance Inherited Members Includes Libraries
Class Charts

Function Members (Methods)

Display options:
Show inherited
Show non-public
public:
TAdaptivePacketizer(TDSet* dset, TList* slaves, Long64_t first, Long64_t num, TList* input)
virtual~TAdaptivePacketizer()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Int_tCalculatePacketSize(TObject* slstat)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() const
virtual TObject*TObject::DrawClone(Option_t* option = "") const
virtual voidTObject::Dump() const
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Long64_tGetBytesRead() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Long64_tGetEntriesProcessed() const
virtual Long64_tGetEntriesProcessed(TSlave* sl) const
virtual const char*TObject::GetIconName() const
virtual Float_tGetInitTime() const
virtual const char*TObject::GetName() const
virtual TDSetElement*GetNextPacket(TSlave* sl, TMessage* r)
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual Float_tGetProcTime() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTVirtualPacketizer::IsValid() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") const
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidTVirtualPacketizer::StopProcess(Bool_t abort)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = "0", Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Long64_tTVirtualPacketizer::GetEntries(Bool_t tree, TDSetElement* e)
voidTObject::MakeZombie()
private:
TAdaptivePacketizer()
TAdaptivePacketizer(const TAdaptivePacketizer&)
TDSetElement*CreateNewPacket(TDSetElement* base, Long64_t first, Long64_t num)
TAdaptivePacketizer::TFileStat*GetNextActive()
TAdaptivePacketizer::TFileStat*GetNextUnAlloc(TAdaptivePacketizer::TFileNode* node = 0)
virtual Bool_tHandleTimer(TTimer* timer)
TAdaptivePacketizer::TFileNode*NextActiveNode()
TAdaptivePacketizer::TFileNode*NextUnAllocNode()
voidoperator=(const TAdaptivePacketizer&)
voidRemoveActive(TAdaptivePacketizer::TFileStat* file)
voidRemoveActiveNode(TAdaptivePacketizer::TFileNode*)
voidRemoveUnAllocNode(TAdaptivePacketizer::TFileNode*)
voidReset()
voidSplitEventList(TDSet* dset)
voidValidateFiles(TDSet* dset, TList* slaves)

Data Members

public:
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
static Int_tfgMaxSlaveCntmaximum number of slaves per filenode
protected:
Bool_tTVirtualPacketizer::fValidConstructed properly?
Bool_tTVirtualPacketizer::fStopTermination of Process() requested?
private:
Long64_tfProcessednumber of entries processed
Long64_tfBytesReadnumber of bytes processed
TList*fPacketsall processed packets
Long64_tfTotalEntriestotal number of entries to be distributed
Long_tfStartTimetime offset
Float_tfInitTimetime before processing
Float_tfTimeUpdttime between updates
TNtupleD*fCircProgKeeps circular info for "instantenous"
Int_tfCircNCircularity
TList*fFileNodesnodes with files
TList*fUnAllocatednodes with unallocated files
TList*fActivenodes with unfinished files
TMap*fSlaveStatsslave status, keyed by correspondig TSlave
TTimer*fProgressprogress updates timer
Int_tfMaxPerfIdxmaximum of our slaves' performance index
Float_tfFractionOfRemoteFilesfraction of TDSetElements
Long64_tfNEventsOnRemLocnumber of events in currently
Float_tfProcTimesum of proc time of all packets so far

Class Description

                                                                      
 TAdaptivePacketizer                                                  
                                                                      
 This packetizer is based on TPacketizer but uses different           
 load-balancing algorithms and data structures.                       
 Two main improvements in the load-balancing strategy:                
 - First one was to change the order in which the files are assigned  
   to the computing nodes in such a way that network transfers are    
   evenly distributed in the query time. Transfer of the remote files 
   was often becoming a bottleneck at the end of a query.             
 - The other improvement is the use of time-based packet size. We     
   measure the processing rate of all the nodes and calculate the     
   packet size, so that it takes certain amount of time. In this way  
   packetizer prevents the situation where the query can’t finish     
   because of one slow node.                                          
                                                                      
 The data structures: TFileStat, TFileNode and TSlaveStat are         
 enriched + changed and TFileNode::Compare method is changed.         
                                                                      

TAdaptivePacketizer(TDSet *dset, TList *slaves, Long64_t first, Long64_t num, TList *input)
 Constructor
~TAdaptivePacketizer()
 Destructor.
void RemoveUnAllocNode(TFileNode * node)
 Remove unallocated node.
void RemoveActive(TFileStat *file)
 Remove file from the list of actives.
void RemoveActiveNode(TFileNode *node)
 Remove node from the list of actives.
void Reset()
 Reset the internal datastructure for packet distribution.
void ValidateFiles(TDSet *dset, TList *slaves)
 Check existence of file/dir/tree an get number of entries.
 Assumes the files have been setup.
void SplitEventList(TDSet *dset)
 Splits the eventlist into parts for each file.
 Each part is assigned to the apropriate TDSetElement.
Long64_t GetEntriesProcessed(TSlave *slave)
 Get entries processed by the specified slave.
TDSetElement* CreateNewPacket(TDSetElement* base, Long64_t first, Long64_t num)
 Creates a new TDSetElement from base packet starting from first entry
 with num entries. The function returns a new created objects which have
 to be deleted.
Int_t CalculatePacketSize(TObject *slStatPtr)
 Calculates the packet size based on performance of this slave
 and est. time left untill the end of the query.
TDSetElement * GetNextPacket(TSlave *sl, TMessage *r)
 Get next packet;
 A meaningfull difference to TPacketizer is the fact that this
 packetizer, for each worker, tries to predict whether the worker
 will finish processing it's local files before the end of the query.
 If yes, it allocates, to those workers, files from non-slave filenodes
 or from slaves that are overloaded. The check is done every time a new
 file needs to be assigned.
Bool_t HandleTimer(TTimer *)
 Send progress message to client.
TAdaptivePacketizer()
TAdaptivePacketizer(const TAdaptivePacketizer&)
void operator=(const TAdaptivePacketizer&)
TFileNode * NextUnAllocNode()
TFileNode * NextActiveNode()
TFileStat * GetNextUnAlloc(TFileNode *node = 0)
TFileStat * GetNextActive()
Long64_t GetEntriesProcessed()
{ return fProcessed; }
Long64_t GetBytesRead()
{ return fBytesRead; }
Float_t GetInitTime()
{ return fInitTime; }
Float_t GetProcTime()
{ return fProcTime; }

Author: Jan Iwaszkiewicz 11/12/06
Last update: root/proof:$Name: $:$Id: TAdaptivePacketizer.cxx,v 1.2 2006/12/13 08:24:09 brun Exp $
Copyright (C) 1995-2002, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.