blob: f3381fb1ae23dcba086f9bb72208d66470934bd0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Architecture
===========
- Current implementation follows UFO architecture: reader and dataset-builder are split in two filters.
* The reader is multi-threaded. However, only a single instance of the builder is possible to schedule.
This could limit maximum throughput on dual-head or even signle-head, but many-core systems.
* Another problem here is timing. All events in the builder are initiaded from the reader. Consequently,
as it seems we can't timeout on semi-complete dataset if no new data is arriving.
* Besides, performance this is also critical for stability. With continuous streaming there is no problem,
however, if a finite number of frames requested and some packets are lost, the software will wait forever
for missing bits.
Questions
=========
- Can we pre-allocate several UFO buffers for forth-comming events. Currently, we need to buffer out-of-order
packets and copy them later (or buffer everything for simplicity). We can avoid this data copy if we can get
at least one packet in advance.
- How I can execute 'generate' method on 'reductor' filter if no new data on the input for the specified
amount of time. One option is sending empty buffer with metadata indicating timeout. But this is again
hackish.
- Can we use 16-bit buffers? I can set dimmensions to 1/4 of the correct value to address this. But is it
possible to do in a clean way?
- What is 'ufotools' python package mentioned in documentation? Just a typo?
|