"SfR Fresh" - the SfR Freeware/Shareware Archive 
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.