- Jan 29, 2021
-
-
Florian Schmaus authored
[test] fix occasional failures of SimpleDiskAndNetworkTest See merge request !76
-
Florian Schmaus authored
Remove feature_flags from test and introduce io test runner Closes #10 See merge request !75
-
Florian Fischer authored
Add a warning when the kernel does not support IORING_FEAT_NODROP that maybe IO request are getting lost.
-
Florian Fischer authored
To skip test if emper::IO is false the new io test runner in tests/test-runner is introduced which checks emper::IO and skips the test otherwise executes our normal testMain function. Fixes #10.
-
- Jan 28, 2021
-
-
Florian Fischer authored
Concurrently connecting and creating the server socket is racy. Now the server socket is created before any Fiber is started removing this race. Note: The same race is theoretically in SimpleNetworkTest and ConcurrenctEchoTest too but I haven't observed the failure yet
-
- Jan 27, 2021
-
-
Florian Schmaus authored
[gitlab-ci] disable IO since io_uring is not available in our CI See merge request !74
-
- Jan 26, 2021
-
-
Florian Fischer authored
-
Florian Schmaus authored
[clang-tidy] Set HeaderFilterRegex to '.*' See merge request !73
-
Florian Schmaus authored
This matches now all headers in the repository, instead of just the ones in the emper/ subdirectory, for example the /tests/fixtures.network.hpp header.
-
Florian Schmaus authored
Minor fixes See merge request !72
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
Both are semantically equivalent, and it appears that "enum struct" is a little bit more confusing.
-
Florian Schmaus authored
The operation is called 'dequeue', 'deque' is a double-ended queue.
-
Florian Schmaus authored
Worker exclusive uring See merge request !54
-
Florian Fischer authored
The echo client established X connections and start the echo phase after all sockets are connected. Each client Fiber measures the time from sending the message until receiving the echo.
-
Florian Fischer authored
-
Florian Fischer authored
Empers IO design is based on a proactor pattern where each worker can issue IO requests through its exclusive IoContext object which wraps an io_uring instance. IO completions are reaped at 4 places: 1. After a submit to collect inline completions 2. Before dispatching a new Fiber 3. When no new IO can be submitted because the completion queue is full 4. And by a global completer thread which gets notified about completions on worker IoContexts through registered eventfds All IO requests are modeled as Future objects which can be either instantiated and submitted manually, retrieved by POSIX-like non-blocking or implicitly used by posix-like blocking functions. User facing API is exported in the following headers: * emper/io.hpp (POSIX-like) * emper.h (POSIX-like) * emper/io/Future.hpp Catching short write/reads/sends and resubmitting the request without unblocking the Fiber is supported. Using AlarmFuture objects Fibers have a emper-native way to sleep for a given time. IO request timeouts with TimeoutWrapper class. Request Cancellation is supported with Future::cancel() or the CancelWrapper() Future class. A proactor design demands that buffers are committed to the kernel as long as the request is active. To guaranty memory safety Futures get canceled in their Destructor which will only return after the committed memory is free to use. Linking Futures to chains is supported using the Future::SetDependency() method. Future are submitted when their last Future gets submitted. A linked Request will start if the previous has finished. Error or partial completions will cancel the not started tail of a chain. TODO: Handle possible situations where the CQ of the global completer is full and no more sqe can be submitted to the SQ.
-
Florian Fischer authored
This feature must be activated using the blocked_context_set meson option.
-
- Jan 25, 2021
-
-
Florian Schmaus authored
De-duplicate work-stealing scheduling code See merge request !69
-
- Jan 22, 2021
-
-
Florian Schmaus authored
[tools] Add script to fix the includes with IWYU Closes #8 See merge request !70
-
Florian Schmaus authored
This introduces AbstractWorkStealingScheduler which holds the common work-stealing scheduling strategy.
-
Florian Schmaus authored
Fixes #8.
-
- Jan 14, 2021
-
-
Florian Schmaus authored
[test] Add EMPER test runner See merge request !48
-
Florian Schmaus authored
-
Florian Schmaus authored
Add option to include timestamp in EMPER log messages See merge request !68
-
- Jan 13, 2021
-
-
Florian Schmaus authored
This also changes emper_log so that a std::ostringstream is used to assemble the log message.
-
Florian Schmaus authored
-
Florian Schmaus authored
[tests] Include fiberNum in SimpleActorTest WDBG() log See merge request !67
-
- Jan 12, 2021
-
-
Florian Schmaus authored
[LAWS] Attempt to steal from all other workers instead of just one Closes #6 See merge request !66
-
Florian Schmaus authored
-
Florian Schmaus authored
The LAWS strategy, unlike the WS strategy, previously only attempted to steal from one victim, instead of trying all other workers. This probably caused SimpleActorTest to sporadically timeout, as all workers went to sleep. With this change, LAWS attempts, just like WS, to steal from all other workers. In a next step, we may want to reduce the duplicated code resulting from this. Fixes #6.
-
Florian Schmaus authored
[Runtime] Add missing constexpr See merge request !65
-
Florian Schmaus authored
Suggested-by:
Florian Fischer <florian.fl.fischer@fau.de>
-
- Jan 11, 2021
-
-
Florian Schmaus authored
Worker wakeup strategy enum See merge request !62
-
Florian Schmaus authored
-
Florian Schmaus authored
Initiailze the WORKER_WAKEUP_STRATEGY via the contents of the EMPER_WORKER_WAKEUP_STRATEGY macro. This makes it easier to add additional strategies later on.
-
Florian Schmaus authored
emper/emper/Worker.hpp:10:7: error: Excessive padding in 'class Worker' (123 padding bytes, where 59 is optimal). Optimal fields order: seed, workerId, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding,-warnings-as-errors]
-
Florian Schmaus authored
[tests] Increase test timeout from 60 seconds to 180 seconds See merge request !64
-