TeeTime issueshttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues2018-01-08T14:58:06+01:00https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/358Let each node have its individual scheduling2018-01-08T14:58:06+01:00Christian WulfLet each node have its individual schedulingProposals:
1. ``nodeToStages(scheduler, name, stages...)``
1. ``new Execution(Scheduler...)``
1. Allow to assign each named node not only an IP address, but also a scheduler (using the fqn)Proposals:
1. ``nodeToStages(scheduler, name, stages...)``
1. ``new Execution(Scheduler...)``
1. Allow to assign each named node not only an IP address, but also a scheduler (using the fqn)https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/341Finish implementation of DynamicTaskFarmStage2017-10-20T20:14:50+02:00Christian WulfFinish implementation of DynamicTaskFarmStageSo far, ``declareActive()`` at runtime is required, but not yet implemented/mergedSo far, ``declareActive()`` at runtime is required, but not yet implemented/mergedVersion 3.0Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/316Further Features for the Configuration Builder2017-03-13T14:28:23+01:00Sören HenningFurther Features for the Configuration Builder* Support for distribution/merging
* `.distribute(strategy)` and `.merge(strategy)`
* Introduction of a composite stage builder
* both builders are more or less equal, but have different return types (`Configuration` or `CompositeSta...* Support for distribution/merging
* `.distribute(strategy)` and `.merge(strategy)`
* Introduction of a composite stage builder
* both builders are more or less equal, but have different return types (`Configuration` or `CompositeStage`)
* possible solution: Write one single builder which is type parameterized
* (`CompositeStageBuilder<T extends CompositeStage`)
* get builder by static `CompositeStage.builder()` or `Configuration.builder()` respectively
* `.toActive(stage)` and `.endActive(stage)` methods that connect the stage and additionally set it activehttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/298ClassNameRegistryCreationFilter should optionally throw exception2016-10-03T12:11:23+02:00Nils Christian EhmkeClassNameRegistryCreationFilter should optionally throw exceptionWhen the ClassNameRegistryCreationFilter currently cannot find the directory or the mapping file, it logs an error and then returns. However, this behaviour makes it difficult to find out whether the import of a monitoring log was succes...When the ClassNameRegistryCreationFilter currently cannot find the directory or the mapping file, it logs an error and then returns. However, this behaviour makes it difficult to find out whether the import of a monitoring log was successful or not. Instead, the filter (and consequently the Dir2RecordsFilter as well) should provide a property or a constructor flag to switch the behaviour to: throw an actual exception in case of an error. This would lead to an ExecutionException thrown by the Execution, which then could be handled by the application.
(Version is 2.1)Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/283Implement AbstractTrigger2016-06-12T07:42:10+02:00Christian WulfImplement AbstractTriggerChristian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/246Add batch mode feature2015-10-08T13:45:04+02:00Nelson Tavares de SousaAdd batch mode featureA "batch mode" scheduler may be an interesting feature.
It can be a major help for debugging to testing scenarios, if all stages work simultaneously in ticks.A "batch mode" scheduler may be an interesting feature.
It can be a major help for debugging to testing scenarios, if all stages work simultaneously in ticks.https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/223Deactivate stages at runtime2016-09-08T13:48:49+02:00Nelson Tavares de SousaDeactivate stages at runtimeImplement a Stage.declarePassive methodImplement a Stage.declarePassive methodMarc AdolfMarc Adolfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/201Loop detection2016-07-15T12:37:22+02:00Nelson Tavares de SousaLoop detectionWe need a loop detection..
Configurations are directed graphs.
Therefore, a loop is a strongly connected component.
Tarjan's algorithm does not suite our needs, as it will not detect nested strongly connected components (nested loop...We need a loop detection..
Configurations are directed graphs.
Therefore, a loop is a strongly connected component.
Tarjan's algorithm does not suite our needs, as it will not detect nested strongly connected components (nested loops would be ignored)
This is related to some other tickets... #47 , #157 , #127 Version 2.1https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/175Print all thread-stage assignments if debugging is enabled2016-02-22T14:28:10+01:00Nelson Tavares de SousaPrint all thread-stage assignments if debugging is enabledTo improve debugging, we should enable a overview of all thread and their stages.To improve debugging, we should enable a overview of all thread and their stages.Version 2.1https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/146Implement a generic Divide & Conquer stage2016-02-22T14:19:04+01:00Christian WulfImplement a generic Divide & Conquer stage- should automatically instantiate as many threads as necessary- should automatically instantiate as many threads as necessaryVersion 2.1Robin MohrRobin Mohrhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/132Publish comparison with other frameworks on website2016-02-22T14:19:04+01:00Christian WulfPublish comparison with other frameworks on website- TPL
- no multiple data streams, i.e., no ports
- Akka
- no port abstraction
- less efficient due to use of MPSC queues
- ...- TPL
- no multiple data streams, i.e., no ports
- Akka
- no port abstraction
- less efficient due to use of MPSC queues
- ...Version 2.1Nelson Tavares de SousaNelson Tavares de Sousahttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/126Implement fibonacci experiment2016-02-22T14:28:10+01:00Christian WulfImplement fibonacci experiment```
FibonacciArgumentProducer(n) <- TODO
1->1
Distributor
1->* ---- thread bound ----
Fibonacci <- TODO
*->1 ---- thread bound ----
Merger
1->1
Adder <- TODO
...```
FibonacciArgumentProducer(n) <- TODO
1->1
Distributor
1->* ---- thread bound ----
Fibonacci <- TODO
*->1 ---- thread bound ----
Merger
1->1
Adder <- TODO
1->1
Collector
```Version 2.1https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/125Automatically instantiate another worker thread if distributor terminates2016-02-22T14:28:10+01:00Christian WulfAutomatically instantiate another worker thread if distributor terminates- Either the distributor or a thread assignment scheduler instantiates the new worker.
- Either the distributor or the new worker thread steals elements from the other workers' pipes.
Work stealing is efficient if the theft is perfor...- Either the distributor or a thread assignment scheduler instantiates the new worker.
- Either the distributor or the new worker thread steals elements from the other workers' pipes.
Work stealing is efficient if the theft is performed not until the producer has finished.Version 2.1https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/117Create a TCP Pipe (or port?)2015-04-20T16:30:54+02:00Nelson Tavares de SousaCreate a TCP Pipe (or port?)Implement a prototype, which connects two different nodes.Implement a prototype, which connects two different nodes.https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/71Implement a generic aggregation filter2016-02-22T14:19:04+01:00Christian WulfImplement a generic aggregation filter- one input port of type ``T``, one output port of type ``AggregationContainer<T>``
- aggregation is performed with a user-defined aggregation function on instances of type ``T``
```java
class AggregationContainer<T> {
int count...- one input port of type ``T``, one output port of type ``AggregationContainer<T>``
- aggregation is performed with a user-defined aggregation function on instances of type ``T``
```java
class AggregationContainer<T> {
int count; // probably already accessible by the elements collection
? aggregatedBy
Collection<T> elements; // unordered or ordered?
}
```Version 2.1Nelson Tavares de SousaNelson Tavares de Sousahttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/36Implement an analysis config for evaluation purposes2016-02-22T14:19:04+01:00Christian WulfImplement an analysis config for evaluation purposesWe need a Pipes & Filters benchmark suite that provides conceptual benchmarks for at least the following scenarios
- an unsynchronized pipeline (single-threaded)
- to answer: efficiency
- a synchronized pipeline (single-threaded)
-...We need a Pipes & Filters benchmark suite that provides conceptual benchmarks for at least the following scenarios
- an unsynchronized pipeline (single-threaded)
- to answer: efficiency
- a synchronized pipeline (single-threaded)
- to answer: synchronization overhead (cp. single-threaded version)
- a synchronized pipeline (multi-threaded)
- to answer: scalability
- a looped pipeline
- to answer: applicability and efficiency
- a more complex analysis configuration that is not a pipeline
- to answer: applicability and efficiency
- an I/O-intensive analysis configuration
- to answer: efficiencyVersion 2.1Nelson Tavares de SousaNelson Tavares de Sousahttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/35Implement a wait/notify mechanism2016-02-22T14:17:45+01:00Christian WulfImplement a wait/notify mechanismImplement a 'blocking pipe'Implement a 'blocking pipe'Version 2.1Christian WulfChristian Wulfhttps://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/10Introduce cardinality annotations2014-08-23T20:48:55+02:00Christian WulfIntroduce cardinality annotations* `0:1` (e.g., a `Clock`)
* `1:1`
* `1:n` (e.g., a `Directory2FilesReader`)
* `m:n`
* ...
Can help in choosing the optimal pipe implementation between two stages.
For example, consider two stages `a` and `b` where `a` produces ...* `0:1` (e.g., a `Clock`)
* `1:1`
* `1:n` (e.g., a `Directory2FilesReader`)
* `m:n`
* ...
Can help in choosing the optimal pipe implementation between two stages.
For example, consider two stages `a` and `b` where `a` produces at most 1 element per execution and `b` consumes at most 1 element per execution.
Let us assume that both stages are executed by the same thread.
Then, a pipe that connects both stages with each other does not need to be buffered.
Thus, in this case the optimal pipe implementation is an unbuffered and unsynchronized one.
`?(a)1 ---> 1(b)?`https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/9Implement an automatic concept to determine the semantic annotation(s) of a s...2014-08-07T07:57:10+02:00Christian WulfImplement an automatic concept to determine the semantic annotation(s) of a stagesee #8 see #8 https://git.se.informatik.uni-kiel.de/teetime/teetime/-/issues/8Introduce semantic annotations2014-11-04T15:01:26+01:00Christian WulfIntroduce semantic annotations* `<<IO>>`
* `<<stateless>>`
* `<<reduceable>>` (perhaps using an interface to access the `reduce()` method)
* ...* `<<IO>>`
* `<<stateless>>`
* `<<reduceable>>` (perhaps using an interface to access the `reduce()` method)
* ...