Open jspenger opened 1 year ago
For the workloads I suggest some simple patterns: Task-fan-out (many tasks in parallel) Fanout: 1024 Chain-of-tasks Chain-length 1024 Chain-of-workflows Chain-length 128 Workflows-fan-out Fanout: 128 Cyclic-workflow Stateful computation: Every event is a state operation Very large state per event
I think this should be sufficient. Many of these examples exist in the test files already, you can just search for the test files. https://github.com/portals-project/portals/blob/main/core/src/test/scala/portals/api/builder/ApplicationBuilderTest.scala
These tests should stress test the system: it should run at full capacity for about a minute or so in total at least. You want the GC to kick in, if we have GC issues. Use your judgement, we are trying to find out if there are issues with the runtime which cause escalating issues.
Additionally, it makes sense to also to force some computation to happen. See for example: https://github.com/portals-project/portals/blob/main/benchmark/src/main/scala/portals/benchmark/BenchmarkUtils.scala#L59C20-L79
After today's discussion:
Examples of this can be found in the benchmark CLI file.
There should be some tests that stress-test the system on large amounts of data.