From: Hadaq Hades Date: Wed, 13 Jun 2018 12:57:49 +0000 (+0200) Subject: improved version of eventbuilder start script. under construction X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=f1c63ca155a9c777b001bad4a6736ffd0cbd1ffb;p=hadesdaq.git improved version of eventbuilder start script. under construction --- diff --git a/evtbuild/start_eb_gbe.pl b/evtbuild/start_eb_gbe.pl index 56ba68a..a4b61d9 100755 --- a/evtbuild/start_eb_gbe.pl +++ b/evtbuild/start_eb_gbe.pl @@ -25,6 +25,7 @@ my @opt_ebrange = (); my $opt_rfio = 'undef'; my $opt_disk = 'undef'; my $opt_online = 'undef'; +my $opt_bnet = 3; my $opt_prefix; GetOptions ('h|help' => \$opt_help, @@ -37,6 +38,7 @@ GetOptions ('h|help' => \$opt_help, 'r|rfio=s' => \$opt_rfio, 'p|prefix=s' => \$opt_prefix, 'o|online=s' => \$opt_online, + 'b|bnet=s' => \$opt_bnet, 'v|verb' => \$opt_verb); if( $opt_help ) { @@ -60,15 +62,27 @@ read_config $opt_ebconf => %$temp_args_href; #print Dumper $temp_args_href; #exit; -my %IP_GSI_lookup = ( - '192.168.100.15' => '140.181.66.160', - '192.168.100.12' => '140.181.76.94', - '192.168.100.13' => '140.181.91.154', - '192.168.100.14' => '140.181.88.20', - '192.168.100.8' => '140.181.80.62', - '192.168.100.9' => '140.181.80.64', - '192.168.100.10' => '140.181.80.68' +# my %IP_GSI_lookup = ( +# '192.168.100.15' => '140.181.66.160', +# '192.168.100.12' => '140.181.76.94', +# '192.168.100.13' => '140.181.91.154', +# '192.168.100.14' => '140.181.88.20', +# '192.168.100.8' => '140.181.80.62', +# '192.168.100.9' => '140.181.80.64', +# '192.168.100.10' => '140.181.80.68' +# ); + + + my %IP_GSI_lookup = ( + '192.168.100.15' => 'lxhadeb05', + '192.168.100.12' => 'lxhadeb02', + '192.168.100.13' => 'lxhadeb03', + '192.168.100.14' => 'lxhadeb04', + '192.168.100.8' => 'lxhadeb08', + '192.168.100.9' => 'lxhadeb09', + '192.168.100.10' => 'lxhadeb10' ); + my $IP_GSI_href = \%IP_GSI_lookup; @@ -129,6 +143,7 @@ Usage: [-r|--rfio ] : Switch writing to tape on|off. [-p|--prefix ] : Prefix of hld file. [-o|--online ] : Switch RPC server on|off. + [-b|--bnet ] : Specify number of bnet builder nodes (default: 3). [-t|--test] : Test without execution. [-v|--verb] : More verbouse. @@ -591,14 +606,14 @@ my $ebproc =0; # here test special installations: my $cdworkdir = "cd /home/hadaq/oper;"; -# my $cmd_dabc = "/home/hadaq/soft/dabc/bin/dabc_exe.head "; - my $cmd_dabc = "/usr/bin/gdb -x /home/hadaq/soft/dabc/head/base/run/gdbcmd.txt --args /home/hadaq/soft/dabc/bin/dabc_exe.head "; + my $cmd_dabc = "/home/hadaq/soft/dabc/bin/dabc_exe.head "; +# my $cmd_dabc = "/usr/bin/gdb -x /home/hadaq/soft/dabc/head/base/run/gdbcmd.txt --args /home/hadaq/soft/dabc/bin/dabc_exe.head "; my $conf_bnet_inp = " BnetInputHades.head.xml"; my $conf_bnet_bld = " BnetBuilderHades.head.xml"; - # my @bnetservers = ("192.168.100.8","192.168.100.9","192.168.100.10","192.168.100.15"); + my @bnetservers = ("192.168.100.8","192.168.100.9","192.168.100.10","192.168.100.15"); # before we start inidividual bnet processes, need to evaluate list of ports and nodes: @@ -614,18 +629,28 @@ my @bnet_subevt_list = (); my $firstsnd = 1; my $firstrcv = 1; + my $maxbuildservers=3; # do not use lxhadeb05 for data writing + if ($opt_bnet>0 && $opt_bnet <4) { + $maxbuildservers=$opt_bnet; + } + + print "Using $maxbuildservers servers for builder nodes from option -b $opt_bnet\n"; my $rcvport = 12100; for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ print "Gathering processes at EB server: $ebserver\n"; my $sendport = 12501; + my $ip = $bnetservers[$ebserver]; + +############# old # here we use the fact that first 4 eb processes are assigned to first 4 servers. # so node ip is directly mapped from setup: - my $ip = $EB_Args_href->{$ebserver}->{'IP'}; - #dirty workaround for bnet at eb0: - if ($ebserver == 0) { - $ip = '192.168.100.8'; - } +# my $ip = $EB_Args_href->{$ebserver}->{'IP'}; +# #dirty workaround for bnet at eb0: +# if ($ebserver == 0) { +# $ip = '192.168.100.8'; +# } +###################### # JAM2018 - need to transform HADES VLAN IPs into GSI VLAN for BNET! my $gsi_ip = getIP_hades2gsi($ip); @@ -640,14 +665,19 @@ for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ $sendport=$sendport+1; $firstsnd=0 if($firstsnd>0); } - for (my $rix=0; $rix<$bnet_numbuilders; $rix=$rix+1) + + + # exclude builder nodes not specified by option: + if($ebserver < $maxbuildservers) { + for (my $rix=0; $rix<$bnet_numbuilders; $rix=$rix+1) + { $bnetrcvs=$bnetrcvs . "," unless ($firstrcv>0); $bnetrcvs=$bnetrcvs . $gsi_ip.":". $rcvport; $rcvport=$rcvport+1; $firstrcv=0 if($firstrcv>0); + } } - my $hadaqports = "["; my $calibflags = "["; my $subevents = "["; @@ -661,7 +691,7 @@ for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ # todo: how to distribute the ports to more than one bnet input process per server? my $cflag = $EB_Args_href->{$ebproc}->{'CALIB_LIST'}[$ix]; my $hub = $EB_Args_href->{$ebproc}->{'HUB_LIST'}[$ix]; - print "ip" . $ip . " with port:" . $port ." index:" . $ix . " ip: ". $EB_Args_href->{$ebproc}->{'IP_LIST'}[$ix] . " calib: ". $cflag ." hub: ". $hub ."\n" ; + #print "ip" . $ip . " with port:" . $port ." index:" . $ix . " ip: ". $EB_Args_href->{$ebproc}->{'IP_LIST'}[$ix] . " calib: ". $cflag ." hub: ". $hub ."\n" ; if($ip eq $EB_Args_href->{$ebproc}->{'IP_LIST'}[$ix]) { $hadaqports=$hadaqports . "," unless ($firstport>0); @@ -702,12 +732,8 @@ for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ print "Starting input processes on EB server: $ebserver\n"; my $ebid=$ebserver + 1; # still need unique eventbuilder ids on cluster because of epics! - # here we use the fact that first 4 eb processes are assigned to first 4 servers. - # so node ip is directly mapped from setup: - my $cpu = $EB_Args_href->{$ebserver}->{'IP'}; - if ($ebserver == 0) { - $cpu = '192.168.100.8'; - } + my $cpu = $bnetservers[$ebserver]; + my $gsi_cpu = getIP_hades2gsi($cpu); # in the following, the port and ip setup of the bnet is taken from ebproc 15 or 0 only! @@ -758,22 +784,27 @@ for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ } # end senders # todo: loop over builders - - for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ + + + for ( my $ebserver=0; $ebserver<$maxbuildservers; $ebserver=$ebserver+1){ print "Starting builder processes on EB server: $ebserver\n"; my $ebid=$ebserver + 1; # still need unique eventbuilder ids on cluster because of epics! + my $cpu = $bnetservers[$ebserver]; + +########### old # here we use the fact that first 4 eb processes are assigned to first 4 servers. # so node ip is directly mapped from setup: - my $cpu = $EB_Args_href->{$ebserver}->{'IP'}; - if ($ebserver == 0) { - $cpu = '192.168.100.8'; - } +# my $cpu = $EB_Args_href->{$ebserver}->{'IP'}; +# if ($ebserver == 0) { +# $cpu = '192.168.100.8'; +# } +################# my $gsi_cpu = getIP_hades2gsi($cpu); # in the following, the port and ip setup of the bnet is taken from ebproc 15 or 0 only! - #my $bnet_numsenders = $EB_Args_href->{$ebserver}->{'BNET_INP'}; my $bnet_numbuilders = $EB_Args_href->{$ebserver}->{'BNET_BLD'}; + print "found $bnet_numbuilders builders on node $cpu \n"; @@ -792,13 +823,18 @@ for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ " export BNETRECEIVERS=" . $bnetrcvs . ";" . " export HADAQPORTS=" . $bnet_port_list[$ebserver]. "; " ; - if($EB_Args_href->{$ebproc}->{'OUTDIR'} ){ - if($EB_Args_href->{$ebproc}->{'MULTIDISK'}){ - $exports = $exports . "export DAQDISK=1; export OUTDIR=/data01; "; - } - else{ - $exports = $exports . "export DAQDISK=0; export OUTDIR=" . $EB_Args_href->{$ebproc}->{'OUTDIR'} .";"; - } + if($EB_Args_href->{$ebproc}->{'OUTDIR'} ){ + # no daqdisk demon anymore for raid6- + $exports = $exports . "export DAQDISK=0; export OUTDIR=/data01/data; "; + +# if($EB_Args_href->{$ebproc}->{'MULTIDISK'}){ +# $exports = $exports . "export DAQDISK=1; export OUTDIR=/data01; "; +# } +# else{ +# $exports = $exports . "export DAQDISK=0; export OUTDIR=" . $EB_Args_href->{$ebproc}->{'OUTDIR'} .";"; +# } + + # if( $EB_Args_href->{$ebproc}->{'RFIO'} ){ # @@ -855,6 +891,7 @@ for ( my $ebserver=0; $ebserver<4; $ebserver=$ebserver+1){ forkMe($exe_dabc, $log, \@process_list) unless($opt_test); $ebid = $ebid + 4 ; # increment ebnum by 4 per ebserver to re-use EPICS iocs +# $ebid = $ebid + 3 ; # increment ebnum for the 3 remaining builder servers $portid = $portid + 1; $bnebport = $bnebport +1; #