PROOF System
- Added functionality
- Added interface to simplify the creation of the performance
tree: two new methods TProof::SetPerfTree("<file>") and
TProof::SavePerfTree("<file>", "<queryref>") allow set
and/or save the information to a given file path. The perfomance tree
settim=ngs are diabled after each query, so they need to be enabled
each time. See also Creating
and saving the performance tree.
- Add support for a command line test run of 'proofserv'; this is
useful to test that the environment is setup correctly.
- In TProofBench::DrawCPU, add possibility to extract of a couple
of numbers supposed to give an idea of the computing specs of the
cluster being benchmarked. These are the maximum rate for the standard
CPU intensive task and the normalized, per worker, rate. Both are
expressed in RNGPS (RaNdom Generation Per Second). See also Getting
the performance specs .
- Add class TProofPerfAnalysis collecting a set of tools to
analyse the performance tree. See Analysing
the performance tree .
- Add support for selector-by-object processing in PROOF. The
selector object, created and configured locally by the user, is added
to the input list and recuperated from there on the worker machines for
processing. Any input list setting in the selector itself is not
streamed but temporarly moved to then standard input list, so that user
can use the selector input list as container of processing information
if they find convenient to do so. Process(...) methods with the file
name argument replaced by 'TSelector *' have introduced where
relevant (TProof, TProofPlayer and their derivatives, TDSet).
- Add the possibility to force submerging at node level, i.e. one
submerger per physical machine. In this way the network traffic can be
minimized, for example when merging large output files. The new feature
is enabled by setting the Int_t parameter 'PROOF_MergersByHost' (or the
directive 'Proof.MergersByHost') to a non-null value.
- Simplify enabling of basic feedback. In TProof::Process, add
support for switches "fb=name1,name2,name3,... " or
"feedback=name1,name2,name3,... " in the option field. This enables
feedback for the specified objects, creating a TDrawFeedback object
attached to the session. Feedback for the specified objects is disabled
at the end of the query and the created TDrawFeedback is destroyed. The
special name 'stats' enables the three feedback histograms required by
a dedicated new class TStatsFeedback, and uses a TStatsFeedback instead
of TDrawFeedback to display the feedback.
- Improvements
- Add to TProofMgr two static functions to upload files. These
functions are both called UploadFiles and differ in the first argument,
which is used to pass the files to be uploaded. These can be given as a
list (of TFileInfo or TObjString), a directory or specified in a text
file. See Uploading
data files to a PROOF cluster .
- Add support for paralell dataset verification. This is
implemented via a dedicated TSelector (TSelVerifyDataSet) which is run
over the list of files in the dataset via TPacketizerFile. The file
order is preserved using the recently introduced index in TFileInfo.
- In TProofOutputFile, add switch to control the way histograms
are merged by TFileMerger, i.e. one-by-one or all-in-one-go. The
default is one-by-one which requires much less memory. Merging in
one-go (the previous default) can be activated by passing 'H' in the
constructor options.
- In ProofBench, add possibility to change the location of the
generated files via the third argument of TProofBench::MakeDataSet.
- Several optimizations in the low level PROOF event loop
(TProofPlayer::Process), allowing to reduce dramatically the
overhead introduced by the operations PROOF needs to perform during the
event loop. A measurement of the overhead can be obtained from a very
light computational task, for example, generating one random number and
filling one histogram; executing this task within a PROOF-Lite session
with 1 worker now takes only 1.8 times the time required by a straight
loop in the parent ROOT session; the same number before was about 13.
- In TDrawFeedback::Feedback, call method Draw() of objects not
identified as TH1 derivation. This allows user-defined objects
implementing Draw to be displayed via this utility class.
- In TProof::LoadPackageOnClient, do not create a symlink
'pack_name' to the package dir, but add directly the package dir to the
include path. This solves the longstanding annoying problem of failure
when a directory or file with the name of the package did already exist
in the local working directory.
- Fixes
- Fix merging issue affecting automatic dataset creation when
only one worker is active.
- Fix the realtime reported by TProof::GetRealTime() for masters
(it was overwritten with the ones coming from workers).
- Fix serious problem with TProof::Load: additional files were
not copied in the master sandbox but left in the cache. A workaround
for backward compatibility has also been implemented.
- Fix a problem preventing actions requiring access to worker
nodes (log file retrieval, reset) to work on workers where the username
is different from the one o the master, e.g. PoD on gLite.
- Fix issue with the specification of the working directory
template in 'xpd.multiuser'.