Philipp Oppermann
cf95078ca1
Extract shared memory server/client into separate crate
To allow for individual testing and benchmarking. This will also enable reuse of the library in other projects.
3 years ago
Philipp Oppermann
0e95b0868a
Fix: Report correct length in `SharedMemSample`
3 years ago
Philipp Oppermann
a24d7828e9
Fix: The drop tokens might reach the `SharedMemHandler` before the `SentOut` message
3 years ago
Philipp Oppermann
68b46f7ba7
Move shared memory handling to separate task
To reduce load on the main task.
3 years ago
Philipp Oppermann
bf978d9d7d
Always send register message first, also when subscribing
3 years ago
Philipp Oppermann
7b6f24c24b
Confirm output sending a bit earlier
3 years ago
Philipp Oppermann
c9ab38d6bc
Set up tracing subscribers in benchmark example
3 years ago
Philipp Oppermann
b73c872043
Use blocks for initializing shmem severs
3 years ago
Philipp Oppermann
c6d864b20f
Make shmem server/client typed and report event stream closure
3 years ago
Philipp Oppermann
c9e8d8dfe4
Join event stream thread before exiting
3 years ago
Philipp Oppermann
5eddf1cae9
Remove uneeded serialization methods
3 years ago
Philipp Oppermann
b7f47c3d99
Log an error instead of panicking when ShmemServer is dropped before client
3 years ago
Philipp Oppermann
827fb1b241
Fix: Don't use timeout on EventStream client
3 years ago
Philipp Oppermann
3aa50d2209
Assert that message length is never 0
3 years ago
Philipp Oppermann
5b12ba8428
Panic when shm server is dropped before client
3 years ago
Philipp Oppermann
503a9497fd
Use shared memory for event stream too
3 years ago
Philipp Oppermann
670c154e5e
Create a safer server/client API on top of `ShmemChannel`
3 years ago
Philipp Oppermann
8d1c3742a1
Implement disconnect signal for `ShmemChannel` and set it on drop
3 years ago
Philipp Oppermann
6ae75c04bd
Remove some log messages
3 years ago
Philipp Oppermann
f04960d680
Fix event + data offsets for Shmem channel client
3 years ago
Philipp Oppermann
6253d6e5ad
Fix: Initialize events to 'clear' state and length to 0
3 years ago
Philipp Oppermann
be6c459c6c
Set log level to DEBUG for daemon
3 years ago
Philipp Oppermann
70298d836f
Start migrating the daemon control channel to shared memory
The goal is to avoid the latency of the TCP socket.
3 years ago
Philipp Oppermann
97b525a2f3
Update benchmark example to be comparable with latest main changes
3 years ago
Philipp Oppermann
352fb3d757
Change Python event types to uppercase
3 years ago
Philipp Oppermann
7888b7d0e4
Remove uneeded breaks from other examples too
3 years ago
Philipp Oppermann
5666895a7c
Close event channel when last input is closed or when stop is received
3 years ago
Philipp Oppermann
27daceafd1
Fix typo
Co-authored-by: Haixuan Xavier Tao <tao.xavier@outlook.com>
3 years ago
Philipp Oppermann
aa85b6ee41
Increase benchmark messages sizes (up to 10000 4k pages)
3 years ago
Philipp Oppermann
de4b048853
Fix performance: Set `nodelay` on listener side too
Without this, the TCP connection uses Nagle's algorithm, which delays sending of packets until ACKs are received. This is problematic because most OSs deliberately delay ACKs to reduce overhead. For example, the default ACK delay on Linux is 40ms, which leads to 80ms latency when sending an output.
3 years ago
Philipp Oppermann
19214c4829
Add a basic benchmark to test throughput and latency for different message sizes
3 years ago
Philipp Oppermann
218106721d
Add watchdog for checking that coordinator is still reachable
Throw an error if a daemon cannot reach the coordinator anymore.
This is only an interim solution. In the future, we want to make the daemon more robust and ideally even allow restarts of the coordinator.
3 years ago
Philipp Oppermann
2b7d2508f4
Implement watchdog messages for detecting sudden disconnects of daemon
3 years ago
Philipp Oppermann
35e86684d0
Update `up` and `destroy` commands for dora-daemon and ensure proper coordinator exit
3 years ago
Philipp Oppermann
7448594622
Update `dora check` to check whether daemon is running
3 years ago
Philipp Oppermann
8c1c29f7f8
Remove icoryx roudi handling from dora-cli
3 years ago
Philipp Oppermann
0ace8f052b
Skip clippy runs for runtime feature
The runtime is currently commented out.
3 years ago
Philipp Oppermann
20ffe50389
Use prefixed names for dora event enum variants in C API to avoid name conflicts
3 years ago
Philipp Oppermann
778d9d7eb7
Fix: Use correct length for received data
The shared memory region size might be larger because of padding.
3 years ago
Philipp Oppermann
619d0bb34b
Fix: limit slice length to requested length
On Windows, the size of the shared memory region is rounded up to the next multiple of the page size. By slicing the region to the expected size we allow nodes to assume that they get exactly the requsted size.
3 years ago
Philipp Oppermann
07311fd611
Check exit status of all nodes when using `exit_when_done`
Instead of finishing already when all nodes sent their `Stopped` message, we now check the exit code of the node executables too.
3 years ago
Philipp Oppermann
63444b9760
Fix CI failures caused by `rust-dataflow-url` example
3 years ago
Philipp Oppermann
bb2e8c2920
Remove iceoryx from CI jobs
3 years ago
Philipp Oppermann
0405f22ca2
Remove iceoryx example (we no longer need iceoryx)
3 years ago
Philipp Oppermann
c2fe771cba
Start updating C++ example for new design
3 years ago
Philipp Oppermann
a406d2e3cc
Update C++ API for new daemon design
3 years ago
Philipp Oppermann
2d1e317b95
Ignore dora-runtime for now
3 years ago
Philipp Oppermann
3c2bc57473
Update C dataflow example for new API
3 years ago
Philipp Oppermann
453c40d20b
Update C node API for new daemon API
3 years ago
Philipp Oppermann
6f9ae2523a
Fix python version
3 years ago