26#include "RConfigure.h"
82 Double_t res = par[0] + par[1] * xx[0];
91 Double_t res = par[0] + par[1] * xx[0] + par[2] * xx[0] * xx[0];
100 Double_t res = par[0] / xx[0] + par[1];
109 Double_t res = par[0] / xx[0] + par[1] + par[2] * xx[0];
118 Double_t sat = par[0] / par[1] * (xx[0] * par[1] / par[2] - 1.);
119 if (xx[0] < par[2] / par[1]) sat = 0.;
120 Double_t res = par[0] * xx[0] / (1. + sat);
135 Double_t rio = par[0] / par[3] * xx[0];
136 if (xx[0] > par[3]) rio = par[0];
142 Double_t res = 1. / (1./par[4] + 1./rio + 1./rcpu);
193 Error(
"TProofBench",
"specifying a PROOF master url is mandatory - cannot continue");
197 Error(
"TProofBench",
"could not open a valid PROOF session - cannot continue");
206 Error(
"TProofBench",
"dynamic mode: you must specify the max number of workers");
214 Error(
"TProofBench",
"dynamic mode: wrong specification of the max number of"
215 " workers ('%s')",
n->GetTitle());
222 Error(
"TProofBench",
"wrong max number of workers ('%d')",
fNumWrkMax);
240 Warning(
"TProofBench",
"problems opening '%s' - ignoring: use SetOutFile to try"
241 " again or with another file", outfile);
268 const char *
mode = 0;
275 Warning(
"OpenOutFile",
"problems opening '%s' - ignoring: use SetOutFile to try"
281 if (!strcmp(
mode,
"RECREATE")) {
308 const char *lite = (
fProof->IsLite()) ?
"-lite" :
"";
309 fOutFileName.Form(
"proofbench-%s%s-%dw-%d-%.2d%.2d.root",
317 Warning(
"SetOutFile",
"problems opening '%s' - ignoring: use SetOutFile to try"
318 " again or with another file", outfile);
340 Error(
"RunCPU",
"problems opening '%s' to save the result",
fOutFileName.Data());
369 Error(
"RunCPUx",
"problems opening '%s' to save the result",
fOutFileName.Data());
413 if (!fout || (fout && fout->
IsZombie())) {
414 ::Error(
"DrawCPU",
"could not open file '%s' ...", outfile);
419 TString description(
"<not available>");
421 if (nmdesc) description = nmdesc->
GetTitle();
431 const char *dirn = (isX) ?
"RunCPUx" :
"RunCPU";
434 ::Error(
"DrawCPU",
"could not find directory '%s' ...", dirn);
442 const char *lx = (isX) ?
"_x" :
"";
443 const char *ln = (isNorm) ?
"Norm" :
"Prof";
444 hprofn.
Form(
"%s%s_CPU_QR_Evts", ln, lx);
445 hmaxn.
Form(
"%s%s_CPU_PS_MaxEvts", ln, lx);
448 Double_t ami = -1., amx = -1., mmi = -1., mmx = -1.;
449 Int_t kamx = -1, kmmx = -1, nbins = -1;
459 ::Error(
"DrawCPU",
"could not find '%s' ...", hprofn.
Data());
473 ::Warning(
"DrawCPU",
"could not find '%s': feature added in 5.34/11", hmaxn.
Data());
482 if (mmx > ymx) ymx = mmx;
483 if ((ymi > 0 && mmi < ymi) || (ymi < 0.)) ymi = mmi;
489 TCanvas *cpu =
new TCanvas(
"cpu",
"Rate vs wrks",204,69,1050,502);
490 cpu->
Range(-3.106332,0.7490716,28.1362,1.249867);
524 if (verbose) grav->
Print();
526 leg->AddEntry(grav,
"Average",
"P");
537 if (verbose) grmx->
Print();
539 grmx->
Draw(
"lpSAME");
543 leg->AddEntry(grmx,
"Maximum",
"P");
552 if (nbins > 5) xmi = 1.5;
562 if (verbose)
fgFp1n->Print();
563 normrate =
fgFp1n->GetParameter(1);
565 fgFp1->SetParameter(0, 0.);
568 if (verbose)
fgFp1->Print();
569 normrate =
fgFp1->Derivative(1.);
571 }
else if (dofit == 2) {
575 fgFp2n->SetParameter(2, 0.);
577 if (verbose)
fgFp2n->Print();
578 normrate =
fgFp2n->GetParameter(1);
580 fgFp2->SetParameter(0, 0.);
582 fgFp2->SetParameter(2, 0.);
584 if (verbose)
fgFp2->Print();
585 normrate =
fgFp2->Derivative(1.);
592 fgFp3n->SetParameter(0, 0.);
596 if (verbose)
fgFp3n->Print();
599 fgFp3->SetParameter(0, 0.);
600 fgFp3->SetParameter(1, 0.);
603 if (verbose)
fgFp3->Print();
604 normrate =
fgFp3->Derivative(1.);
610 printf(
"* ************************************************************ *\n");
612 printf(
"* Cluster: %s\n", description.
Data());
613 printf(
"* Performance measurement from scalability plot: *\n");
615 printf(
"* rate max: %.3f\tmegaRNGPS (@ %d workers)\n", ymx/1000000, kmx);
617 printf(
"* per-worker rate: %.3f\tmegaRNGPS \n", normrate/1000000);
618 printf(
"* ************************************************************ *\n");
620 printf(
"* ************************************************************ *\n");
622 printf(
"* Cluster: %s\n", description.
Data());
624 printf(
"* Per-worker rate from normalized plot: %.3f\tmegaRNGPS\n", normrate/1000000);
625 printf(
"* ************************************************************ *\n");
643 if (!
d || !pfn || (pfn && strlen(pfn) <= 0)) {
644 ::Error(
"TProofBench::GetGraph",
"directory or name not defined!");
648 TList *keylist =
d->GetListOfKeys();
651 while ((key = (
TKey *) nxk())) {
659 ::Error(
"TProofBench::GetGraph",
"TProfile for '%s' not found in directory '%s'", pfn,
d->GetName());
672 for (
Int_t k = 1;k <= nb; k++) {
682 if (yy < ymi) ymi = yy;
683 if (yy > ymx) { ymx = yy; kmx = k; }
685 gr->SetPoint(k-1, xx, yy);
686 gr->SetPointError(k-1,
ex,
ey);
700 fgFp1->SetParNames(
"offset",
"slope");
705 fgFp1n->SetParNames(
"decay",
"norm rate");
710 fgFp2->SetParNames(
"offset",
"slope",
"deviation");
715 fgFp2n->SetParNames(
"decay",
"norm rate",
"deviation");
720 fgFp3->SetParNames(
"offset",
"slope real",
"slope hyper");
725 fgFp3n->SetParNames(
"offset",
"slope real",
"slope hyper");
730 fgFio->SetParNames(
"R1",
"RIO",
"TotIO");
734 fgFioV->SetParNames(
"rio",
"b1",
"b2",
"nc",
"ri");
764 if (pp.IsNull()) pp =
gSystem->WorkingDirectory();
766 if (
gSystem->GetPathInfo(pp.Data(), st) != 0) {
767 ::Error(
"TProofBench::GetPerfSpecs",
"path '%s' could not be stat'ed - abort", pp.Data());
773 void *dirp =
gSystem->OpenDirectory(pp.Data());
775 ::Error(
"TProofBench::GetPerfSpecs",
"directory path '%s' could nto be open - abort", pp.Data());
779 while ((ent =
gSystem->GetDirEntry(dirp))) {
780 if (!strcmp(ent,
".") || !strcmp(ent,
".."))
continue;
781 fn.
Form(
"%s/%s", pp.Data(), ent);
782 if (
gSystem->GetPathInfo(fn.
Data(), st) != 0)
continue;
784 fn +=
"?filetype=raw";
788 if (!
f->ReadBuffer(rr, 4)) {
789 if (!strncmp(rr,
"root", 4)) {
793 TString desc(
"<no decription>");
795 if (nmdesc) desc = nmdesc->
GetTitle();
796 if (
f->GetListOfKeys()->FindObject(
"RunCPU"))
798 if (
f->GetListOfKeys()->FindObject(
"RunCPUx"))
801 ::Warning(
"TProofBench::GetPerfSpecs",
"problems opening '%s'", fn.
Data());
808 ::Error(
"TProofBench::GetPerfSpecs",
809 "path '%s' not a regular file nor a directory - abort", pp.Data());
818 fn +=
"?filetype=raw";
822 if (!(
f->ReadBuffer(rr, 4))) {
823 if (!strncmp(rr,
"root", 4)) {
826 if (
f->GetListOfKeys()->FindObject(
"RunCPU")) oo =
"std:";
827 if (
f->GetListOfKeys()->FindObject(
"RunCPUx")) oo =
"stdx:";
832 emsg.
Form(
"path '%s' does not contain the relevant dirs - abort", fn.
Data());
835 emsg.
Form(
"path '%s' cannot be open - abort", fn.
Data());
838 emsg.
Form(
"'%s' is not a ROOT file - abort", fn.
Data());
841 emsg.
Form(
"could not read first 4 bytes from '%s' - abort", fn.
Data());
845 emsg.
Form(
"path '%s' cannot be open in raw mode - abort", fn.
Data());
848 emsg.
Form(
"path '%s' cannot be stated - abort", fn.
Data());
851 ::Error(
"TProofBench::GetPerfSpecs",
"%s", emsg.
Data());
862 }
else if (filels.
GetSize() > 1) {
865 Printf(
"Several possible files found:");
871 if (
a.IsNull() ||
a[0] ==
'\n')
a.Form(
"%d", idx-1);
877 ::Error(
"TProofBench::GetPerfSpecs",
"chosen index '%d' does not exist - abort", idx);
882 ::Error(
"TProofBench::GetPerfSpecs",
883 "path '%s' is a directory but no ROOT file found in it - abort", pp.Data());
901 Error(
"RunDataSet",
"problems opening '%s' to save the result",
fOutFileName.Data());
935 Error(
"RunDataSetx",
"problems opening '%s' to save the result",
fOutFileName.Data());
979 const char *opt,
const char *
type,
Bool_t verbose,
984 if (!fout || (fout && fout->
IsZombie())) {
985 ::Error(
"DrawDataSet",
"could not open file '%s' ...", outfile);
990 TString description(
"<not available>");
992 if (nmdesc) description = nmdesc->
GetTitle();
1001 const char *dirn = (isX) ?
"RunDataReadx" :
"RunDataRead";
1004 ::Error(
"DrawCPU",
"could not find directory '%s' ...", dirn);
1012 const char *lx = (isX) ?
"_x" :
"";
1013 const char *ln = (isNorm) ?
"Norm" :
"Prof";
1015 if (
type && !strcmp(
type,
"evts")) {
1016 hprofn.
Form(
"%s%s_DataRead_QR_Evts", ln, lx);
1017 hmaxn.
Form(
"%s%s_DataRead_PS_MaxEvts", ln, lx);
1020 hprofn.
Form(
"%s%s_DataRead_QR_IO", ln, lx);
1021 hmaxn.
Form(
"%s%s_DataRead_PS_MaxIO", ln, lx);
1025 Double_t ami = -1., amx = -1., mmi = -1., mmx = -1.;
1026 Int_t kamx = -1, kmmx = -1, nbins = -1;
1036 ::Error(
"DrawCPU",
"could not find '%s' ...", hprofn.
Data());
1051 ::Warning(
"DrawCPU",
"could not find '%s': feature added in 5.34/11", hmaxn.
Data());
1060 if (mmx > ymx) ymx = mmx;
1061 if ((ymi > 0 && mmi < ymi) || (ymi < 0.)) ymi = mmi;
1067 TCanvas *cpu =
new TCanvas(
"dataset",
"Rate vs wrks",204,69,1050,502);
1068 cpu->
Range(-3.106332,0.7490716,28.1362,1.249867);
1070 TH1F *hgr =
new TH1F(
"Graph-DataSet",
" Data Read speed-up", nbins*4,
xmin,
xmax);
1106 if (verbose) grav->
Print();
1108 leg->AddEntry(grav,
"Average",
"P");
1119 if (verbose) grmx->
Print();
1121 grmx->
Draw(
"lpSAME");
1125 leg->AddEntry(grmx,
"Maximum",
"P");
1135 if (nbins > 5) xmi = 1.5;
1144 if (verbose)
fgFio->Print();
1145 normrate =
fgFio->Derivative(1.);
1146 }
else if (dofit > 1) {
1150 fgFioV->SetParameter(0, 20.);
1153 fgFioV->SetParameter(3, 4.);
1154 fgFioV->SetParameter(4, 1000.);
1157 if (verbose)
fgFio->Print();
1158 normrate =
fgFioV->Derivative(1.);
1164 printf(
"* ************************************************************ *\n");
1166 printf(
"* Cluster: %s\n", description.
Data());
1167 printf(
"* Performance measurement from scalability plot: *\n");
1170 printf(
"* rate max: %.3f\tMB/s (@ %d workers)\n", ymx, kmx);
1172 printf(
"* per-worker rate: %.3f\tMB/s \n", normrate);
1174 printf(
"* rate max: %.3f\tevts/s (@ %d workers)\n", ymx, kmx);
1176 printf(
"* ************************************************************ *\n");
1190 const char *opt,
Bool_t verbose)
1194 if (!fout || (fout && fout->
IsZombie())) {
1195 ::Error(
"DrawEfficiency",
"could not open file '%s' ...", outfile);
1200 TString description(
"<not available>");
1202 if (nmdesc) description = nmdesc->
GetTitle();
1206 const char *dirs[4] = {
"RunCPU",
"RunCPUx",
"RunDataRead",
"RunDataReadx"};
1207 const char *labs[4] = {
"CPU",
"CPU",
"DataRead",
"DataRead"};
1208 Int_t fst = 0, lst = 3;
1211 }
else if (oo ==
"cpux") {
1214 }
else if (oo.BeginsWith(
"data")) {
1215 if (oo.EndsWith(
"x")) {
1223 const char *dirn = 0;
1225 for (
Int_t i = fst;
i <= lst;
i++) {
1233 ::Error(
"DrawEfficiency",
"could not find directory ...");
1241 hprof.
Form(
"Prof_%s_CPU_eff", ln.
Data());
1244 Int_t kmx = -1, nbins = -1;
1250 ::Error(
"DrawEfficiency",
"could not find '%s' ...", hprof.
Data());
1257 TCanvas *cpu =
new TCanvas(
"efficiency",
"efficiency vs wrks",204,69,1050,502);
1258 cpu->
Range(-3.106332,0.7490716,28.1362,1.249867);
1260 TH1F *hgr =
new TH1F(
"Graph-Efficiency",
"CPU effectiveness", nbins*4,
xmin,
xmax);
1275 gr->SetFillColor(1);
1276 gr->SetLineColor(13);
1277 gr->SetMarkerColor(4);
1278 gr->SetMarkerStyle(21);
1279 gr->SetMarkerSize(1.2);
1280 gr->SetHistogram(hgr);
1282 if (verbose)
gr->Print();
1286 printf(
"* ************************************************************ *\n");
1288 printf(
"* Cluster: %s\n", description.
Data());
1289 printf(
"* CPU effectiveness measurement: *\n");
1291 printf(
"* effectiveness max: %.3f (@ %d workers)\n", ymx, kmx);
1293 printf(
"* ************************************************************ *\n");
1307 return fDS ?
fDS->ReleaseCache(dset) : -1;
1319 return fDS ?
fDS->RemoveFiles(dset) : -1;
1346 if (dset && strlen(dset) > 0)
fDataSet = dset;
1354 Info(
"MakeDataSet",
"uploading '%s' ...", par.
Data());
1355 if (
fProof->UploadPackage(par) != 0) {
1356 Error(
"MakeDataSet",
"problems uploading '%s' - cannot continue", par.
Data());
1366 Error(
"MakeDataSet",
"you should load the class '%s' before running the benchmark",
fDataGenSel.Data());
1374 Info(
"MakeDataSet",
"Uploading '%s' ...", par.
Data());
1375 if (
fProof->UploadPackage(par) != 0) {
1376 Error(
"MakeDataSet",
"problems uploading '%s' - cannot continue", par.
Data());
1379 Info(
"MakeDataSet",
"Enabling '%s' ...", par.
Data());
1380 if (
fProof->EnablePackage(par) != 0) {
1381 Error(
"MakeDataSet",
"problems enabling '%s' - cannot continue", par.
Data());
1395 if (fnroot && strlen(fnroot) > 0) {
1405 fProof->SetParameter(
"PROOF_BenchmarkBaseDir", bdir.
Data());
1413 TIter nxnd(nodesmap);
1417 while ((obj = nxnd()) != 0) {
1418 if ((wli =
dynamic_cast<TList *
>(nodesmap->
GetValue(obj)))) {
1432 filesmap->
SetName(
"PROOF_FilesToProcess");
1433 fProof->AddInput(filesmap);
1438 fProof->SetParameter(
"PROOF_Packetizer",
"TPacketizerFile");
1439 Int_t oldnotass = -1;
1441 fProof->SetParameter(
"PROOF_ProcessNotAssigned", (
Int_t)0);
1444 Long64_t ne = (nevt > 0) ? nevt : 30000;
1445 fProof->SetParameter(
"PROOF_BenchmarkNEvents", ne);
1446 fProof->SetParameter(
"PROOF_BenchmarkRegenerate",
Int_t(regenerate));
1448 fProof->DeleteParameters(
"PROOF_BenchmarkNEvents");
1449 fProof->DeleteParameters(
"PROOF_BenchmarkRegenerate");
1450 fProof->DeleteParameters(
"PROOF_BenchmarkBaseDir");
1454 fProof->SetParameter(
"PROOF_Packetizer", oldpack);
1456 fProof->DeleteParameters(
"PROOF_Packetizer");
1457 if (oldnotass != -1)
1458 fProof->SetParameter(
"PROOF_ProcessNotAssigned", oldnotass);
1460 fProof->DeleteParameters(
"PROOF_ProcessNotAssigned");
1463 if (
fProof->GetInputList())
fProof->GetInputList()->Remove(filesmap);
1470 if (
fProof->GetOutputList()) {
1471 fProof->GetOutputList()->Print();
1473 while ((obj = nxout())) {
1489 Warning(
"MakeDataSet",
"problems registering '%s'", dset);
1491 Warning(
"MakeDataSet",
"dataset '%s' is empty!", dset);
1494 Warning(
"MakeDataSet",
"PROOF output list is empty!");
1504 Warning(
"MakeDataSet",
"dataset '%s' was not generated!",
fDataSet.Data());
1522 Error(
"CopyDataSet",
"no PROOF found - cannot continue");
1525 if (!dset || (dset && !
fProof->ExistsDataSet(dset))) {
1526 Error(
"CopyDataSet",
"dataset '%s' does not exist", dset);
1529 if (!dsetdst || (dsetdst &&
fProof->ExistsDataSet(dsetdst))) {
1530 if (isatty(0) != 0 && isatty(1) != 0) {
1531 Printf(
"Target dataset '%s' exists already:"
1532 " do you want to remove it first?", dsetdst);
1533 const char *
a = Getline(
"[Y,n] ");
1535 if (
a[0] ==
'Y' ||
a[0] ==
'y' ||
a[0] ==
'\n') {
1536 Info(
"CopyDataSet",
"removing dataset '%s' ...", dsetdst);
1542 Error(
"CopyDataSet",
"destination dataset '%s' does already exist: remove it first", dsetdst);
1550 Error(
"CopyDataSet",
"problems retrieving TFileCollection for dataset '%s'", dset);
1559 Info(
"CopyDataSet",
"adding info for file '%s'", fn.
Data());
1566 if (
fDS->CopyFiles(dset, destdir) != 0) {
1567 Error(
"CopyDataSet",
"problems copying files of dataset '%s' to dest dir '%s'", dset, destdir);
1575 if (!(
fProof->RegisterDataSet(dsetdst, fcn,
"OT"))) {
1576 Error(
"CopyDataSet",
"problems registering and verifying '%s'", dsetdst);
1593 Error(
"SetProofDS",
"trying to set an invalid PROOF instance");
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 Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
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
const char *const kPROOF_BenchDataSelPar
const char *const kPROOF_BenchParDir
const char *const kPROOF_BenchSelDataGenDef
Double_t funp2(Double_t *xx, Double_t *par)
Simple polynomial 2nd degree.
Double_t funcpuv(Double_t *xx, Double_t *par)
Function with varying Rcpu.
Double_t funcpuvn(Double_t *xx, Double_t *par)
Function with varying Rcpu normalized.
Double_t funp1n(Double_t *xx, Double_t *par)
Normalized 1st degree.
Double_t funio(Double_t *xx, Double_t *par)
I/O saturated rate function.
Double_t funiov(Double_t *xx, Double_t *par)
I/O saturated rate function with varying Rcpu.
Double_t funp1(Double_t *xx, Double_t *par)
Simple polynomial 1st degree.
Double_t funp2n(Double_t *xx, Double_t *par)
Normalized 2nd degree.
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
R__EXTERN TStyle * gStyle
Bool_t R_ISREG(Int_t mode)
Bool_t R_ISDIR(Int_t mode)
R__EXTERN TSystem * gSystem
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
virtual void SetLabelSize(Float_t size=0.04)
Set size of axis labels.
virtual void SetTitleSize(Float_t size=0.04)
Set size of axis title.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
const char * GetTitle() const override
Returns title of object.
void CenterTitle(Bool_t center=kTRUE)
Center axis title.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
void SetName(const char *name)
const char * GetName() const override
Return name of this collection.
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.
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Int_t GetDate() const
Return date in form of 19971224 (i.e. 24/12/1997)
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
Describe directory structure in memory.
Class that contains a list of TFileInfo's and accumulated meta data information about its entries.
Int_t Update(Long64_t avgsize=-1)
Update accumulated information about the elements of the collection (e.g.
Long64_t GetNFiles() const
void Print(Option_t *option="") const override
Prints the contents of the TFileCollection.
Int_t Add(TFileInfo *info)
Add TFileInfo to the collection.
Class describing a generic file including meta information.
TUrl * GetCurrentUrl() const
Return the current url.
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
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 TGraphErrors is a TGraph with error bars.
void Print(Option_t *chopt="") const override
Print graph and errors values.
void Draw(Option_t *chopt="") override
Draw this graph with its current attributes.
virtual void SetHistogram(TH1F *h)
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 GetNbinsX() const
virtual void SetMaximum(Double_t maximum=-1111)
virtual void SetMinimum(Double_t minimum=-1111)
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.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Book space in a file, create I/O buffers, to fill them, (un)compress them.
This class displays a legend box (TPaveText) containing several legend entries.
void Add(TObject *obj) override
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
void Add(TObject *obj) override
This function may not be used (but we need to provide it since it is a pure virtual in TCollection).
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
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.
Collectable string class.
virtual const char * GetName() const
Returns name of object.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
R__ALWAYS_INLINE Bool_t IsZombie() const
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.
TObject()
TObject constructor.
@ kInvalidObject
if object ctor succeeded but object should not be used
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2) override
Set world coordinate system for the pad.
Double_t GetBinContent(Int_t bin) const override
Return bin content of a Profile histogram.
Double_t GetBinError(Int_t bin) const override
Return bin error of a Profile histogram.
Handle operations on datasets used by ProofBench.
CPU-intensive PROOF benchmark test generates events and fill 1, 2, or 3-D histograms.
I/O-intensive PROOF benchmark test reads in event files distributed on the cluster.
Steering class for PROOF benchmarks.
static void AssertFittingFun(Double_t mi, Double_t mx)
Make sure that the fitting functions are defined.
void CloseOutFile()
Close output file.
Int_t CopyDataSet(const char *dset, const char *dsetdst, const char *destdir)
Copy the files of dataset 'dset' to 'destdir' and create a new dataset named 'dsetdst' decribing them...
static void DrawCPU(const char *outfile, const char *opt="std:", Bool_t verbose=kFALSE, Int_t dofit=0, Int_t n0=-1, Int_t n1=-1)
Draw the CPU speedup plot.
Int_t RunCPUx(Long64_t nevents=-1, Int_t start=-1, Int_t stop=-1)
Perform the CPU run scanning over the number of workers per node Return 0 on success,...
Int_t SetOutFile(const char *outfile, Bool_t verbose=kTRUE)
Set the output file Return 0 on success, -1 on error.
Int_t MakeDataSet(const char *dset=0, Long64_t nevt=-1, const char *fnroot="event", Bool_t regenerate=kFALSE)
Create the largest dataset for the run.
Int_t RunDataSetx(const char *dset="BenchDataSet", Int_t start=1, Int_t stop=-1)
Perform a test using dataset 'dset' scanning over the number of workers per node.
Int_t RunDataSet(const char *dset="BenchDataSet", Int_t start=1, Int_t stop=-1, Int_t step=1)
Perform a test using dataset 'dset' Return 0 on success, -1 on error Open the file for the results.
static void DrawDataSet(const char *outfile, const char *opt="std:", const char *type="mbs", Bool_t verbose=kFALSE, Int_t dofit=0, Int_t n0=-1, Int_t n1=-1)
Draw the CPU speedup plot.
TProofBenchRunCPU * fRunCPU
static void GetPerfSpecs(const char *path=".", Int_t degfit=1)
Get performance specs.
static void DrawEfficiency(const char *outfile, const char *opt="", Bool_t verbose=kFALSE)
Draw the efficiency plot.
void SetProofDS(TProof *p)
Set the PROOF instance to be used for dataset operations, like releasing cache ......
Int_t RemoveDataSet(const char *dset)
Physically remove the dataset 'dset', i.e.
Int_t OpenOutFile(Bool_t wrt=kFALSE, Bool_t verbose=kTRUE)
Set the otuput file Return 0 on success, -1 on error.
TProofBenchRunDataRead * fRunDS
Int_t RunCPU(Long64_t nevents=-1, Int_t start=-1, Int_t stop=-1, Int_t step=-1)
Perform the CPU run Return 0 on success, -1 on error.
Int_t ReleaseCache(const char *dset)
Release memory cache for dataset 'dset' Return 0 on success, -1 on error.
TProofBench(const char *url, const char *outfile="<default>", const char *proofopt=0)
Constructor: check PROOF and load selectors PAR.
~TProofBench() override
Destructor.
static TGraphErrors * GetGraph(TDirectory *d, const char *pfn, Int_t &nb, Double_t &xmi, Double_t &xmx, Double_t &ymi, Double_t &ymx, Int_t &kmx, TProfile *&pf)
Get from TDirectory 'd' the TProfile named 'pfn' and create the graph.
PROOF worker node information.
TMap * GetMapOfNodes() const
This class controls a Parallel ROOT Facility, PROOF, cluster.
TObject * GetParameter(const char *par) const
Get specified parameter.
static TProof * Open(const char *url=0, const char *conffile=0, const char *confdir=0, Int_t loglevel=0)
Start a PROOF session on a specific cluster.
static const TList * GetEnvVars()
Get environemnt variables.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
const char * GetName() const override
Returns name of object.
A sorted doubly linked list.
void Add(TObject *obj) override
Add object in sorted list.
Int_t Atoi() const
Return integer value of string.
const char * Data() const
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
TString & ReplaceAll(const TString &s1, const TString &s2)
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
The TTimeStamp encapsulates seconds and ns since EPOCH.
const char * AsString(const Option_t *option="") const
Return the date & time as a string.
This class represents a WWW compatible URL.
const char * GetFile() const
const char * GetHost() const
const char * GetProtocol() const
Int_t Compare(const TObject *o) const override
Compare abstract method.
fileDesc(const char *n, const char *o, Long_t t, const char *d)