emper merge requestshttps://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests2021-02-26T11:38:17Zhttps://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests/8add a batch optimization for the global completer2021-02-26T11:38:17ZFlorian Fischeradd a batch optimization for the global completerThis change introduces new scheduleFromAnywhere methods which take
a range of Fibers to schedule.
Blockable gets a new method returning the fiber used to start
the unblocked context, which is used by Future/PartialCompletableFuture
to p...This change introduces new scheduleFromAnywhere methods which take
a range of Fibers to schedule.
Blockable gets a new method returning the fiber used to start
the unblocked context, which is used by Future/PartialCompletableFuture
to provide a way of completion and returning the continuation Fiber
to the caller so they may schedule the continuation how they want.
If the meson option io_batch_anywhere_completions is set the global
completer will collect all callback and continuation fibers before
scheduling them at once when it is done reaping the completions.
The idea is that taking the AnywhereQueue write lock and calling onNewWork
must only be done once.
TODO: investigate if onNewWork should be extended by an amountOfWork
argument which determines how many worker can be awoken and have work to
do. This should be trivially since our WorkerWakeupSemaphore implementations
already support notify_many(), which may be implemented in terms of
notify_all though.https://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests/6Wakeup worker per signal2021-02-22T16:27:05ZFlorian FischerWakeup worker per signalhttps://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests/7Fix build for systems with incomplete C++ standard library2021-02-22T16:26:58ZFlorian FischerFix build for systems with incomplete C++ standard libraryhttps://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests/5[meson] fix version header custom target for meson >= 0.572021-02-18T14:10:18ZFlorian Fischer[meson] fix version header custom target for meson >= 0.57Apparently custom_target no longer supports the @CURRENT_SOURCE_DIR@
and @SOURCE_DIR@ substitutions.
We now locate the script using find_program.
Since meson.project_source_dir() is not available in older meson version
there is a languag...Apparently custom_target no longer supports the @CURRENT_SOURCE_DIR@
and @SOURCE_DIR@ substitutions.
We now locate the script using find_program.
Since meson.project_source_dir() is not available in older meson version
there is a language check.https://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests/4[IO] add option to use a common async backend for all io_urings2021-02-10T11:46:48ZFlorian Fischer[IO] add option to use a common async backend for all io_uringsSharing a common async backend may reduce the overhead needed in the kernel but may introduce contention.
My previous investigation showed that the influence of a shared async backend is negligible
but I am willing to give it a second try.Sharing a common async backend may reduce the overhead needed in the kernel but may introduce contention.
My previous investigation showed that the influence of a shared async backend is negligible
but I am willing to give it a second try.https://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests/3[IO] fail hard if the globalCompleter would drop a Future2021-02-03T17:35:06ZFlorian Fischer[IO] fail hard if the globalCompleter would drop a FutureCurrently the globalCompleter would drop Futures which he is
not able to submit to its SQ because io_uring_submit returned -EBUSY,
signalizing a full CQ.
Additional small code changes:
* don't wrap assert in if constexpr(DEBUG)
* annota...Currently the globalCompleter would drop Futures which he is
not able to submit to its SQ because io_uring_submit returned -EBUSY,
signalizing a full CQ.
Additional small code changes:
* don't wrap assert in if constexpr(DEBUG)
* annotate Future completion in globalCompleter as unlikely
* use prepared Future count as unsigned
* remove redundant parenthesis
* introduce helper function for IoCOntext* tagging
For now we fail hard if this hopefully unlikely case occurs.https://gitlab.cs.fau.de/aj46ezos/emper/-/merge_requests/2support generic test suites not just 'smoke'2020-10-27T11:56:06ZFlorian Fischersupport generic test suites not just 'smoke'This is usefull if we want to group our tests in function specific suites like 'io' for IO related tests.This is usefull if we want to group our tests in function specific suites like 'io' for IO related tests.