75 Printf(
" +++ TWrkInfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
78 Printf(
" +++ Amounts processed: %d packets (%d remote), %lld evts, %lld bytes",
85 Printf(
" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
92 }
else if (
fStop ==
wi->fStop) {
131 while ((o =
nxp())) { o->
Print(
"S"); }
186 Printf(
" +++ TFileInfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
195 Printf(
" +++ MB rates: %f MB/s (avg), %f MB/s (min), %f MB/s (max)",
197 Printf(
" +++ Sizes: %lld (avg), %lld (min), %lld (max)",
200 Printf(
" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
207 }
else if (
fStop ==
wi->fStop) {
219 const char *title,
const char *
treename)
221 fInitTime(-1.), fMergeTime(-1.), fMaxTime(-1.),
222 fEvents(0), fPackets(0),
223 fEvtRateMax(-1.), fMBRateMax(-1.), fLatencyMax(-1.),
224 fEvtRate(0), fEvtRateRun(0), fMBRate(0), fMBRateRun(0),
225 fEvtRateAvgMax(-1.), fMBRateAvgMax(-1.),
226 fEvtRateAvg(-1.), fMBRateAvg(0),
227 fFileResult(
""), fSaveResult(
kFALSE),
231 if (!title)
SetTitle(
"PROOF Performance Analysis");
237 Error(
"TProofPerfAnalysis",
"problems opening file '%s'",
257 Error(
"TProofPerfAnalysis",
"directory '%s' not found or not loadable",
fDirName.
Data());
291 :
TNamed(
"", title), fFile(0), fTree(0),
292 fInitTime(-1.), fMergeTime(-1.), fMaxTime(-1.),
293 fEvents(0), fPackets(0),
294 fEvtRateMax(-1.), fMBRateMax(-1.), fLatencyMax(-1.),
295 fEvtRate(0), fEvtRateRun(0), fMBRate(0), fMBRateRun(0),
296 fEvtRateAvgMax(-1.), fMBRateAvgMax(-1.),
297 fEvtRateAvg(-1.), fMBRateAvg(0),
307 if (!title)
SetTitle(
"PROOF Performance Analysis");
404 Error(
"FileDist",
"not a valid instance - do nothing");
412 Info(
"FileDist",
"%d workers were active during this query",
wrkList->GetSize());
413 Info(
"FileDist",
"%d servers were active during this query",
srvList->GetSize());
423 sn->SetTitle(
wn->GetName());
480 Printf(
"\n +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
481 Printf(
" + Only one data server found: full analysis meaningful + ");
482 Printf(
" + only when there are more file servers + ");
483 Printf(
" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n");
489 hxpak->SetDirectory(0);
490 hxpak->SetMinimum(0.);
491 hxpak->GetXaxis()->SetTitle(
"Worker");
497 hxpak->GetXaxis()->SetBinLabel(
j++,
wn->GetName());
515 hfdis->SetDirectory(0);
516 hfdis->SetMinimum(0);
517 hfdis->GetXaxis()->SetTitle(
"Server");
520 hbdis->SetDirectory(0);
521 hbdis->SetMinimum(0);
522 hbdis->GetXaxis()->SetTitle(
"Server");
527 hxpak->SetDirectory(0);
528 hxpak->GetYaxis()->SetTitle(
"Worker");
529 hxpak->GetXaxis()->SetTitle(
"Server");
530 hxpak->GetXaxis()->SetTitleOffset(1.4);
531 hxpak->GetYaxis()->SetTitleOffset(1.7);
537 hxpak->GetYaxis()->SetBinLabel(
j++,
wn->GetName());
542 hfdis->GetXaxis()->SetBinLabel(
j,
sn->GetName());
543 hbdis->GetXaxis()->SetBinLabel(
j,
sn->GetName());
544 hxpak->GetXaxis()->SetBinLabel(
j++,
sn->GetName());
558 hxpak->GetXaxis()->SetBinLabel(
j++,
lab);
588 if (!
wl || !
sl)
return;
596 for (
Long64_t k=0; k<entries; k++) {
631 if ((
o1d =
o1.CountChar(
'.')) > (
o2d =
o2.CountChar(
'.'))) {
636 o1.ReplaceAll(
".",
" ");
637 o2.ReplaceAll(
".",
" ");
641 if (
p1.Atoi() >
p2.Atoi()) {
643 }
else if (
p1.Atoi() <
p2.Atoi()) {
646 b1 =
o1.Tokenize(
p1,
o1d,
" ");
647 b2 =
o2.Tokenize(
p2,
o2d,
" ");
652 }
else if (b2 && !b1) {
665 if (!
hf || !
hb || !
hx)
return;
672 Warning(
"FillFileDist",
"asked to save details in '%s' but file could"
673 " not be open (errno: %d)",
fnout.Data(), (
int)
errno);
675 Info(
"FillFileDist",
"saving details to '%s'",
fnout.Data());
683 for (
Long64_t k=0; k<entries; k++) {
703 hb->Fill(
xhf,
pe.fBytesRead / 1024. / 1024.);
704 hx->Fill(
xhx,
yhx,
pe.fBytesRead / 1024. / 1024.);
723 Warning(
"FillFileDistOneSrv",
"asked to save details in '%s' but file could"
724 " not be open (errno: %d)",
fnout.Data(), (
int)
errno);
726 Info(
"FillFileDistOneSrv",
"saving details to '%s'",
fnout.Data());
734 for (
Long64_t k=0; k<entries; k++) {
749 srv.Data(),
wrk.Data(),
xhx,
pe.fBytesRead / 1024.);
751 hx->Fill(
xhx,
pe.fBytesRead / 1024. / 1024.);
764 Error(
"WorkerActivity",
"not a valid instance - do nothing");
771 Error(
"WorkerActivity",
"workers information not available - do nothing");
781 TH1F *
hact10 =
new TH1F(
"act10",
"Worker activity start (seconds)", 50, 0.,
t1);
782 hact10->GetXaxis()->SetTitle(
"Query Processing Time (s)");
785 hact11->GetXaxis()->SetTitle(
"Query Processing Time (s)");
788 hact2->GetXaxis()->SetTitle(
"Query Processing Time (s)");
799 for (
j = 1;
j <
hact10->GetNbinsX()+1 ;
j++) {
800 if (
wi->fStart <
hact10->GetBinLowEdge(
j))
803 for (
j = 1;
j <
hact11->GetNbinsX()+1 ;
j++) {
804 if (
wi->fStop >
hact11->GetBinLowEdge(
j))
859 Error(
"PrintWrkInfo",
"worker name or host must be defined!");
874 while (ww.Tokenize(
w,
from,
"[, ]")) {
912 Error(
"PrintFileInfo",
"file path must be defined!");
930 while (
fw.Tokenize(
f,
from,
"[, ]")) {
968 for (
Long64_t k=0; k<entries; k++) {
985 for (
kk = 0;
kk < nbins;
kk++) {
987 if (
jj == 0 ||
xtmp > xbins[
jj - 1] + .5) {
1000 fEvtRate =
new TH1F(
"gEvtRate",
"Total event processing rate (evt/s)",
nbin, xbins);
1006 fEvtRateRun =
new TH1F(
"gEvtRateAvg",
"Event processing rate running average (evt/s)",
nbin, xbins);
1012 fMBRate =
new TH1F(
"gMBRate",
"Total processing rate (MB/s)",
nbin, xbins);
1018 fMBRateRun =
new TH1F(
"gMBRateAvg",
"Processing rate running average (MB/s)",
nbin, xbins);
1031 for (
Long64_t k=0; k<entries; k++) {
1040 wi->fRateRemoteT =
new TGraph(100);
1042 wi->fMBRateRemoteT =
new TGraph(100);
1048 if (
wi->fPackets <= 0) {
1055 wi->fEventsProcessed +=
pe.fEventsProcessed;
1056 wi->fBytesRead +=
pe.fBytesRead;
1057 wi->fLatency +=
pe.fLatency;
1058 wi->fProcTime +=
pe.fProcTime;
1059 wi->fCpuTime +=
pe.fCpuTime;
1064 wi->fRateT->SetPoint(
wi->fPackets,
tt,
ert);
1065 if (
brt > 0.)
wi->fMBRateT->SetPoint(
wi->fPackets,
tt,
brt);
1066 wi->fLatencyT->SetPoint(
wi->fPackets,
tt,
pe.fLatency);
1067 if (!
pe.fFileName.IsNull() &&
strcmp(
uf.GetHostFQDN(),
uw.GetHostFQDN())) {
1068 wi->fRateRemoteT->SetPoint(
wi->fRemotePackets,
tt,
ert);
1069 wi->fMBRateRemoteT->SetPoint(
wi->fRemotePackets,
tt,
brt);
1070 wi->fRemotePackets++;
1078 for (
kk = 1;
kk <= nbins;
kk++) {
1096 gwl->SetName(
pe.fSlave);
1105 if (
pe.fProcTime > 0.) {
1106 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs evts:%lld bytes:%lld (rates:%f evt/s, %f MB/s)",
1108 pe.fLatency,
pe.fProcTime,
pe.fEventsProcessed,
pe.fBytesRead,
1111 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs rate:-- evt/s (-- bytes/s)",
1116 Float_t start =
pe.fTimeStamp.GetSec() + 1
e-9*
pe.fTimeStamp.GetNanoSec();
1117 if (
fDebug > 1)
Printf(
" +++ %s Start: %f s",
pe.fEvtNode.Data(), start);
1136 if (
we->fProcTime > 0) {
1137 er +=
we->fEvtRate *
we->fProcTime;
1138 br +=
we->fMBRate *
we->fProcTime;
1139 pt +=
we->fProcTime;
1154 for (
kk = 1;
kk < nbins;
kk++) {
1189 wi->fRateT->Set(
wi->fPackets);
1190 wi->fRateRemoteT->Set(
wi->fRemotePackets);
1191 wi->fLatencyT->Set(
wi->fPackets);
1192 wi->fMBRateT->Set(
wi->fPackets);
1193 wi->fMBRateRemoteT->Set(
wi->fRemotePackets);
1203 if (
wi->fStop > 0.)
ksw++;
1253 Printf(
"%d %f %f %f %f %f %f %f",
1259 Printf(
" +++ Total query time: %f secs (init: %f secs, merge: %f secs)",
1287 for (
Long64_t k=0; k<entries; k++) {
1304 fi->fMBRatePRemote =
new TGraph(10);
1309 if (
fi->fPackets <= 0) {
1318 fi->fSizeAvg +=
pe.fEventsProcessed;
1319 if (
pe.fEventsProcessed >
fi->fSizeMax ||
fi->fSizeMax < 0.)
fi->fSizeMax =
pe.fEventsProcessed;
1320 if (
pe.fEventsProcessed <
fi->fSizeMin ||
fi->fSizeMin < 0.)
fi->fSizeMin =
pe.fEventsProcessed;
1323 Double_t tt =
pe.fTimeStamp.GetSec() + 1
e-9*
pe.fTimeStamp.GetNanoSec();
1326 fi->fRateP->SetPoint(
fi->fPackets,
tt,
ert);
1327 if (
brt > 0.)
fi->fMBRateP->SetPoint(
fi->fPackets,
tt,
brt);
1328 if (!
pe.fFileName.IsNull() &&
strcmp(
uf.GetHostFQDN(),
uw.GetHostFQDN())) {
1329 if (!(
fi->fRWrkList.FindObject(
pe.fSlave)))
fi->fRWrkList.Add(
new TNamed(
pe.fSlave,
pe.fSlaveName));
1330 fi->fRatePRemote->SetPoint(
fi->fRPackets,
tt,
ert);
1331 fi->fMBRatePRemote->SetPoint(
fi->fRPackets,
tt,
brt);
1336 fi->fMBRateAvg +=
brt;
1337 if (
brt >
fi->fMBRateMax ||
fi->fMBRateMax < 0.)
fi->fMBRateMax =
brt;
1343 fi->fPackList.Add(pi);
1347 fi->fWrkList.Add(
wif);
1349 wif->fPackets.Add(pi);
1353 if (
pe.fProcTime > 0.) {
1354 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs evts:%lld bytes:%lld (rates:%f evt/s, %f MB/s)",
1356 pe.fLatency,
pe.fProcTime,
pe.fEventsProcessed,
pe.fBytesRead,
1359 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs rate:-- evt/s (-- bytes/s)",
1364 Float_t start =
pe.fTimeStamp.GetSec() + 1
e-9*
pe.fTimeStamp.GetNanoSec();
1365 if (
fDebug > 1)
Printf(
" +++ %s Start: %f s",
pe.fEvtNode.Data(), start);
1378 fi->fRateP->Set(
fi->fPackets);
1379 fi->fRatePRemote->Set(
fi->fRPackets);
1380 fi->fMBRateP->Set(
fi->fPackets);
1381 fi->fMBRatePRemote->Set(
fi->fRPackets);
1413 if (
f && !
f->IsZombie()) {
1436 Printf(
"Drawn objects saving disabled");
1451 if (!
f ||
f->IsZombie()) {
1454 Error(
"SetSaveResult",
"could not open file '%s' in mode '%s'", file,
mode);
1465 Printf(
"Drawn objects will be saved in file '%s'", file);
1482 Error(
"EventDist",
"distributions not initialized - do nothing");
1517 hrt1->SetMinimum(0.);
1520 hrt1->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1523 hrt2->SetMinimum(0.);
1526 hrt2->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1549 if (!ww.
IsNull() && ww !=
"*" && ww !=
"all") {
1563 if (
wl && !
wl->FindObject(
wi->GetName()))
continue;
1564 if (
wi->fRateT &&
wi->fRateT->GetN() > 0) {
1565 wi->fRateT->SetNameTitle(
wi->GetName(),
wi->GetTitle());
1567 wi->fRateT->SetLineColor(
ci);
1570 if (
wi->fRateRemoteT &&
wi->fRateRemoteT->GetN() > 0) {
1571 wi->fRateRemoteT->SetNameTitle(
wi->GetName(),
wi->GetTitle());
1573 wi->fRateRemoteT->SetLineColor(
cir);
1576 if (
wi->fMBRateT &&
wi->fMBRateT->GetN() > 0) {
1577 wi->fMBRateT->SetNameTitle(
wi->GetName(),
wi->GetTitle());
1579 wi->fMBRateT->SetLineColor(
ci);
1582 if (
wi->fMBRateRemoteT &&
wi->fMBRateRemoteT->GetN() > 0) {
1583 wi->fMBRateRemoteT->SetNameTitle(
wi->GetName(),
wi->GetTitle());
1585 wi->fMBRateRemoteT->SetLineColor(
cir);
1611 hlt1->SetMinimum(0.);
1614 hlt1->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1615 hlt1->GetYaxis()->SetTitle(
"Latency (s)");
1626 if (!ww.
IsNull() && ww !=
"*" && ww !=
"all") {
1640 if (
wl && !
wl->FindObject(
wi->GetName()))
continue;
1641 if (
wi->fLatencyT) {
1642 wi->fLatencyT->SetNameTitle(
wi->GetName(),
wi->GetTitle());
1643 wi->fLatencyT->SetLineColor(
ci);
1665 Error(
"FileRatePlot",
"file name is mandatory!");
1671 Error(
"FileRatePlot",
"TFileInfo object for '%s' not found!",
fn);
1677 if (out &&
strlen(out) > 0) {
1678 if (!(
fo =
fopen(out,
"w"))) {
1679 Warning(
"FileRatePlot",
"problems creating '%s': logging to stdout", out);
1682 Printf(
" Details logged to %s", out);
1687 Int_t nbins =
fi->fPackList.GetSize() * 2;
1702 for (
kk = 0;
kk < nbins;
kk++) {
1712 TH1F *
hrt1 =
new TH1F(
"rt1",
"Total processing rate (MB/s)", nbins - 1, xbins);
1713 hrt1->SetMinimum(0.);
1715 hrt1->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1717 TH1F *
hrt2 =
new TH1F(
"rt2",
"Number of processing workers", nbins - 1, xbins);
1718 hrt2->SetMinimum(0.);
1721 hrt2->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1723 TH1F *
hrt3 =
new TH1F(
"rt3",
"Total processing events", nbins - 1, xbins);
1724 hrt3->SetMinimum(0.);
1726 hrt3->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1728 TH1F *
hrt4 =
new TH1F(
"rt4",
"Weighted processing rate (MB/s)", nbins - 1, xbins);
1729 hrt4->SetMinimum(0.);
1731 hrt4->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1787 hrt1->SetMinimum(0.);
1790 hrt1->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1793 hrt2->SetMinimum(0.);
1796 hrt2->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1813 if (!
fw.IsNull() &&
fw !=
"*" &&
fw !=
"all") {
1816 while ((
fw.Tokenize(
w,
from,
","))) {
1828 if (
fi->fRateP &&
fi->fRateP->GetN() > 0) {
1829 fi->fRateP->SetNameTitle(
fi->GetName(),
fi->GetTitle());
1831 fi->fRateP->SetLineColor(
ci);
1834 if (
fi->fRatePRemote &&
fi->fRatePRemote->GetN() > 0) {
1835 fi->fRatePRemote->SetNameTitle(
fi->GetName(),
fi->GetTitle());
1837 fi->fRatePRemote->SetLineColor(
cir);
1840 if (
fi->fMBRateP &&
fi->fMBRateP->GetN() > 0) {
1841 fi->fMBRateP->SetNameTitle(
fi->GetName(),
fi->GetTitle());
1843 fi->fMBRateP->SetLineColor(
ci);
1846 if (
fi->fMBRatePRemote &&
fi->fMBRatePRemote->GetN() > 0) {
1847 fi->fMBRatePRemote->SetNameTitle(
fi->GetName(),
fi->GetTitle());
1849 fi->fMBRatePRemote->SetLineColor(
cir);
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char mx
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
R__EXTERN TStyle * gStyle
R__EXTERN TSystem * gSystem
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
void Print(Option_t *option="") const override
Default print for collections, calls Print(option, 1).
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
Describe directory structure in memory.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
void Close(Option_t *option="") override
Close a file.
A TGraph is an object made of two arrays X and Y with npoints each.
1-D histogram with a float per channel (see TH1 documentation)
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual void SetMinimum(Double_t minimum=-1111)
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
2-D histogram with a float per channel (see TH1 documentation)
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
TObject * FindObject(const char *name) const override
Find object using its name.
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual const char * GetClassName() const
void Clear(Option_t *option="") override
Remove all objects from the list.
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
void Add(TObject *obj) override
The TNamed class is the base class for all named ROOT classes.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
Collectable string class.
Mother of all ROOT objects.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
R__ALWAYS_INLINE Bool_t IsZombie() const
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
@ kInvalidObject
if object ctor succeeded but object should not be used
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
The most important graphics class in the ROOT system.
void Print(Option_t *opt="") const override
This method must be overridden when a class wants to print itself.
Int_t Compare(const TObject *o) const override
Compare abstract method.
TFileInfo(const char *name, const char *srv)
TPackInfo(const char *ord, const char *host)
void Print(Option_t *opt="") const override
Print TNamed name and title.
TPackInfo(const char *ord, const char *host, Float_t start, Float_t stop, Long64_t sz, Double_t mbr)
void Print(Option_t *="") const override
This method must be overridden when a class wants to print itself.
TWrkEntry(Double_t xx, Double_t er, Double_t mbr, Double_t pt)
void Print(Option_t *opt="") const override
Print TNamed name and title.
TWrkInfoFile(const char *ord, const char *name)
Int_t Compare(const TObject *o) const override
Compare two TNamed objects.
void Print(Option_t *="") const override
Print TNamed name and title.
Long64_t fEventsProcessed
TWrkInfo(const char *ord, const char *name)
void FileRatePlot(const char *fns=0)
Show MB processing rate plot per file vs time.
void FileProcPlot(const char *fn, const char *out=0)
Show event processing or MB processing rate plot vs time.
void FillFileInfo(Bool_t force=kFALSE)
Fill basic worker info; if 'force' rescan the TTree even already done.
void SetDebug(Int_t d=0)
Static setter for the verbosity level.
TProofPerfAnalysis(const char *perffile, const char *title="", const char *treename="PROOF_PerfStats")
Constructor: open the file and attach to the tree.
void PrintWrkInfo(Int_t showlast=10)
Print information for all or the slowest showlast workers.
void LatencyPlot(const char *wrks=0)
Show event processing or MB processing rate plot vs time Create the histograms.
void WorkerActivity()
Measure the worker activity.
void FileDist(Bool_t writedet=kFALSE)
Analyse the file distribution.
Int_t SetSaveResult(const char *file="results.root", Option_t *mode="RECREATE")
Set save result mode and validate 'file' according to 'mode'.
void GetWrkFileList(TList *wl, TList *sl)
Fill file info.
void EventDist()
Display event and packet distribution.
TString GetCanvasTitle(const char *t)
If defined, add '- <this_title>' to the canvas title 't'.
static void SetgDebug(Bool_t on=kTRUE)
Static setter for the verbosity level.
Int_t CompareOrd(const char *ord1, const char *ord2)
Return -1 if ord1 comes before ord2, 0 i they are equal, 1 if ord1 comes after ord2.
void LoadTree(TDirectory *dir)
Load tree fTreeName from directory 'dir'.
void DoDraw(TObject *o, Option_t *opt="", const char *name=0)
Draw object 'o' with options 'opt' Save it with 'name' if in saving mode (see SetSaveResult)
void PrintFileInfo(Int_t showlast=10, const char *opt="", const char *out=0)
Print information for all or the slowest showlast workers.
void FillFileDistOneSrv(TH1F *hx, Bool_t wdet=kFALSE)
Fill file info when there is only one file server.
void FillWrkInfo(Bool_t force=kFALSE)
Fill basic worker info; if 'force' rescan the TTree even already done.
void Summary(Option_t *opt="", const char *out="")
Print summary of query.
~TProofPerfAnalysis() override
Destructor: detach the tree and close the file.
void RatePlot(const char *wrks=0)
Show event processing or MB processing rate plot vs time.
void FillFileDist(TH1F *hf, TH1F *hb, TH2F *hx, Bool_t wdet=kFALSE)
Fill file info.
Regular expression class.
void Add(TObject *obj) override
Add object in sorted list.
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
const char * Data() const
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Remove(Ssiz_t pos)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=nullptr)
Redirect standard output (stdout, stderr) to the specified file.
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual TString GetDirName(const char *pathname)
Return the directory name in pathname.
A TTree represents a columnar dataset.
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=nullptr)
Change branch address, dealing with clone trees properly.
virtual Long64_t GetEntries() const
This class represents a WWW compatible URL.
const char * GetHost() const
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
Sort the n elements of the array a of generic templated type Element.