From 1e4be89185f6d9275510b2086059645cbd04caf7 Mon Sep 17 00:00:00 2001 From: babic_a Date: Tue, 2 Jun 2020 13:56:23 +0200 Subject: [PATCH 1/2] systemd scripts for JF01 and JF13 --- scripts/JF01-buffer-worker.sh | 20 ++++++++ scripts/JF01-buffer-worker@.service | 16 +++++++ ...F07-replay.service => JF01-buffer.service} | 4 +- scripts/JF01-stream.service | 15 ++++++ scripts/JF01-stream.sh | 5 ++ scripts/JF07-replay-worker.sh | 26 ----------- scripts/JF07-replay-worker@.service | 16 ------- scripts/JF13-buffer-worker.sh | 20 ++++++++ scripts/JF13-buffer-worker@.service | 16 +++++++ scripts/JF13-buffer.service | 10 ++++ scripts/JF13-stream.service | 15 ++++++ scripts/JF13-stream.sh | 5 ++ scripts/start_detector.sh | 46 +++++++++++++++++++ sf-stream/src/main.cpp | 4 +- 14 files changed, 172 insertions(+), 46 deletions(-) create mode 100644 scripts/JF01-buffer-worker.sh create mode 100644 scripts/JF01-buffer-worker@.service rename scripts/{JF07-replay.service => JF01-buffer.service} (70%) create mode 100644 scripts/JF01-stream.service create mode 100644 scripts/JF01-stream.sh delete mode 100644 scripts/JF07-replay-worker.sh delete mode 100644 scripts/JF07-replay-worker@.service create mode 100644 scripts/JF13-buffer-worker.sh create mode 100644 scripts/JF13-buffer-worker@.service create mode 100644 scripts/JF13-buffer.service create mode 100644 scripts/JF13-stream.service create mode 100644 scripts/JF13-stream.sh create mode 100755 scripts/start_detector.sh diff --git a/scripts/JF01-buffer-worker.sh b/scripts/JF01-buffer-worker.sh new file mode 100644 index 0000000..b907af5 --- /dev/null +++ b/scripts/JF01-buffer-worker.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [ $# != 1 ] +then + systemctl start JF01-buffer-worker@{00..02} + exit +fi + +M=$1 + +# Add ourselves to the user cpuset. +# echo $$ > /sys/fs/cgroup/cpuset/user/tasks + +coreAssociatedBuffer=(12 12 12) + +initialUDPport=50010 +port=$((${initialUDPport}+10#${M})) +DETECTOR=JF01T03V01 + +taskset -c ${coreAssociatedBuffer[10#${M}]} /usr/bin/sf_buffer ${DETECTOR} M${M} ${port} /gpfs/photonics/swissfel/buffer/${DETECTOR} ${M} diff --git a/scripts/JF01-buffer-worker@.service b/scripts/JF01-buffer-worker@.service new file mode 100644 index 0000000..b8b6a97 --- /dev/null +++ b/scripts/JF01-buffer-worker@.service @@ -0,0 +1,16 @@ +[Unit] +Description=JF01 UDP2buffer worker instance as a service, instance %i +Requires=JF01-buffer.service +Before=JF01-buffer.service +BindsTo=JF01-buffer.service + +[Service] +PermissionsStartOnly=true +Type=idle +User=root +ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF01-buffer-worker.sh %i +TimeoutStartSec=10 +RestartSec=10 + +[Install] +WantedBy=JF01-buffer.service diff --git a/scripts/JF07-replay.service b/scripts/JF01-buffer.service similarity index 70% rename from scripts/JF07-replay.service rename to scripts/JF01-buffer.service index 288b922..efdc14d 100644 --- a/scripts/JF07-replay.service +++ b/scripts/JF01-buffer.service @@ -1,9 +1,9 @@ [Unit] -Description=All replay instances of JF07 +Description=All UDP-buffer instances of JF01 [Service] Type=oneshot -ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF07-replay-worker.sh +ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF01-buffer-worker.sh RemainAfterExit=yes [Install] diff --git a/scripts/JF01-stream.service b/scripts/JF01-stream.service new file mode 100644 index 0000000..79e7b1b --- /dev/null +++ b/scripts/JF01-stream.service @@ -0,0 +1,15 @@ +[Unit] +Description=stream service (to streamvis and live analysis) of JF01 + +[Service] +PermissionsStartOnly=true +Type=idle +User=root +ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF01-stream.sh +TimeoutStartSec=10 +Restart=on-failure +RestartSec=10 + +[Install] +WantedBy=multi-user.target + diff --git a/scripts/JF01-stream.sh b/scripts/JF01-stream.sh new file mode 100644 index 0000000..c7d1724 --- /dev/null +++ b/scripts/JF01-stream.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +coreAssociated="24" + +taskset -c ${coreAssociated} /usr/bin/sf_stream /gpfs/photonics/swissfel/buffer/config/stream-JF01.json diff --git a/scripts/JF07-replay-worker.sh b/scripts/JF07-replay-worker.sh deleted file mode 100644 index bb51829..0000000 --- a/scripts/JF07-replay-worker.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -if [ $# != 1 ] -then - systemctl start JF07-replay-worker@{00..32} - exit -fi - -M=$1 - -#8 replay workers per core, last (stream to visualisation) worker occupies 4 -coreAssociated=(20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 24,25,26,27) - -latest_file=`cat /gpfs/photonics/swissfel/buffer/JF07T32V01/M00/LATEST` -last_pulse_id=`basename ${latest_file} | sed 's/.h5//'` -first_pulse_id=$((${last_pulse_id}-360000)) - -echo "First/last pulse_id : ${first_pulse_id} ${last_pulse_id}" - -if [ ${M} == 32 ] -then -# taskset -c ${coreAssociated[10#${M}]} /usr/bin/sf_writer /gpfs/photonics/swissfel/buffer/test.${first_pulse_id}-${last_pulse_id}.h5 ${first_pulse_id} ${last_pulse_id} - taskset -c ${coreAssociated[10#${M}]} /usr/bin/sf_stream tcp://129.129.241.42:9007 10 tcp://192.168.30.29:9107 30 -else - taskset -c ${coreAssociated[10#${M}]} /usr/bin/sf_replay /gpfs/photonics/swissfel/buffer/JF07T32V01 M${M} ${M} ${first_pulse_id} ${last_pulse_id} -fi diff --git a/scripts/JF07-replay-worker@.service b/scripts/JF07-replay-worker@.service deleted file mode 100644 index 42e8dda..0000000 --- a/scripts/JF07-replay-worker@.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=JF07 replay worker instance as a service, instance %i -Requires=JF07-replay.service -Before=JF07-replay.service -BindsTo=JF07-replay.service - -[Service] -PermissionsStartOnly=true -Type=idle -User=root -ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF07-replay-worker.sh %i -TimeoutStartSec=10 -RestartSec=10 - -[Install] -WantedBy=JF07-replay.service diff --git a/scripts/JF13-buffer-worker.sh b/scripts/JF13-buffer-worker.sh new file mode 100644 index 0000000..c269179 --- /dev/null +++ b/scripts/JF13-buffer-worker.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [ $# != 1 ] +then + systemctl start JF13-buffer-worker@00 + exit +fi + +M=$1 + +# Add ourselves to the user cpuset. +# echo $$ > /sys/fs/cgroup/cpuset/user/tasks + +coreAssociatedBuffer=(13) + +initialUDPport=50190 +port=$((${initialUDPport}+10#${M})) +DETECTOR=JF13T01V01 + +taskset -c ${coreAssociatedBuffer[10#${M}]} /usr/bin/sf_buffer ${DETECTOR} M${M} ${port} /gpfs/photonics/swissfel/buffer/${DETECTOR} ${M} diff --git a/scripts/JF13-buffer-worker@.service b/scripts/JF13-buffer-worker@.service new file mode 100644 index 0000000..0ccd3d5 --- /dev/null +++ b/scripts/JF13-buffer-worker@.service @@ -0,0 +1,16 @@ +[Unit] +Description=JF13 UDP2buffer worker instance as a service, instance %i +Requires=JF13-buffer.service +Before=JF13-buffer.service +BindsTo=JF13-buffer.service + +[Service] +PermissionsStartOnly=true +Type=idle +User=root +ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF13-buffer-worker.sh %i +TimeoutStartSec=10 +RestartSec=10 + +[Install] +WantedBy=JF13-buffer.service diff --git a/scripts/JF13-buffer.service b/scripts/JF13-buffer.service new file mode 100644 index 0000000..2c435ce --- /dev/null +++ b/scripts/JF13-buffer.service @@ -0,0 +1,10 @@ +[Unit] +Description=All UDP-buffer instances of JF13 + +[Service] +Type=oneshot +ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF13-buffer-worker.sh +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/scripts/JF13-stream.service b/scripts/JF13-stream.service new file mode 100644 index 0000000..7e0a492 --- /dev/null +++ b/scripts/JF13-stream.service @@ -0,0 +1,15 @@ +[Unit] +Description=stream service (to streamvis and live analysis) of JF13 + +[Service] +PermissionsStartOnly=true +Type=idle +User=root +ExecStart=/usr/bin/sh /home/writer/git/sf_daq_buffer/scripts/JF13-stream.sh +TimeoutStartSec=10 +Restart=on-failure +RestartSec=10 + +[Install] +WantedBy=multi-user.target + diff --git a/scripts/JF13-stream.sh b/scripts/JF13-stream.sh new file mode 100644 index 0000000..3b8e226 --- /dev/null +++ b/scripts/JF13-stream.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +coreAssociated="25" + +taskset -c ${coreAssociated} /usr/bin/sf_stream /gpfs/photonics/swissfel/buffer/config/stream-JF13.json diff --git a/scripts/start_detector.sh b/scripts/start_detector.sh new file mode 100755 index 0000000..482d7d4 --- /dev/null +++ b/scripts/start_detector.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +if [ $# -lt 1 ] +then + echo "Usage : $0 DETECTOR_NAME " + echo " DETECTOR_NAME: JF07 or JF01..." + echo " number_of_cycles : optional, default 100" + exit +fi + +DETECTOR=$1 +case ${DETECTOR} in +'JF01') + D=1 + ;; +'JF07') + D=7 + ;; +'JF13') + D=13 + ;; +*) + echo "Unsupported detector" + exit + ;; +esac + +n_cycles=100 +if [ $# == 2 ] +then + n_cycles=$2 +fi + +export PATH=/home/dbe/miniconda3/bin:$PATH +source deactivate +source activate dia + +sls_detector_put ${D}-timing trigger +sls_detector_put ${D}-cycles ${n_cycles} +sls_detector_put ${D}-exptime 5e-06 +sls_detector_put ${D}-frames 1 +sls_detector_put ${D}-dr 16 +#sls_detector_put ${D}-clearbit to 0x5d 0 # normal mode, not highG0 +sls_detector_put ${D}-status start + +echo "Now start trigger" diff --git a/sf-stream/src/main.cpp b/sf-stream/src/main.cpp index b0a9632..d9a4b45 100644 --- a/sf-stream/src/main.cpp +++ b/sf-stream/src/main.cpp @@ -170,7 +170,7 @@ int main (int argc, char *argv[]) } if ( send_streamvis == 0 ) { auto& shape = header["shape"]; - shape[0] = 16384; + shape[0] = n_modules*512; shape[1] = 1024; } else{ auto& shape = header["shape"]; @@ -210,7 +210,7 @@ int main (int argc, char *argv[]) } if ( send_live_analysis == 0 ) { auto& shape = header["shape"]; - shape[0] = 16384; + shape[0] = n_modules*512; shape[1] = 1024; } else{ auto& shape = header["shape"]; From 1e12c38ead792a114a45b3608677581ca81339e3 Mon Sep 17 00:00:00 2001 From: Dmitry Ozerov Date: Tue, 2 Jun 2020 14:34:07 +0200 Subject: [PATCH 2/2] cleanup script for the buffer --- scripts/delete_old_files_in_buffer.sh | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 scripts/delete_old_files_in_buffer.sh diff --git a/scripts/delete_old_files_in_buffer.sh b/scripts/delete_old_files_in_buffer.sh new file mode 100755 index 0000000..1d0db5a --- /dev/null +++ b/scripts/delete_old_files_in_buffer.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +hours=5 +threshold=80 + +if [ $# = 1 ] +then + threshold=$1 +fi +if [ $# = 2 ] +then + hours=$2 +fi + +df -h | grep BUFFER > /dev/null +if [ $? != 0 ] +then + # BUFFER is not present + exit +fi + +occupancy=`df -h /gpfs/photonics/swissfel/buffer | grep BUFFER | awk '{print $5}' | sed 's/%//'` +if [ ${occupancy} -lt ${threshold} ] +then +# echo OK, not action + exit +fi + +#find /gpfs/photonics/swissfel/buffer/JF* -type f -mmin +$((${hours}*60)) -delete +find /gpfs/photonics/swissfel/buffer/JF*/M* -type d -mmin +$((${hours}*60)) -delete