You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/Advanced.md
+43-1Lines changed: 43 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,7 @@ Advanced topics
13
13
*[Example 2: advanced](#example-2-advanced)
14
14
*[Limitations](#limitations)
15
15
*[Multi-node setups](#multi-node-setups)
16
+
*[Moving window](#moving-window)
16
17
*[Writing a DPL data producer](#writing-a-dpl-data-producer)
17
18
*[QC with DPL Analysis](#qc-with-dpl-analysis)
18
19
*[Getting AODs directly](#getting-aods-directly)
@@ -269,6 +270,44 @@ and `qc/TST/MO/MultiNodeRemote`, and corresponding Checks under the path `qc/TST
269
270
When using AliECS, one has to generate workflow templates and upload them to the corresponding repository. Please
270
271
contact the QC or AliECS developers to receive assistance or instruction on how to do that.
271
272
273
+
## Moving window
274
+
275
+
By default QC Tasks are never reset, thus the MOs they produce contain data from the full run.
276
+
However, if objects should have a shorter validity range, one may add the following options to QC Task configuration:
277
+
```json
278
+
"MovingWindowTaskA": {
279
+
...
280
+
"resetAfterCycles": "10",
281
+
}
282
+
```
283
+
In the case above the QC Task will have the `TaskInterface::reset()` method invoked each 10 cycles.
284
+
285
+
If the QC Task runs in parallel on many nodes and its results are merged, the effects will be different
286
+
depending on the chosen merging mode:
287
+
- If `"delta"` mode is used, the Merger in the last layer will implement the moving window, while the QC Tasks will
288
+
still reset after each cycle. Please note, that QC Tasks will fall out of sync during data acquisition, so the moving
289
+
window might contain slightly misaligned data time ranges coming from different sources. Also, due to fluctuations of
290
+
the data transfer, objects coming from different sources might appear more frequently than others. Thus, one might
291
+
notice higher occupancy on stave A one time, but the next object might contain less than average data for the same stave.
292
+
- In the `"entire"` mode, QC Tasks will reset MOs, while Mergers will use the latest available object version from each
293
+
Task. Please note that if one of the Tasks dies, an old version of MO will be still used over and over. Thus, `"delta"`
294
+
mode is advised in most use cases.
295
+
296
+
In setups with Mergers one may also extend the Mergers cycle duration, which can help to even out any data fluctuations:
297
+
```json
298
+
"MovingWindowTaskB": {
299
+
...
300
+
"cycleDurationSeconds" : "60",
301
+
"mergingMode" : "delta",
302
+
"mergerCycleMultiplier": "10", "": "multiplies cycleDurationSeconds in Mergers",
303
+
"resetAfterCycles": "1", "": "it could be still larger than 1"
304
+
}
305
+
```
306
+
In the presented case, the Merger will publish one set of complete MOs per 10 minutes, which should contain all deltas
307
+
received during this last period. Since the QC Tasks cycle is 10 times shorter, the occupancy fluctuations should be
308
+
less apparent. Please also note, that using this parameter in the `"entire"` merging mode does not make much sense,
309
+
since Mergers would use every 10th incomplete MO version when merging.
310
+
272
311
## Writing a DPL data producer
273
312
274
313
For your convenience, and although it does not lie within the QC scope, we would like to document how to write a simple data producer in the DPL. The DPL documentation can be found [here](https://github.com/AliceO2Group/AliceO2/blob/dev/Framework/Core/README.md) and for questions please head to the [forum](https://alice-talk.web.cern.ch/).
@@ -694,6 +733,8 @@ the "tasks" path.
694
733
"taskParameters": { "": "User Task parameters which are then accessible as a key-value map.",
695
734
"myOwnKey": "myOwnValue", "": "An example of a key and a value. Nested structures are not supported"
696
735
},
736
+
"resetAfterCycles" : "0", "": "Makes the Task or Merger reset MOs each n cycles.",
737
+
"": "0 (default) means that MOs should cover the full run.",
697
738
"location": "local", "": ["Location of the QC Task, it can be local or remote. Needed only for",
698
739
"multi-node setups, not respected in standalone development setups."],
699
740
"localMachines": [ "", "List of local machines where the QC task should run. Required only",
@@ -705,7 +746,8 @@ the "tasks" path.
705
746
"remotePort": "30432", "": "Remote QC machine TCP port. Required only for multi-node setups.",
706
747
"localControl": "aliecs", "": ["Control software specification, \"aliecs\" (default) or \"odc\").",
707
748
"Needed only for multi-node setups."],
708
-
"mergingMode": "delta", "": "Merging mode, \"delta\" (default) or \"entire\" objects are expected"
749
+
"mergingMode": "delta", "": "Merging mode, \"delta\" (default) or \"entire\" objects are expected",
750
+
"mergerCycleMultiplier": "1", "": "Multiplies the Merger cycle duration with respect to the QC Task cycle"
0 commit comments