my $opt_rfio = 'undef';
my $opt_disk = 'undef';
my $opt_online = 'undef';
+my $opt_bnet = 3;
my $opt_prefix;
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 ) {
#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;
[-r|--rfio <on|off>] : Switch writing to tape on|off.
[-p|--prefix <prefix>] : Prefix of hld file.
[-o|--online <on|off>] : Switch RPC server on|off.
+ [-b|--bnet <on|off>] : Specify number of bnet builder nodes (default: 3).
[-t|--test] : Test without execution.
[-v|--verb] : More verbouse.
# 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:
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);
$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 = "[";
# 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);
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!
} # 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";
" 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'} ){
#
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;
#