emper merge requestshttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests2022-12-16T19:09:02Zhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/415Add WaitFreeCountingSemaphore2022-12-16T19:09:02ZFlorian SchmausAdd WaitFreeCountingSemaphorehttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/414[gitlab-ci] Bump to debian-testing-dev 1.30 and iwyu 0.192022-12-16T15:49:37ZFlorian Schmaus[gitlab-ci] Bump to debian-testing-dev 1.30 and iwyu 0.19https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/413[gitlab-ci] Bump debian-testing-dev to 1.292022-11-23T17:03:25ZFlorian Schmaus[gitlab-ci] Bump debian-testing-dev to 1.29https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/412[gitlab-ci] Bump image to debian-testing-dev:1.282022-09-17T07:47:02ZFlorian Schmaus[gitlab-ci] Bump image to debian-testing-dev:1.28https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/411add waitfd support, generalize IO sleep_strategy code and use MSG_RING2022-09-16T08:05:03ZFlorian Fischeradd waitfd support, generalize IO sleep_strategy code and use MSG_RINGThis MR introduces the `waitfd` support used to evaluate the [`waitfd` kernel interface](https://gitlab.cs.fau.de/i4/manycore/kernel-emper/-/tree/waitfd-5.18) for my master's thesis.
It generalizes the io_uring-based sleep strategy code...This MR introduces the `waitfd` support used to evaluate the [`waitfd` kernel interface](https://gitlab.cs.fau.de/i4/manycore/kernel-emper/-/tree/waitfd-5.18) for my master's thesis.
It generalizes the io_uring-based sleep strategy code by introducing the new AbstractIoSleepStrategy class containing most of the code needed for sleeping and notifications.
Additionally the MR uses the io_uring MSG_RING feature introduced in linux 5.18 greatly improving and simplifying the sleep code.https://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/410[gitlab-ci] Bump debian-testing-dev image to 1.242022-07-20T08:47:26ZFlorian Schmaus[gitlab-ci] Bump debian-testing-dev image to 1.24Florian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/409Fix CancelFutureTest for single-uring and libc++2022-07-12T12:32:39ZFlorian FischerFix CancelFutureTest for single-uring and libc++```
Florian Fischer (4):
[SubmitActor] don't manually invalidate broken chains after linux 5.15
[IoContext] do not use Future after allowing its destruction
[Semaphore] make default constructor more explicit
Merge...```
Florian Fischer (4):
[SubmitActor] don't manually invalidate broken chains after linux 5.15
[IoContext] do not use Future after allowing its destruction
[Semaphore] make default constructor more explicit
Merge branch 'fix-cancel-on-single-uring' into fix-ci
emper/Semaphore.hpp | 2 +-
emper/io/IoContext.cpp | 10 +++++-----
emper/io/SubmitActor.cpp | 3 ++-
3 files changed, 8 insertions(+), 7 deletions(-)
```
Closes !407 !408.Florian FischerFlorian Fischerhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/408[Semaphore] make default constructor more explicit2022-07-12T12:31:43ZFlorian Fischer[Semaphore] make default constructor more explicitThe CancelFutureTest fails for libc++ because it uses two
`emper::Semaphores` to coordinate the involved fibers.
Using gcc and stdlibc++ the default constructor initialized the
semaphore `count` to 0.
The default constructor using clan...The CancelFutureTest fails for libc++ because it uses two
`emper::Semaphores` to coordinate the involved fibers.
Using gcc and stdlibc++ the default constructor initialized the
semaphore `count` to 0.
The default constructor using clang and libc++ does not initialize the
semaphore `count` member and thus causing the CancelFutureTest to misbehave.Florian FischerFlorian Fischerhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/407fix Future cancellation when using SINGLE_URING2022-07-12T12:53:38ZFlorian Fischerfix Future cancellation when using SINGLE_URING```
Florian Fischer (2):
[SubmitActor] don't manually invalidate broken chains after linux 5.15
[IoContext] do not use Future after allowing its destruction
emper/io/IoContext.cpp | 10 +++++-----
emper/io/SubmitActor.cpp...```
Florian Fischer (2):
[SubmitActor] don't manually invalidate broken chains after linux 5.15
[IoContext] do not use Future after allowing its destruction
emper/io/IoContext.cpp | 10 +++++-----
emper/io/SubmitActor.cpp | 3 ++-
2 files changed, 7 insertions(+), 6 deletions(-)
```Florian FischerFlorian Fischerhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/406[Future] Fix invalid conversion from unsigned to ptr2022-07-12T13:21:00ZFlorian Schmaus[Future] Fix invalid conversion from unsigned to ptrFix
emper/io/Future.cpp:184:35: error: invalid conversion from ‘uint64_t’ {aka ‘long unsigned int’} to ‘void*’ [-fpermissive]
184 | io_uring_prep_cancel(sqe, user_data, 0);
| ^~~~~~~~~
...Fix
emper/io/Future.cpp:184:35: error: invalid conversion from ‘uint64_t’ {aka ‘long unsigned int’} to ‘void*’ [-fpermissive]
184 | io_uring_prep_cancel(sqe, user_data, 0);
| ^~~~~~~~~
| |
| uint64_t {aka long unsigned int}Florian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/405use liburing 2.2 wrap file provided via meson wrapdb2022-07-12T13:14:30ZFlorian Fischeruse liburing 2.2 wrap file provided via meson wrapdbCloses !406Closes !406Florian FischerFlorian Fischerhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/404Draft: [io] set new io_uring taskrun flags on linux 5.192022-09-02T06:51:10ZFlorian FischerDraft: [io] set new io_uring taskrun flags on linux 5.19Linux 5.19 introduces new flags to control how the kernel notifies tasks
running in user space about task_work to run generating completions.
Prior to 5.19 the kernel would interrupt the running tasks the new introduced
flags prevent the...Linux 5.19 introduces new flags to control how the kernel notifies tasks
running in user space about task_work to run generating completions.
Prior to 5.19 the kernel would interrupt the running tasks the new introduced
flags prevent the forceful interruption and set a flag in io_uring.
The flag signals io_uring_peek to enter the kernel to execute the available
task_work.
The man page claims that setting the flags is beneficial for most applications.
Only downside I see is that io-stealing is less effective since CQEs are
not immediately created.Florian FischerFlorian Fischerhttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/403[README] Fibirl uses spawn/sync as keywords (and no longer fork/join)2022-06-10T07:32:44ZFlorian Schmaus[README] Fibirl uses spawn/sync as keywords (and no longer fork/join)Florian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/402[io/Stats] For AlarmFutures (TIMEOUT) expect them to return ETIME2022-06-09T09:47:51ZFlorian Schmaus[io/Stats] For AlarmFutures (TIMEOUT) expect them to return ETIMEFlorian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/401LTO2022-06-09T08:06:29ZFlorian SchmausLTOFlorian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/400[Runtime] Switch logging of env var handling from DBG() to LOGI()2022-06-08T20:13:56ZFlorian Schmaus[Runtime] Switch logging of env var handling from DBG() to LOGI()Also use std::boolalpha to print ture/false.Also use std::boolalpha to print ture/false.Florian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/399[SpuriousFutex2Semaphore] Add missing emper-config.h include2022-06-08T16:21:48ZFlorian Schmaus[SpuriousFutex2Semaphore] Add missing emper-config.h includeFlorian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/398[Makefile] Add asan(-test) targets2022-06-09T09:18:51ZFlorian Schmaus[Makefile] Add asan(-test) targetsFlorian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/397Add the Big Fancy Pulser 9000 (BFP 9K) evaluation2022-06-10T08:00:01ZFlorian SchmausAdd the Big Fancy Pulser 9000 (BFP 9K) evaluationFlorian SchmausFlorian Schmaushttps://gitlab.cs.fau.de/i4/manycore/emper/-/merge_requests/396[ContextManager] Remove the put/get free context cycle2022-06-05T13:54:09ZFlorian Schmaus[ContextManager] Remove the put/get free context cycleThe put/get free context cycle in ContextManager::start() (if
continuation stealing is enabled) became unnecessary with
c66551bfbafb ("[Context] Use 'jmp' instead of 'ret' to kickoff the
context").The put/get free context cycle in ContextManager::start() (if
continuation stealing is enabled) became unnecessary with
c66551bfbafb ("[Context] Use 'jmp' instead of 'ret' to kickoff the
context").Florian SchmausFlorian Schmaus