"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "root/test/ProofBench/README" of archive root_v5.20.00.win32.tar.gz:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 Setup for a benchmark
    2 =====================
    3 
    4 See $ROOTSYS/README/README.PROOF for instructions to install
    5 and configure PROOF
    6 
    7 Create a local libEvent.so
    8 
    9 % (cd $ROOTSYS/test; make libEvent.so)
   10 
   11 Create the PAR file
   12 
   13 % ./make_event_par.sh
   14 
   15 Start root
   16 
   17 % root
   18 
   19 Start PROOF
   20 
   21 root[] TProof::Open("")
   22 
   23 Create the files on the nodes in the cluster, the first
   24 argument is the directory the files will reside in. The
   25 second argument is the number of events in each file.
   26 The last argument is the number of files on each node.
   27 (not the number of files per slave!)
   28 
   29 root [] .x make_event_trees.C("/data1/tmp", 100000, 4)
   30 
   31 Create the TDSet for these files. In this example we have two
   32 slaves on one node, we ask for one file per slave:
   33 
   34 root [] .L make_tdset.C
   35 root [] TDSet *d = make_tdset("/data1/tmp",1)
   36 root [] d->Print("a")
   37 OBJ: TDSet      type TTree      EventTree       in /    elements 2
   38 TDSetElement file='root://gluon.local//data1/tmp/event_tree_gluon.local_1.root' dir='' obj='' first=0 num=-1
   39 TDSetElement file='root://gluon.local//data1/tmp/event_tree_gluon.local_3.root' dir='' obj='' first=0 num=-1
   40 
   41 Test the system with a simple command
   42 
   43 root [] d->Draw("fTemperature","1")
   44 
   45 You are now ready to run the benchmark!
   46 
   47 
   48 Performance Monitoring
   49 ======================
   50 
   51 Select which performance information should be gathered.
   52 To enable the filling of performance histograms in the master do:
   53 
   54 root[] gEnv->SetValue("Proof.StatsHist",1);
   55 
   56 or add a line to your ".rootrc" or "system.rootrc" file.
   57 The histograms will be returned to the client in the
   58 output list. The histograms are:
   59 
   60 Name                 Type     Description
   61 ----                 ----     -----------
   62 
   63 PROOF_PacketsHist    TH1D     "Packets processed per Slave"
   64 
   65 PROOF_EventsHist     TH1D     "Events processed per Slave"
   66 
   67 PROOF_NodeHist       TH1D     "Slaves per Fileserving Node"
   68                               dynamically updated, use in Feedback.
   69 
   70 PROOF_LatencyHist    TH2D     "GetPacket Latency per Slave"
   71 
   72 PROOF_ProcTimeHist   TH2D     "Packet Processing Time per Slave"
   73 
   74 PROOF_CpuTimeHist    TH2D     "Packet CPU Time per Slave
   75 
   76 
   77 To enable the creation of the trace tree and store
   78 performance events in the master server do:
   79 
   80 root[] gEnv->SetValue("Proof.StatsTrace",1);
   81 
   82 to also record the detailed performance events in the slaves
   83 call in addition:
   84 
   85 root[] gEnv->SetValue("Proof.SlaveStatsTrace",1);
   86 
   87 or add them to either your ".rootrc" or "system.rootrc"
   88 A single Tree named "PROOF_PerfStats" will be returned to the client
   89 in the output list.
   90 
   91 The script SavePerfInfo.C can be used to save the
   92 current results in a .root file, e.g.
   93 
   94 root[] .X SavePerfInfo.C("perf_data.root")
   95 
   96 Run the Benchmark
   97 =================
   98 
   99 The benchmark provides 3 selectors, each reading a different amount
  100 of data:
  101 
  102 EventTree_NoProc.C   - Reads no data
  103 EventTree_ProcOpt.C  - Reads 25% of the data
  104 EventTree_Proc.C     - Reads all the data
  105 
  106 First make sure the PAR file is up to date and enabled
  107 
  108 root[] gProof->UploadPackage("event.par")
  109 root[] gProof->EnablePackage("event")
  110 
  111 Request dynamic feedback of some of the monitoring histograms
  112 
  113 root[] gProof->AddFeedback("PROOF_ProcTimeHist")
  114 root[] gProof->AddFeedback("PROOF_LatencyHist")
  115 root[] gProof->AddFeedback("PROOF_EventsHist")
  116 
  117 Create a TDrawFeedback object to automatically draw these histograms
  118 
  119 root[] TDrawFeedback fb(gProof)
  120 
  121 And request the timing of each command
  122 
  123 root[] gROOT->Time()
  124 
  125 Running one of the provided selectors is straight forward,
  126 using the TDSet that was created earlier:
  127 
  128 root[] d->Process("EventTree_Proc.C","")
  129 
  130 The monitoring histograms should appear shortly after the
  131 processing starts. The resulting histogram from the selector
  132 will also be drawn at the end.
  133 
  134 
  135 Extra Scripts Included
  136 ======================
  137 
  138 The script Draw_Time_Hists.C can be used to create the timing histograms
  139 from the trace tree and draw them on screen.
  140 
  141 The script Run_Node_Tests.C can be used to run a full sequence of
  142 tests. The results can be presented graphically using Draw_PerfProfiles.C.
  143 
  144 The script Draw_Slave_Access.C will draw a graph depicting the number
  145 of slaves accessing a file serving node as a function of time.