DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dpdklibs.reader_confgen Namespace Reference

Functions

 generate_dpdk_reader_app (DRO_CONFIG=None, HOST='localhost', ENABLE_SOFTWARE_TPG=False, NUMBER_OF_GROUPS=4, NUMBER_OF_LINKS_PER_GROUP=1, NUMBER_OF_DATA_PRODUCERS=1, BASE_SOURCE_IP="10.73.139.", DESTINATION_IP="10.73.139.17", FRONTEND_TYPE='tde', EAL_ARGS='')
 

Variables

 default_load_path
 
int QUEUE_POP_WAIT_MS = 100
 

Function Documentation

◆ generate_dpdk_reader_app()

dpdklibs.reader_confgen.generate_dpdk_reader_app ( DRO_CONFIG = None,
HOST = 'localhost',
ENABLE_SOFTWARE_TPG = False,
NUMBER_OF_GROUPS = 4,
NUMBER_OF_LINKS_PER_GROUP = 1,
NUMBER_OF_DATA_PRODUCERS = 1,
BASE_SOURCE_IP = "10.73.139.",
DESTINATION_IP = "10.73.139.17",
FRONTEND_TYPE = 'tde',
EAL_ARGS = '' )

Definition at line 32 of file reader_confgen.py.

43):
44
45 number_of_dlh = NUMBER_OF_GROUPS
46
47 DRO_CONFIG = []
48
49 modules = []
50 queues = []
51
52 links = []
53 rxcores = []
54 lid = 0
55 last_ip = 100
56 for group in range(NUMBER_OF_GROUPS):
57 offset= 0
58 qlist = []
59 for src in range(NUMBER_OF_LINKS_PER_GROUP):
60 links.append(nrc.Link(id=lid, ip=BASE_SOURCE_IP+str(last_ip), rx_q=lid, lcore=group+1))
61 qlist.append(lid)
62 lid += 1
63 last_ip += 1
64 offset += NUMBER_OF_LINKS_PER_GROUP
65 rxcores.append(nrc.LCore(lcore_id=group+1, rx_qs=qlist))
66
67 modules += [DAQModule(name="nic_reader", plugin="DPDKReaderModule",
68 conf=nrc.Conf(eal_arg_list=EAL_ARGS,
69 dest_ip=DESTINATION_IP,
70 rx_cores=rxcores,
71 ip_sources=links),
72 )]
73
74 queues += [Queue(f"nic_reader.output_{idx}",
75 f"datahandler_{idx}.raw_input",
76 f'{FRONTEND_TYPE}_link_{idx}', 100000)
77 for idx in range(number_of_dlh)]
78
79 # for link in DRO_CONFIG.link:
80 for i in range(number_of_dlh):
81 source_id = i
82 if ENABLE_SOFTWARE_TPG:
83 queues += [Queue(f"datahandler_{idx}.tp_out",f"sw_tp_handler_{idx}.raw_input",f"sw_tp_link_{idx}",100000 )]
84
85 modules += [DAQModule(name=f"datahandler_{source_id}", plugin="RawDataHandler", conf=rconf.Conf(
86 readoutmodelconf=rconf.DataHandlingModelConf(
87 source_queue_timeout_ms=QUEUE_POP_WAIT_MS,
88 fake_trigger_flag=1,
89 # source_id =link.dro_source_id,
90 source_id=source_id,
91 timesync_connection_name = f"timesync_dlh_{source_id}",
92 timesync_topic_name = "Timesync",
93 ),
94 latencybufferconf=rconf.LatencyBufferConf(
95 latency_buffer_size=1000,
96 # source_id=link.dro_source_id,
97 source_id=source_id,
98 ),
99 rawdataprocessorconf=rconf.RawDataProcessorConf(
100 # source_id=link.dro_source_id,
101 source_id=source_id,
102 enable_software_tpg=ENABLE_SOFTWARE_TPG,
103 error_counter_threshold=100,
104 error_reset_freq=10000,
105 ),
106 requesthandlerconf=rconf.RequestHandlerConf(
107 latency_buffer_size=1000,
108 pop_limit_pct=0.8,
109 pop_size_pct=0.1,
110 # source_id=link.dro_source_id,
111 source_id=source_id,
112 output_file=f"output_{source_id}.out",
113 stream_buffer_size=8388608,
114 enable_raw_recording=True,
115 ),
116 ), extra_commands={"record": rconf.RecordingParams(duration=10)})]
117
118 modules += [DAQModule(name="timesync_consumer", plugin="TimeSyncConsumer")]
119 modules += [DAQModule(name="fragment_consumer", plugin="FragmentConsumer")]
120
121 mgraph = ModuleGraph(modules, queues=queues)
122
123 for idx in range(number_of_dlh):
124 mgraph.connect_modules(f"datahandler_{idx}.timesync_output", "timesync_consumer.input_queue", "timesync_q")
125 mgraph.connect_modules(f"datahandler_{idx}.fragment_queue", "fragment_consumer.input_queue", "data_fragments_q", 100)
126 mgraph.add_endpoint(f"requests_{idx}", f"datahandler_{idx}.request_input", Direction.IN)
127 mgraph.add_endpoint(f"requests_{idx}", None, Direction.OUT) # Fake request endpoint
128
129 dpdk_app = App(modulegraph=mgraph, host=HOST, name="dpdk_reader")
130 return dpdk_app

Variable Documentation

◆ default_load_path

dpdklibs.reader_confgen.default_load_path

Definition at line 5 of file reader_confgen.py.

◆ QUEUE_POP_WAIT_MS

int dpdklibs.reader_confgen.QUEUE_POP_WAIT_MS = 100

Definition at line 29 of file reader_confgen.py.