portals-project / portals

Portals is a framework for stateful serverless apps, unifying dataflow streaming with actors
https://www.portals-project.org/
Apache License 2.0
19 stars 2 forks source link

Stress-test the system #136

Open jspenger opened 1 year ago

jspenger commented 1 year ago

There should be some tests that stress-test the system on large amounts of data.

jspenger commented 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

jspenger commented 1 year ago

After today's discussion:

Examples of this can be found in the benchmark CLI file.