restatedev / restate

Restate is the platform for building resilient applications that tolerate all infrastructure faults w/o the need for a PhD.
https://docs.restate.dev
Other
1.27k stars 31 forks source link

Runtime performance analysis #35

Open tillrohrmann opened 1 year ago

tillrohrmann commented 1 year ago

Some points to consider:

### Tasks
- [ ] concurrency limits - I think that’s 1k at the moment, I think that it: pretty conservative (should be 1 million imho)
- [ ] queue sizes - overall it’s ok for the queues to be in the MBs (32, 64, 128..) preallocated ring buffers.
- [ ] Logging could relax a bit
- [ ] Jemalloc sounds like a good idea, but I don’t have a lot of knowledge about it. It didn’t help with a micro benchmark, but probably it is something the manifests with a very long tests.
- [ ] Rocksdb currently uses the WAL, which means that every write goes trough fsync. Hopefully that once we’ll switch to the Raft based impl, we will put way less stuff into the WAL (just the command vs all the side effects) Could be interesting just to measure the effect of not WALing.
- [ ] Generally rocksdb - so far the workload fits in memory, let’s see where do we spend the time. Perhaps tweaking some septic CFs settings, might help us. For example the status CF could use a Hash based memtable to better optimize for point lookups.
- [ ] https://github.com/restatedev/restate/issues/99
- [ ] https://github.com/restatedev/restate/issues/94
- [ ] https://github.com/restatedev/restate/issues/230
- [ ] https://github.com/restatedev/restate/issues/303
- [ ] https://github.com/restatedev/restate/issues/560
- [ ] https://github.com/restatedev/restate/issues/562
- [ ] https://github.com/restatedev/restate/issues/567
- [ ] https://github.com/restatedev/restate/issues/523
- [ ] https://github.com/restatedev/restate/issues/612
- [ ] https://github.com/restatedev/restate/issues/611
- [ ] https://github.com/restatedev/restate/issues/735
- [ ] https://github.com/restatedev/restate/issues/737
- [ ] https://github.com/restatedev/restate/issues/1020
- [ ] https://github.com/restatedev/restate/issues/1035
- [ ] https://github.com/restatedev/restate/issues/1037
- [ ] https://github.com/restatedev/restate/issues/1039
- [ ] https://github.com/restatedev/restate/issues/1042
- [ ] https://github.com/restatedev/restate/issues/1044
- [ ] https://github.com/restatedev/restate/issues/96
slinkydeveloper commented 1 year ago

Some useful links to setup flamegraphs with benchmarks:

tillrohrmann commented 1 year ago

A tool we could use for more advanced performance tests is: https://hyperfoil.io/