]> jspc29.x-matter.uni-frankfurt.de Git - hadesdaq.git/commitdiff
improved version of eventbuilder start script. under construction
authorHadaq Hades <hadaq@lxhadesdaq>
Wed, 13 Jun 2018 12:57:49 +0000 (14:57 +0200)
committerHadaq Hades <hadaq@lxhadesdaq>
Wed, 13 Jun 2018 12:57:49 +0000 (14:57 +0200)
evtbuild/start_eb_gbe.pl

index 56ba68a64e2d224fcd71854b69b04131ba5f3016..a4b61d99e5a7bbef8d00af28486d5f9ea12b2424 100755 (executable)
@@ -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 <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.
 
@@ -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;
        #