Jpp  18.6.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JTriggerProfiler.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 version=1.0
6 script=${0##*/}
7 
8 # ------------------------------------------------------------------------------------------
9 #
10 # Utility script to plot JTriggerProcessor CPU requirements.
11 #
12 # ------------------------------------------------------------------------------------------
13 
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 
21 source $JPP_DIR/setenv.sh $JPP_DIR
22 
23 
26 set_variable FRAMETIME_MS 100
27 set_variable RATE_L1_HZ 500
28 set_variable RECYCLING 5 100e3
29 set_variable: FORMAT GRAPHICS_FORMAT gif
30 set_variable+ BATCH GRAPHICS_BATCH -B
31 
32 if do_usage $*; then
33  usage "$script <detector file> <trigger file> [working directory]"
34 fi
35 
36 case $# in
40  *) fatal "Wrong number of arguments."
41 esac
42 
43 
44 set_variable PIPE $WORKDIR/pipe.dat
45 set_variable CPU_TXT $WORKDIR/cpu.txt
46 set_variable CPU_ROOT $WORKDIR/cpu.root
47 set_variable RATE_TXT $WORKDIR/rate.txt
48 set_variable RATE_ROOT $WORKDIR/rate.root
49 
50 
51 typeset -A SETUPS # rate -> number of slices
52 
53 SETUPS[5e3]=100
54 SETUPS[7e3]=100
55 SETUPS[9e3]=100
56 SETUPS[11e3]=100
57 SETUPS[13e3]=50
58 SETUPS[15e3]=50
59 SETUPS[17e3]=50
60 SETUPS[19e3]=20
61 
62 if [[ -f $DETECTOR ]] && [[ -f $TRIGGER ]]; then
63 
64  echo "Detector: $DETECTOR"
65  echo "Trigger parameters:"
66  cat $TRIGGER
67 
68  for RATE_L0_HZ NUMBER_OF_SLICES in ${(kv)SETUPS}; do
69 
70  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
71 
72  if [[ ! -f $LOGGER_FILE ]]; then
73 
74  rm -f $PIPE
75  mkfifo $PIPE
76 
77  echo "Generating random background at ${RATE_L0_HZ} Hz."
78 
79  nohup JRandomTimesliceWriter \
80  -a $DETECTOR \
81  -o $PIPE \
82  -B "$RATE_L0_HZ $RATE_L1_HZ" \
83  -n $NUMBER_OF_SLICES \
84  -N "$RECYCLING" \
85  -d $DEBUG > /dev/null 2>&1 &
86 
87  echo Processing random data.
88 
89  JTriggerProcessor \
90  -a $DETECTOR \
91  -f $PIPE \
92  -o "/dev/null" \
93  -@"`cat $TRIGGER`" \
94  -C JDAQTimesliceL0 \
95  -P \
96  -d $DEBUG > $LOGGER_FILE 2>&1
97 
98  rm -f $PIPE
99  fi
100  done
101 fi
102 
103 
104 rm -f $CPU_TXT $RATE_TXT >& /dev/null
105 rm -f $CPU_ROOT $RATE_ROOT >& /dev/null
106 
107 for RATE_L0_HZ in `echo ${(k)SETUPS} | tr ' ' '\n' | sort -g`; do
108 
109  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
110 
111  if [[ -f $LOGGER_FILE ]]; then
112 
113  let "TOTAL_CPU = 0.0"
114 
115  for KEY in "Calibration" "L0" "L1" "L2" "Timeslice router" "Trigger" "Trigger router"; do
116 
117  ELAPSED_TIME=`awk -v key="$KEY" '$0 == key,/CPU/ { if ($3 == "elapsed") print $1 }' $LOGGER_FILE`
118 
119  let "TOTAL_CPU += $ELAPSED_TIME / $FRAMETIME_MS"
120  done
121 
122  TRIGGER_RATE_HZ=`awk '/Trigger rate \[Hz\]/ { print $4 }' $LOGGER_FILE`
123 
124  echo "$(($RATE_L0_HZ * 1e-3)) $TOTAL_CPU" >> $CPU_TXT
125  echo "$(($RATE_L0_HZ * 1e-3)) $TRIGGER_RATE_HZ" >> $RATE_TXT
126  fi
127 done
128 
129 
130 JGraph \
131  -f $CPU_TXT \
132  -o $CPU_ROOT
133 
134 JPlot1D \
135  -f $CPU_ROOT:\.\* \
136  -x "0 20" \
137  -y "0 60" \
138  -\> "Rate [kHz]" \
139  -\^ "CPU [cores]" \
140  -O CP \
141  -T "" \
142  -o cpu.$FORMAT $BATCH
143 
144 
145 JGraph \
146  -f $RATE_TXT \
147  -o $RATE_ROOT
148 
149 JPlot1D \
150  -f $RATE_ROOT:\.\* \
151  -x "0 20" \
152  -y "0 400" \
153  -\> "Rate [kHz]" \
154  -\^ "Trigger rate [Hz]" \
155  -O CP \
156  -T "" \
157  -o rate.$FORMAT $BATCH
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
version
Definition: JEditTuneHV.sh:5
then JLigier sh continue fi cat
Definition: JDAQDriver.sh:51
do LOGGER_FILE
then set_variable singlesRate set_variable doublesRate set_variable numberOfSlices echo Generating random background echo Singles rate
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
exit
Definition: JPizza.sh:36
then
Definition: datalogs.sh:34
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
static const double C
Physics constants.
const int n
Definition: JPolint.hh:786
then rm
Definition: sftpput.zsh:30
&set_variable PIPE
then JCalibrateToT a
Definition: JTuneHV.sh:107
do set_variable OUTPUT_DIRECTORY $WORKDIR T
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
do set_variable STRING_TXT awk
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
Definition: JLegolas.sh:20
* usage
then usage $script[detector file[output file[PMT parameters file[number of slices]]]] nAuxiliary script to produce random time slice data fi case set_variable NUMBER_OF_SLICES
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonStart.sh:47
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
Definition: JMuonPostfit.sh:40
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
then set_variable MODULE getModule a $DETECTOR L $STRING $FLOOR JEditDetector a $DETECTOR M $MODULE add $X o $DETECTOR else echo No update of detector $DETECTOR
*fatal Wrong number of arguments esac set_variable PIPE $WORKDIR pipe dat set_variable CPU_TXT $WORKDIR cpu txt set_variable CPU_ROOT $WORKDIR cpu root set_variable RATE_TXT $WORKDIR rate txt set_variable RATE_ROOT $WORKDIR rate root typeset A SETUPS SETUPS[5e3]
set_variable DETECTOR
data_type v[N+1][M+1]
Definition: JPolint.hh:866
then echo
Definition: JQAQC.sh:92
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
then getFile sh $JPP_ARCHIVE $DETECTOR_ID $RUNS[1] $KEY $VERSION $WORKDIR
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
then $DIR JPlotNPE PDG P
Definition: JPlotNPE-PDG.sh:62
esac done
Definition: JAddHDE.sh:21
&set_variable TRIGGER
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62