diff --git a/README.md b/README.md index a4a28b75b812bf4eb994bbd20c8423bf0151e4f6..e1d3af15908e416c6f3c565145771adade62baa6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +# About this branch + +This branch is used for timing purposes. It will be periodically updated by merging `devel`, but no new features will be implemented here. The Scan Operator in this branch will produce a `.json` file containing detailed timing inforamation regarding all the functions that this framework is using. If we find this useful enough, we can always merge into `devel` in a later stage. + + The Scan Operator is an integration tool for scan data and DCS data. These are its main features: - Calls Yarr repeatedly to **run a sequence of scans on Rd53a**. diff --git a/ScanOperator.sh b/ScanOperator.sh index 4fe3f74d7eaa0483bc777c4976ef72161564653c..a6d48113ee243b085af9bb4a9f09344bc4a176a8 100755 --- a/ScanOperator.sh +++ b/ScanOperator.sh @@ -1,5 +1,11 @@ #!/bin/bash +export SOBASE=$(cd $(dirname $0); pwd) +export TIMING_OUT="$SOBASE/timing.json" +jq -n '{"total"}' > tmp && mv tmp $TIMING_OUT +jq '.total += {"type": "total"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +START_ALL=$(date +%s.%N) + dcsOnOff=false ivCurve=0 quietMode=0 @@ -50,7 +56,10 @@ export YARR_DIR=`jq -j '.YARR.YARR_directory' $CFGFILE` export CFGFILE=$CFGFILE export SCAN_DIR=$YARR_DIR/configs/scans/rd53a/ export RunCounter_path=$HOME/.yarr/runCounter -export SOBASE=$(cd $(dirname $0); pwd) + +jq '. += {"modules"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +jq '.modules += []' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + if [ $dcsOnOff ] || [ $dcsMnitor ] || [$ivCurve] then @@ -59,7 +68,12 @@ then fi if [ $ivCurve != 0 ] then + jq '.modules += [{"label": "iv/vi curves"}]' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + jq '.modules[-1] += {"type": "iv_script"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + START=$(date +%s.%N) python3 $SOBASE/libDCS/qaqc.py -e $(jq -j '.dcs_control.LR_config' $CFGFILE) -j $SOBASE/configs/ivscan.json -w $ivCurve + END=$(date +%s.%N) + jq --argjson a $(echo "($END - $START)*1000" | bc) '.modules[-1] += {"time_real": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT fi if [ -z $module_id ];then echo "You didn't specify the Module ID (option '-m')." @@ -76,6 +90,9 @@ if $createConfig ; then fi if $dcsOnOff ;then + jq '.modules += [{"label": "turn on DCS"}]' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + jq '.modules[-1] += {"type": "scan_operator"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + START=$(date +%s.%N) echo -e "\nTurning ON the DCS..." bin="$(jq -j '.dcs_control.LR_binary' $CFGFILE)" cfg="$(jq -j '.dcs_control.LR_config' $CFGFILE)" @@ -88,6 +105,8 @@ if $dcsOnOff ;then I="$(jq -j ".dcs_control.channels[$i].current" $CFGFILE)" python3 $SOBASE/libDCS/qaqc.py -e $cfg -c $chn power-on done + END=$(date +%s.%N) + jq --argjson a $(echo "($END - $START)*1000" | bc) '.modules[-1] += {"time_real": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT fi echo -e "\nRunning the sequence of scans" @@ -118,6 +137,9 @@ done if $dcsOnOff ;then + jq '.modules += [{"label": "turn off DCS"}]' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + jq '.modules[-1] += {"type": "scan_operator"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + START=$(date +%s.%N) echo -e "\nTurning OFF the DCS..." bin="$(jq -j '.dcs_control.LR_binary' $CFGFILE)" cfg="$(jq -j '.dcs_control.LR_config' $CFGFILE)" @@ -128,4 +150,9 @@ if $dcsOnOff ;then chn="$(jq -j ".dcs_control.channels[$i].name" $CFGFILE)" python3 $SOBASE/libDCS/qaqc.py -e $cfg -c $chn power-off done + END=$(date +%s.%N) + jq --argjson a $(echo "($END - $START)*1000" | bc) '.modules[-1] += {"time_real": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT fi + +END_ALL=$(date +%s.%N) +jq --argjson a $(echo "($END_ALL - $START_ALL)*1000" | bc) '.total += {"time_real": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT diff --git a/scanLauncher.sh b/scanLauncher.sh index f83342dcb26928e96fae7aa1c1c3d6dbaf8f5c6c..7b1819036e1ecf7d0fe5deb43e130750e483706b 100755 --- a/scanLauncher.sh +++ b/scanLauncher.sh @@ -64,6 +64,7 @@ do done check_value $module_id check_value $scan +ScanName=${scan##*/} if [ ! -e $scan ] ;then scan="$SCAN_DIR$scan.json" @@ -86,6 +87,11 @@ LOGFILE="${result_data_DIR}OperatorLog."`date "+%Y%m%d_%H%M%S"` ############################################### if ${dcsMonitor} ;then + + jq '.modules += [{"label": "Read Single DCS"}]' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + jq --argjson a $ScanName '.modules[-1] += {"type": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + START=$(date +%s.%N) + echo " | | [INFO] Getting single [V, I] measurement" cfg="$(jq -j '.dcs_control.LR_config' $CFGFILE)" chn="" @@ -98,11 +104,19 @@ if ${dcsMonitor} ;then done chn="${chn::-1}" + END=$(date +%s.%N) + jq --argjson a $(echo "($END - $START)*1000" | bc) '.modules[-1] += {"time_real": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + python3 $SOBASE/libDCS/qaqc.py -e $cfg -c $chn measure # Tell read_dcs_background.sh that we're performing a scan echo "1" > $SOBASE/.tmp $SOBASE/libDCS/read_dcs_background.sh & fi + +jq '.modules += [{"label": "chip config"}]' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +jq --argjson a $ScanName '.modules[-1] += {"type": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +START=$(date +%s.%N) + targetCharge=$(jq -j '.YARR.scan.target_charge' $CFGFILE) targetPreamp=$(jq -j '.YARR.scan.target_preamp' $CFGFILE) targetTot=$(jq -j '.YARR.scan.target_tot' $CFGFILE) @@ -137,6 +151,13 @@ do jq --argjson a $specNum '.ctrlCfg.cfg.specNum = $a' $ctrlFile > tmp && mv tmp $ctrlFile done +END=$(date +%s.%N) +jq --argjson a $(echo "($END - $START)*1000" | bc) '.modules[-1] += {"time_real": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + +jq '.modules += [{"label": "scan"}]' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +jq --argjson a $ScanName '.modules[-1] += {"type": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +START=$(date +%s.%N) + comm="$YARR_DIR/bin/scanConsole -r $ctrlFile -c $cnctFile -p -t ${targetAmpOrCharge} ${targetTot} -s ${scan} -m 1 $localdbOpt" #> /dev/null 2>1 echo " | | [INFO] Calling Yarr's scanConsole" echo "$comm" @@ -154,6 +175,10 @@ else cd $YARR_DIR && $comm fi +END=$(date +%s.%N) +jq --argjson a $(echo "($END - $START)*1000" | bc) '.modules[-1] += {"time_real": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT + + if [ ! -z ${result_data_DIR} ]; then scan_result_path=$(readlink -f $YARR_DIR/data/last_scan) @@ -175,6 +200,10 @@ fi # cmd="$YARR_DIR/bin/dbAccessor -F $SOBASE/configs/influxdb_connectivity.json -n $module_id -s ${result_data_DIR}/YARR_result/scanLog.json" # echo " | | [INFO] $cmd" +jq '.modules += [{"label": "db sync"}]' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +jq --argjson a $ScanName '.modules[-1] += {"type": "\($a)"}' $TIMING_OUT > tmp && mv tmp $TIMING_OUT +START=$(date +%s.%N) + END=$(date +%s.%N) echo -ne "done $scan $(echo "$END - $START" | bc)\t\n" >> $SOBASE/temp.txt #echo -ne "$(echo "$END - $START" | bc)\t" >> ./temp.txt