#- the command line option flags
my $opt_help = 0;
-my $opt_ebconf = "/home/hadaq/trbsoft/daq/evtbuild/eb.conf";
+my $opt_ebconf = "/home/hadaq/trbsoft/hadesdaq/evtbuild/eb.conf.withdabc";
my $opt_ioc = "";
my $opt_test = 0;
my $opt_verb = 0;
#cores 0/1 reserved for system 02-05
#cores 2/3 reserved for interrupts on 02-05
-
- foreach my $core (0..7){
- if($core == 1){
- $EB_CPU_status_href->{'192.168.100.11'}->{$core} = "res"; #reserved
- }
- else{
- $EB_CPU_status_href->{'192.168.100.11'}->{$core} = "free";
- }
- }
+
+#lxhadeb01 is gone
+# foreach my $core (0..7){
+# if($core == 1){
+# $EB_CPU_status_href->{'192.168.100.11'}->{$core} = "res"; #reserved
+# }
+# else{
+# $EB_CPU_status_href->{'192.168.100.11'}->{$core} = "free";
+# }
+# }
+
+#JAM adjust this to actual affinities for eth0 settings TODO
foreach my $core (0..11){
- if($core < 4){
+ if($core < 4 ){
$EB_CPU_status_href->{'192.168.100.12'}->{$core} = "res"; #reserved
$EB_CPU_status_href->{'192.168.100.13'}->{$core} = "res"; #reserved
$EB_CPU_status_href->{'192.168.100.14'}->{$core} = "res"; #reserved
}
foreach my $core (0..23){
- if($core < 4){
+ if($core < 4 ){
$EB_CPU_status_href->{'192.168.100.15'}->{$core} = "res"; #reserved
}
else{
$EB_CPU_status_href->{'192.168.100.15'}->{$core} = "free";
}
}
+
}
sub getCoreNr()
my $listOfEBs = $temp_args_href->{'Parallel'}->{'EB_LIST'};
my @eb_list = split(/\s+/, $listOfEBs);
+ #- DABC mode selection
+ my $listOfDABC = $temp_args_href->{'Parallel'}->{'DABC'};
+ my @dabc_list = split(/\s+/, $listOfDABC);
+
+
#- Default RFIO settings
my $rfio = $temp_args_href->{'Parallel'}->{'RFIO'};
my $rfio_path = $temp_args_href->{'Parallel'}->{'RFIO_PATH'};
$href->{$ebproc}->{'EPICS_CTRL'} = $epics_list[$ebproc]; # 0|1
+ $href->{$ebproc}->{'DABC'} = $dabc_list[$ebproc]; # 0|1
+
+
$href->{$ebproc}->{'EB_LOG'} = $eblog_list[$ebproc]; # 0|1
$href->{$ebproc}->{'NM_LOG'} = $nmlog_list[$ebproc]; # 0|1
my $ebnum2print = $ebproc+1;
print "EB process: $ebnum2print\n";
+
+# JAM first test if we should activate dabc eventbuilder or old one
+
+ if( $EB_Args_href->{$ebproc}->{'DABC'} ){
+ print "Starting DABC process..\n";
+# TODO: here evaluate parameters and code into dabc command execution
+
+#". /home/joern/dabcwork/head/dabclogin;cd /home/joern/dabcwork/head/plugins/hadaq/app; export EBNUM=1; export STREAMS=5; export UDP00=10101; export UDP01=10102; export UDP02=10103; export UDP03=10104; export UDP04=10105 export PREFIX=be; /home/joern/dabcwork/head/bin/dabc_exe EventBuilderHades.xml &" > /dev/null 2>&1 &
+
+ my $cpu = $EB_Args_href->{$ebproc}->{'IP'};
+ my $dabclogin = ". /home/hadaq/soft/dabc/head/dabclogin;";
+ my $cdworkdir = "cd //home/hadaq/oper;";
+
+ my $cmd_dabc = "/home/hadaq/soft/dabc/head/bin/dabc_exe ";
+ my $conf_dabc = " EventBuilderHades.xml";
+ my $exports = " export EBNUM=" . $EB_Args_href->{$ebproc}->{'EBNUM'} . "; " .
+ " export STREAMS=" . $EB_Args_href->{$ebproc}->{'SOURCENUM'} . "; " .
+ " export PREFIX=" . $EB_Args_href->{$ebproc}->{'PREFIX'}. "; " ;
+
+ my @port_list = ();
+
+ #- add ports
+ my $ix =0;
+ foreach my $port (@{$EB_Args_href->{$ebproc}->{'PORT_LIST'}}){
+ #$cmd_nm = $cmd_nm . " -i UDP:0.0.0.0:" . $port;
+ my $index=sprintf("%02d", $ix++);
+ $exports = $exports . " export UDP". $index. "=" . $port . "; ";
+ push(@port_list, $port);
+ }
+ &cpPortList2EB(\@port_list, $EB_Args_href->{$ebproc}->{'EBNUM'}, $cpu);
+
+
+
+
+
+
+# MULTIDISK
+
+#- add output type
+
+ if($EB_Args_href->{$ebproc}->{'OUTDIR'} ){
+ $exports = $exports . " export FILEOUTPUTS=2;";
+ 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'} .";";
+ }
+ }
+ else{
+ $exports = $exports . " export FILEOUTPUTS=1;";
+ # no output except for the stream server...
+ }
+
+
+# additional exports for RFIO
+
+ $exports = $exports . " export RFIOPATH=". $EB_Args_href->{$ebproc}->{'RFIO_PATH'} . ";";
+ $exports = $exports . " export RFIOLUSTREPATH=". $EB_Args_href->{$ebproc}->{'RFIO_pcCopyPath'} . ";";
+ $exports = $exports . " export RFIOCOPYMODE=". $EB_Args_href->{$ebproc}->{'RFIO_iCopyMode'} . ";";
+ $exports = $exports . " export RFIOCOPYFRAC=". $EB_Args_href->{$ebproc}->{'RFIO_iCopyFrac'} . ";";
+ $exports = $exports . " export RFIOMAXFILE=". $EB_Args_href->{$ebproc}->{'RFIO_iMaxFile'} . ";";
+ $exports = $exports . " export RFIOPATHCONV=". $EB_Args_href->{$ebproc}->{'RFIO_iPathConv'} . ";";
+
+
+if( $EB_Args_href->{$ebproc}->{'RFIO'} ){
+ $exports = $exports . " export FILEOUTPUTS=3;";
+
+# switch on by number of outputs
+}
+
+
+# my $rfio;
+# if( $EB_Args_href->{$ebproc}->{'RFIO'} ){
+# $rfio = " --rfio " . $EB_Args_href->{$ebproc}->{'RFIO_PATH'} .
+# " --rfiolustre " . $EB_Args_href->{$ebproc}->{'RFIO_pcCopyPath'} .
+# " --rfio_pcoption " . $EB_Args_href->{$ebproc}->{'RFIO_pcOptions'} .
+# " --rfio_icopymode " . $EB_Args_href->{$ebproc}->{'RFIO_iCopyMode'} .
+# " --rfio_icopyfrac " . $EB_Args_href->{$ebproc}->{'RFIO_iCopyFrac'} .
+# " --rfio_imaxfile " . $EB_Args_href->{$ebproc}->{'RFIO_iMaxFile'} .
+# " --rfio_ipathconv " . $EB_Args_href->{$ebproc}->{'RFIO_iPathConv'};
+# }
+
+
+# EPICSCONTROL ? always enabled for production
+# SMALLFILES for online monitoring node
+
+
+ my $core_nr = &getCoreNr($cpu);
+
+# JAM use fixed core number for kp1pc092 tests:
+# my $core_nr = 1;
+ my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr $cmd_dabc $conf_dabc &\"";
+
+
+
+ my $log = $log_path . "/log_" . $ebproc . "_" . "startEB.txt";
+ #my $log = "/dev/null 2>&1";
+
+ print "Forking:" . $exe_dabc ."\n";
+ forkMe($exe_dabc, $log, \@process_list) unless($opt_test);
+
+}
+
+else
+{
+# the standard EB processes mode:
+ print "Starting evtbuild/netmem processes..\n";
+
#--- Prepare execution of daq_evtbuild
my $cmd_eb = "/home/hadaq/bin/daq_evtbuild" .
" -m " . $EB_Args_href->{$ebproc}->{'SOURCENUM'} .
#- add rfio args
my $rfio;
if( $EB_Args_href->{$ebproc}->{'RFIO'} ){
- $rfio = " --rfio " . $EB_Args_href->{$ebproc}->{'RFIO_PATH'} .
+ $rfio = " --rfio rfiodaq:gstore:" . $EB_Args_href->{$ebproc}->{'RFIO_PATH'} .
" --rfiolustre " . $EB_Args_href->{$ebproc}->{'RFIO_pcCopyPath'} .
" --rfio_pcoption " . $EB_Args_href->{$ebproc}->{'RFIO_pcOptions'} .
" --rfio_icopymode " . $EB_Args_href->{$ebproc}->{'RFIO_iCopyMode'} .
&forkEB($exe_eb, $exe_nm, $exe_open_eb, $exe_open_nm, \@process_list);
}
+}
+# if dabc
+
#- Wait for children
foreach my $cur_child_pid (@process_list) {
waitpid($cur_child_pid,0);
}
-}
+
+}
+# foreach
sub stopEvtBuilders()
{
ebctrl_registerRecordDeviceDriver(pdbbase)
## Load record instances
-dbLoadRecords("db/stats.db", "PREFIX=HAD:IOC:,IOC=\${HOSTNAME}")
+dbLoadRecords("db/stats.db", "PREFIX=HAD:IOC:,IOC=$ebnum")
dbLoadRecords("db/evtbuild.db","eb=$ebnum")
dbLoadRecords("db/netmem.db","eb=$ebnum")
dbLoadRecords("db/errbit1.db","eb=$ebnum")
my $data_sources = $temp_args_href->{'Parallel'}->{'DATA_SOURCES'};
my $gbe_conf = $temp_args_href->{'Parallel'}->{'GBE_CONF'};
- my $cts_conf = $temp_args_href->{'Parallel'}->{'CTS_CONF'};
+ #my $cts_conf = $temp_args_href->{'Parallel'}->{'CTS_CONF'};
my %activeSources_hash;
my $activeSources_href = \%activeSources_hash;