Jpp - 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 DETECTOR $JPP_DATA/km3net_reference.detx
27 set_variable TRIGGER $JPP_DATA/trigger_parameters_arca.txt
28 set_variable NUMBER_OF_SLICES 10
29 set_variable FRAMETIME_MS 100
30 set_variable RATE_L1_HZ 500
31 
32 
33 if do_usage $*; then
34  usage "$script [detector file [trigger file [working directory]]]"
35 fi
36 
37 case $# in
38  3) WORKDIR=$3;&
39  2) TRIGGER=$2;&
40  1) DETECTOR=$1;;
41 esac
42 
43 
44 set_variable PIPE $WORKDIR/pipe.dat
45 
46 set_variable CPU_TXT $WORKDIR/cpu.txt
47 set_variable CPU_ROOT $WORKDIR/cpu.root
48 
49 set_variable RATE_TXT $WORKDIR/rate.txt
50 set_variable RATE_ROOT $WORKDIR/rate.root
51 
52 echo "Detector: $DETECTOR"
53 echo "Trigger parameters:"
54 cat $TRIGGER
55 
56 if (( 1 )); then
57 
58  for RATE_L0_HZ in 5e3 7e3 9e3 11e3 13e3 15e3 17e3 19e3; do
59 
60  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
61 
62  rm -f $PIPE
63  mkfifo $PIPE
64 
65  echo "Generating random background at ${RATE_L0_HZ} Hz."
66 
67  nohup JRandomTimesliceWriter \
68  -a $DETECTOR \
69  -o $PIPE \
70  -B "$RATE_L0_HZ $RATE_L1_HZ" \
71  -n $NUMBER_OF_SLICES \
72  -d $DEBUG > /dev/null 2>&1 &
73 
74  echo Processing random data.
75 
76  JTriggerProcessor \
77  -a $DETECTOR \
78  -f $PIPE \
79  -o "/dev/null" \
80  -@"`cat $TRIGGER`" \
81  -C JDAQTimesliceL0 \
82  -d $DEBUG > $LOGGER_FILE 2>&1
83 
84  rm -f $PIPE
85 
86  done
87 fi
88 
89 
90 if (( 1 )); then
91 
92  if [[ -f $CPU_TXT ]]; then
93  rm $CPU_TXT
94  fi
95 
96  for RATE_L0_HZ in 5e3 7e3 9e3 11e3 13e3 15e3 17e3 19e3; do
97 
98  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
99 
100  TOTAL_CPU=0.0
101 
102  for KEY in "Calibration" "L0" "L1" "L2" "Timeslice router" "Trigger" "Trigger router"; do
103 
104  ELAPSED_TIME=`awk -v key="$KEY" '$0 == key,/CPU/ { if ($3 == "elapsed") print $1 }' $LOGGER_FILE`
105 
106  TOTAL_CPU=$(($TOTAL_CPU + $ELAPSED_TIME / $FRAMETIME_MS))
107 
108  done
109 
110  RATE_L0_KHZ=$(($RATE_L0_HZ * 1e-3))
111 
112  echo "$RATE_L0_KHZ $TOTAL_CPU" >> $CPU_TXT
113 
114  done
115 
116  JGraph \
117  -f $CPU_TXT \
118  -o $CPU_ROOT
119 
120  JPlot1D \
121  -f $CPU_ROOT:\.\* \
122  -x "0 20" \
123  -y "0 60" \
124  -\> "Rate [kHz]" \
125  -\^ "CPU [cores]" \
126  -T "" -o cpu.gif
127 
128 fi
129 
130 
131 if (( 1 )); then
132 
133  if [[ -f $RATE_TXT ]]; then
134  rm $RATE_TXT
135  fi
136 
137  for RATE_L0_HZ in 5e3 7e3 9e3 11e3 13e3 15e3 17e3 19e3; do
138 
139  LOGGER_FILE=$WORKDIR/trigger_${RATE_L0_HZ}.log
140 
141  TRIGGER_RATE_HZ=`awk '/Trigger rate \[Hz\]/ { print $4 }' $LOGGER_FILE`
142 
143  RATE_L0_KHZ=$(($RATE_L0_HZ * 1e-3))
144 
145  echo "$RATE_L0_KHZ $TRIGGER_RATE_HZ" >> $RATE_TXT
146 
147  done
148 
149  JGraph \
150  -f $RATE_TXT \
151  -o $RATE_ROOT
152 
153  JPlot1D \
154  -f $RATE_ROOT:\.\* \
155  -x "0 20" \
156  -y "0 100" \
157  -\> "Rate [kHz]" \
158  -\^ "Trigger rate [Hz]" \
159  -T "" -o rate.gif
160 
161 fi
do ELAPSED_TIME
do LOGGER_FILE
then set_variable singlesRate set_variable doublesRate set_variable numberOfSlices echo Generating random background echo Singles rate
exit
Definition: JPizza.sh:36
&set_variable PIPE
Definition: JRandomEvent.sh:43
then JPizza f
Definition: JPizza.sh:46
then echo
static const double C
Physics constants.
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:20
do set_variable OUTPUT_DIRECTORY $WORKDIR T
do $DIR JTransitTime o
Definition: JTransitTime.sh:44
* usage
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:45
then JCalibrateToT a
Definition: JTuneHV.sh:116
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
alias put_queue eval echo n
Definition: qlib.csh:19
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
then display $WORKDIR
Definition: plot-Domino.sh:127
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR tmp set_variable JDAQ_TIMESLICE JDAQTimeslice if do_usage *then usage $script< detector file >< inputfile > fi case set_variable WORKDIR
Definition: JLegolas.sh:23
set_variable DETECTOR
data_type v[N+1][M+1]
Definition: JPolint.hh:740
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:38
version
Definition: JCalibratePMT.sh:7
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
esac done
Definition: JAddHDE.sh:21
&set_variable TRIGGER