diff options
Diffstat (limited to 'src/DEVELOPMENT')
-rw-r--r-- | src/DEVELOPMENT | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/DEVELOPMENT b/src/DEVELOPMENT new file mode 100644 index 0000000..f3381fb --- /dev/null +++ b/src/DEVELOPMENT @@ -0,0 +1,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? |