- 11 Jun, 2022 20 commits
-
-
Florian Fischer authored
-
Florian Fischer authored
I see no reason why punting is not always better. Waitfd does not support NO_WAIT or poll therefore the request must be always punted to the io_wq anyway.
-
Florian Fischer authored
The WaitfdSleepStrategy did not gather the amount of posted notifications but the PipeSleepStrategy did. Move the stats accounting into AbstractIoSleepStrategy so all derived strategies track the amount of written notifications.
-
Florian Fischer authored
-
Florian Fischer authored
Set the user_data to NewWorkNotification on the MSG_RING cqe to detect a possible failure (operation not supported by the kernel).
-
Florian Fischer authored
IOURING_OP_MSG_RING will creates two cqes on probably different rings. We do not need the cqe on the submitting ring therefore skip its generation and only track that on the messaged ring an additional cqe is expected.
-
Florian Fischer authored
When the custom logic of the IO-based sleep strategies returns false we already have set the sleeper state to Sleeping and must reset it.
-
Florian Fischer authored
With Linux 5.18 io_uring supports sending notifications between io_urings. This removes the need of writing to a specific eventfd to notify specific sleeping workers. This greatly reduces the complexity of the sued algorithm because we do not longer need to prepare two sleeps in an atomic way. The notify specific algorithm no can be similar to the one used by the semaphore implementation. The notifier sets the state of the specific worker to Notified and if its was previously sleeping it is responsible to send a wakeup message. When a worker is going to sleep it sets its state to Running if it was notified the state is reset and the sleep attempt skipped. Otherwise a global read is prepared if needed and the worker waits on its io_uring.
-
Florian Fischer authored
-
Florian Fischer authored
-
Florian Fischer authored
-
Florian Fischer authored
-
Florian Fischer authored
-
Florian Fischer authored
449 is futex_waitv since linux 5.16.
-
Florian Fischer authored
Eventfds are pollable (no iow thread is blocked reading from the IO object) contrary to waitfds. And using pipes seams also rather excessive especially since we ensure that only a single notification is written before it is consumed. This makes the code of the IO-based sleep strategies easier and I would expect also faster.
-
Florian Fischer authored
-
Florian Fischer authored
-
Florian Fischer authored
Introduce AbstractIoSleepStrategy holding most of the code needed for a sleep strategy using an IO object fur suspension/notification. This changes are used in future patches to implement more IO-based sleep strategies.
-
Florian Fischer authored
-
Florian Fischer authored
-
- 10 Jun, 2022 4 commits
-
-
Florian Schmaus authored
Add the Big Fancy Pulser 9000 (BFP 9K) evaluation See merge request i4/manycore/emper!397
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
[README] Fibirl uses spawn/sync as keywords (and no longer fork/join) See merge request i4/manycore/emper!403
-
- 09 Jun, 2022 10 commits
-
-
Florian Schmaus authored
-
Florian Schmaus authored
[io/Stats] For AlarmFutures (TIMEOUT) expect them to return ETIME See merge request i4/manycore/emper!402
-
Florian Schmaus authored
[Makefile] Add asan(-test) targets See merge request i4/manycore/emper!398
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
LTO See merge request i4/manycore/emper!401
-
Florian Schmaus authored
-
Florian Schmaus authored
This prevents a linker error because of undefined symbols when LTO is used.
-
- 08 Jun, 2022 4 commits
-
-
Florian Schmaus authored
[Runtime] Switch logging of env var handling from DBG() to LOGI() See merge request i4/manycore/emper!400
-
Florian Schmaus authored
Also use std::boolalpha to print ture/false.
-
Florian Schmaus authored
[SpuriousFutex2Semaphore] Add missing emper-config.h include See merge request i4/manycore/emper!399
-
Florian Schmaus authored
Fixes: f4e72a97 ("[iwyu] Fix includes as per iwyu 0.18")
-
- 05 Jun, 2022 2 commits
-
-
Florian Schmaus authored
[ContextManager] Remove the put/get free context cycle See merge request i4/manycore/emper!396
-
Florian Schmaus authored
The put/get free context cycle in ContextManager::start() (if continuation stealing is enabled) became unnecessary with c66551bf ("[Context] Use 'jmp' instead of 'ret' to kickoff the context").
-