From: hadaq Date: Sat, 9 Nov 2002 10:27:39 +0000 (+0000) Subject: These version allows asynchronous remote procedure calls for X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=d74e0e3a3498fc29c4cf780dec90ce9cc4b4c4d5;p=daqdata.git These version allows asynchronous remote procedure calls for the system commands, this spares the remote shells, while still allowing parallelism. The daq_agent must have 6.10 /u/hadaq/CVS/hadaq/agent.c 6.3 /u/hadaq/CVS/hadaq/agent.x the manager 6.9 /u/hadaq/CVS/hadaq/tcldaq.c 6.3 /u/hadaq/CVS/hadaq/agent.x Testet with about 4 tries -- mm --- diff --git a/hadaq/hadaq.tcl b/hadaq/hadaq.tcl index 8f0fbfc..bb444d8 100644 --- a/hadaq/hadaq.tcl +++ b/hadaq/hadaq.tcl @@ -320,16 +320,25 @@ proc updateAcquisitionButtons {} { } } +proc execOnAgent {cmd} { + set agent [lindex $cmd 0] + set command [lindex $cmd 1] + puts "agent $agent: command $command" + if {$agent == "join"} { + set b [c_joinall] + } else { + set b [c_system $agent $command] + } +} + proc startAcquisitionCmd {} { global beforeStartAcq afterStartAcq foreach cmd $beforeStartAcq { - puts $cmd - catch {eval exec $cmd} + execOnAgent $cmd } group start acquisition foreach cmd $afterStartAcq { - puts $cmd - catch {eval exec $cmd} + execOnAgent $cmd } updateAcquisitionButtons } @@ -337,13 +346,11 @@ proc startAcquisitionCmd {} { proc stopAcquisitionCmd {} { global beforeStopAcq afterStopAcq foreach cmd $beforeStopAcq { - puts $cmd - catch {eval exec $cmd} + execOnAgent $cmd } group stop acquisition foreach cmd $afterStopAcq { - puts $cmd - catch {eval exec $cmd} + execOnAgent $cmd } updateAcquisitionButtons } diff --git a/hadaq/hades.tcl b/hadaq/hades.tcl index 24f8202..5d56a0a 100644 --- a/hadaq/hades.tcl +++ b/hadaq/hades.tcl @@ -1,11 +1,12 @@ # the list of sub systems according to your needs, possible sub systems # are: trig rich0 rich1 rich2 mdc0 tof1 tof2 tof3 shw -# to check total bandwidth: -# perl -ne 'next unless /memnet/; ($a)=/-w (\d+)/; $b+=$a; print $b ."\n";' hades.tcl - - -set subSystems { trig shw rich0 rich1 rich2 tof1 tof2 tof3 mdc0 mdc1 } +set subSystems { trig shw rich0 rich1 rich2 tof1 tof2 tof3 mdc0 mdc1 } +#set subSystems { trig rich0 rich1 rich2 shw } +#set subSystems { trig shw } +#set subSystems { trig } +#set subSystems { trig rich0 } +#set subSystems { trig rich0 rich1 rich2 tof1 tof2 tof3} # the component in the HADES_BASE_DIR set beamTime oct02 @@ -30,29 +31,32 @@ group create run set vcc [expr $atmBase + 0] agent create r2-35 hades /hades/usr/hades/$beamTime/trig/hadaq worker create r2-35:memnet -a -p -1 -w 27000 -o ATM:0:$vcc -worker create r2-35:readout -s trigconc -a -p -2 -w $watermark +worker create r2-35:readout -s trigconc -a -p -2 -w $watermark -v notice group add acquisition r2-35:memnet group add acquisition r2-35:readout lappend init r2-35:trigconc:init -lappend reset { } -lappend start { } -lappend stop { } -set trigReset "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc reset'\" >&hadaq.log" -set trigStart "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc start'\" >&hadaq.log" -#set trigStop "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc stop'\" >&hadaq.log" -set trigStop "" +lappend reset [ list r2-35 ":" ] +lappend start [ list r2-35 ":" ] +lappend stop [ list r2-35 ":" ] +lappend trigReset r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc reset" +lappend trigStart r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc start" +lappend trigStop r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc stop" +lappend ctustart r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./ctustart" +lappend ctustop r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./ctustop" + lappend inPaths "-i ATM:0:$vcc" if {[lsearch $subSystems rich0] >= 0} { set vcc [expr $atmBase + 2] agent create r2-24 hades /hades/usr/hades/$beamTime/rich/hadaq worker create r2-24:memnet -a -p -2 -w 16000 -o ATM:0:$vcc - worker create r2-24:readout -s rich0 -a -p -1 -w $watermark + worker create r2-24:readout -s rich0 -a -p -1 -w $watermark -v notice group add acquisition r2-24:memnet group add acquisition r2-24:readout lappend init r2-24:rich0:init - lappend reset r2-24:rich0:reset - lappend start r2-24:rich0:start + lappend reset [ list r2-24 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich0 reset" ] + lappend start [ list r2-24 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich0 start" ] + lappend stop [ list r2-24 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich0 stop" ] lappend inPaths "-i ATM:0:$vcc" } @@ -60,12 +64,13 @@ if {[lsearch $subSystems rich1] >= 0} { set vcc [expr $atmBase + 3] agent create r2-28 hades /hades/usr/hades/$beamTime/rich/hadaq worker create r2-28:memnet -a -p -2 -w 16000 -o ATM:0:$vcc - worker create r2-28:readout -s rich1 -a -p -1 -w $watermark + worker create r2-28:readout -s rich1 -a -p -1 -w $watermark -v notice group add acquisition r2-28:memnet group add acquisition r2-28:readout lappend init r2-28:rich1:init - lappend reset r2-28:rich1:reset - lappend start r2-28:rich1:start + lappend reset [ list r2-28 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich1 reset" ] + lappend start [ list r2-28 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich1 start" ] + lappend stop [ list r2-28 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich1 stop" ] lappend inPaths "-i ATM:0:$vcc" } @@ -73,12 +78,13 @@ if {[lsearch $subSystems rich2] >= 0} { set vcc [expr $atmBase + 4] agent create r2-27 hades /hades/usr/hades/$beamTime/rich/hadaq worker create r2-27:memnet -a -p -2 -w 16000 -o ATM:0:$vcc - worker create r2-27:readout -s rich2 -a -p -1 -w $watermark + worker create r2-27:readout -s rich2 -a -p -1 -w $watermark -v notice group add acquisition r2-27:memnet group add acquisition r2-27:readout lappend init r2-27:rich2:init - lappend reset r2-27:rich2:reset - lappend start r2-27:rich2:start + lappend reset [ list r2-27 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich2 reset" ] + lappend start [ list r2-27 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich2 start" ] + lappend stop [ list r2-27 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich2 stop" ] lappend inPaths "-i ATM:0:$vcc" } @@ -86,12 +92,13 @@ if {[lsearch $subSystems mdc0] >= 0} { set vcc [expr $atmBase + 5] agent create r2-8 hades /hades/usr/hades/$beamTime/mdc/hadaq worker create r2-8:memnet -a -p -1 -w 30000 -o ATM:0:$vcc - worker create r2-8:readout -s mdc0 -a -p -2 -w 24576 + worker create r2-8:readout -s mdc0 -a -p -2 -w 24576 -v notice group add acquisition r2-8:memnet group add acquisition r2-8:readout lappend init r2-8:mdc0:init - lappend reset r2-8:mdc0:reset - lappend start r2-8:mdc0:start + lappend reset [ list r2-8 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc0 reset" ] + lappend start [ list r2-8 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc0 start" ] + lappend stop [ list r2-8 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc0 stop" ] lappend inPaths "-i ATM:0:$vcc" } @@ -99,12 +106,13 @@ if {[lsearch $subSystems mdc1] >= 0} { set vcc [expr $atmBase + 6] agent create r2-32 hades /hades/usr/hades/$beamTime/mdc/hadaq worker create r2-32:memnet -a -p -1 -w 20000 -o ATM:0:$vcc - worker create r2-32:readout -s mdc1 -a -p -2 -w $watermark + worker create r2-32:readout -s mdc1 -a -p -2 -w $watermark -v notice group add acquisition r2-32:memnet group add acquisition r2-32:readout lappend init r2-32:mdc1:init - lappend reset r2-32:mdc1:reset - lappend start r2-32:mdc1:start + lappend reset [ list r2-32 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc1 reset" ] + lappend start [ list r2-32 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc1 start" ] + lappend stop [ list r2-32 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc1 stop" ] lappend inPaths "-i ATM:0:$vcc" } @@ -112,38 +120,43 @@ if {[lsearch $subSystems shw] >= 0} { set vcc [expr $atmBase + 1] agent create r2-14 hades /hades/usr/hades/$beamTime/shw/hadaq worker create r2-14:memnet -a -p -1 -w 30000 -o ATM:0:$vcc - worker create r2-14:readout -s show -a -p -2 -w $watermark + worker create r2-14:readout -s show -a -p -2 -w $watermark -v notice group add acquisition r2-14:memnet group add acquisition r2-14:readout lappend init r2-14:shw:init - lappend reset r2-14:shw:reset - lappend start r2-14:shw:start - lappend stop r2-14:shw:stop + lappend reset [ list r2-14 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./shw reset" ] + lappend start [ list r2-14 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./shw start" ] + lappend stop [ list r2-14 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./shw stop" ] lappend inPaths "-i ATM:0:$vcc" } if {[lsearch $subSystems tof1] >= 0} { set vcc [expr $atmBase + 0] + agent create e7_25 hades /hades/usr/hades/$beamTime/tof/hadaq lappend init e7_25:tof1:init - lappend reset e7_25:tof1:reset - lappend start e7_25:tof1:start + lappend reset [ list e7_25 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof1 reset" ] + lappend start [ list e7_25 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof1 start" ] + lappend stop [ list e7_25 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof1 stop" ] } if {[lsearch $subSystems tof2] >= 0} { set vcc [expr $atmBase + 0] + agent create e7_21 hades /hades/usr/hades/$beamTime/tof/hadaq lappend init e7_21:tof2:init - lappend reset e7_21:tof2:reset - lappend start e7_21:tof2:start + lappend reset [ list e7_21 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof2 reset" ] + lappend start [ list e7_21 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof2 start" ] + lappend stop [ list e7_21 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof2 stop" ] } if {[lsearch $subSystems tof3] >= 0} { set vcc [expr $atmBase + 0] + agent create e7_41 hades /hades/usr/hades/$beamTime/tof/hadaq lappend init e7_41:tof3:init - lappend reset e7_41:tof3:reset - lappend start e7_41:tof3:start + lappend reset [ list e7_41 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof3 reset" ] + lappend start [ list e7_41 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof3 start" ] + lappend stop [ list e7_41 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof3 stop" ] } - agent create $evtBuilder hadaq /home/hadaq/$beamTime/eb/hadaq_tcl eval worker create $evtBuilder:evtbuild -a -p -2 -m [llength $inPaths] eval worker create $evtBuilder:netmem -a -p -1 -m [llength $inPaths] [join $inPaths { }] @@ -151,10 +164,37 @@ group add run $evtBuilder:evtbuild group add run $evtBuilder:netmem set duringInit [list "run_parallel_$beamTime [join $init { }]"] -set beforeStartAcq [list $trigReset "run_parallel_$beamTime [join $reset { }]" $trigReset "run_parallel_$beamTime [join $start { }]" $trigStart] - -set afterStartAcq [list "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./ctustart'\" >&hadaq.log"] -set beforeStopAcq [list "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./ctustop'\" >&hadaq.log"] +if {1} { +lappend beforeStartAcq "$trigReset" +lappend beforeStartAcq {join ""} +foreach i "$reset" { lappend beforeStartAcq $i } +lappend beforeStartAcq {join ""} +lappend beforeStartAcq "$trigReset" +lappend beforeStartAcq {join ""} +foreach i "$start" { lappend beforeStartAcq $i } +lappend beforeStartAcq {join ""} +lappend beforeStartAcq "$trigStart" +lappend beforeStartAcq {join ""} + +lappend afterStartAcq "$ctustart" +lappend afterStartAcq {join ""} + +lappend beforeStopAcq "$ctustop" +lappend beforeStopAcq {join ""} + +lappend afterStopAcq "$trigStop" +lappend afterStopAcq {join ""} +foreach i "$stop" { lappend afterStopAcq $i } +lappend afterStopAcq {join ""} +} else { +lappend beforeStartAcq {r2-35 date} +lappend beforeStartAcq {join ""} +lappend afterStartAcq {r2-35 date} +lappend afterStartAcq {join ""} +lappend beforeStopAcq {r2-35 date} +lappend beforeStopAcq {join ""} +lappend afterStopAcq {r2-35 date} +lappend afterStopAcq {join ""} +} -set afterStopAcq [list $trigStop "run_parallel_$beamTime [join $stop { }]"]