- Mar 16, 2022
-
-
Florian Schmaus authored
[AbstractWorkStealingScheduler] Emit warning if overflow queue is used See merge request i4/manycore/emper!365
-
- Mar 15, 2022
-
-
Florian Schmaus authored
incorporate new io_uring features See merge request i4/manycore/emper!364
-
Florian Schmaus authored
-
Florian Fischer authored
-
Florian Fischer authored
We can not deal with cqes for forgotten Futures and not creating them prevents the kernel and userspace overhead introduced by them.
-
Florian Fischer authored
LinuxVersion::compare reported two versions as equal if it could find a new '.' in the first version but not in the second. But this is clearly wrong because it skips comparision of the valid last part. The comparision 5.16.12 >= 5.18 returned true because compare reported the version as equal after comparing the first parts and finding a second '.' in the first but not the second. Fix this behavior by marking the current position as the last but do not skip its comparision. Add tests for the desired behaviour.
-
Florian Fischer authored
Linux 5.18 introduces IORING_REGISTER_RING_FDS with e7a6c00dc77aedf27a601738ea509f1caea6d673. Registering the io_uring's fd prevents having to look it up for each io_uring_enter call reducing contention on the process file table. Jens Axboe reports good results in his fio based benchmarks and I see no reason for EMPER to not register the io_uring fds, especially because we never pass or share rings. Do not register the global io_uring since it is shared in the SINGLE_URING case or it is passed by the main thread to the completer thread breaking the assumption liburing has about the registered io_uring fd.
-
Florian Fischer authored
Liburing 2.2 and Linux 5.18 support IORING_REGISTER_RING_FDS, preventing the fget(ring_fd) overhead for each io_uring_enter call, as well as IORING_OP_MSG_RING, greatly simplifying the IO-based sleep strategy code.
-
- Mar 14, 2022
-
-
Florian Schmaus authored
Improve terminology See merge request i4/manycore/emper!363
-
- Mar 05, 2022
-
-
Florian Schmaus authored
To avoid confusing the fork with a heavyweight (Unix) fork(), we use spawn/sync instead of fork/join in Fibril.
-
Florian Schmaus authored
While extensibility is still a feature of EMPER, a more important aspect is its efficiency.
-
- Mar 04, 2022
-
-
Florian Schmaus authored
Introduce EMPER_ASSERT_MSG See merge request i4/manycore/emper!361
-
Florian Schmaus authored
[log] Improve timestamp format: HHMM.SS mmmuuunnn See merge request i4/manycore/emper!360
-
- Mar 02, 2022
-
-
Florian Schmaus authored
-
Florian Schmaus authored
-
- Feb 28, 2022
-
-
Florian Schmaus authored
print blocked context FromAnywhere stats when STATS_BLOCKED_CONTEXT is set See merge request i4/manycore/emper!359
-
Florian Fischer authored
This is analogue to what we do in emper/stats/worker.cpp since 46302a0f.
-
Florian Schmaus authored
Add worker sleep stats, rework stats machinery See merge request i4/manycore/emper!358
-
Florian Schmaus authored
This further split up the stats machinery into smaller parts.
-
Florian Schmaus authored
The idea of the new stats machinery is that 'stats' becomes an option that enables the basic stats gathering infrastructure in EMPER. At some point, it should become a non-user option, i.e., it should be remove from meson_options.txt. Then comes a layer of fine-grained stats control switches, which default to 'auto'. Third, a new option called 'stats_all' is added, which, if enabled, activates all fine-graind stats knobs that are set to 'auto'.
-
- Feb 27, 2022
-
-
Florian Schmaus authored
fix lockless io-stealing See merge request i4/manycore/emper!357
-
Florian Schmaus authored
-
- Feb 26, 2022
-
-
Florian Schmaus authored
-
Florian Fischer authored
The uninitialized continuation pointer may be returned without being written resulting in dispatching a not valid fiber pointer. If a CQE is stolen but no fiber is blocked on the corresponding future IoContext::getContinuationsFromCompletions will call future->completeAndGetContinuation which will set the future's completion but will not return a continuation. If no continuation is returned from Future::completeAndGetContinuation the continuation buffer is not advanced by IoContext::getContinuationsFromCompletions (emper/io/IoContext.hpp:259). IoContext::reapSingleCompletion does not check if a continuation was created and assumed that continuation contains a valid Fiber* if a CQE was successfully stolen. Initialize continuation with nullptr, which is a valid Fiber*.
-
Florian Fischer authored
-
Florian Schmaus authored
Minor changes of top-level files See merge request i4/manycore/emper!356
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
Extend emper::printInfo() See merge request !355
-
Florian Schmaus authored
Add more CL Queue implementations See merge request i4/manycore/emper!354
-
Florian Schmaus authored
Work-Stealing queue fill-size stats See merge request i4/manycore/emper!353
-
- Feb 25, 2022
-
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
The calculation was previously done using integers, this lead to MEMORY_MANAGER_VICTIM_PERCENTAGE to become 0.
-
Florian Schmaus authored
The MemoryManager uses lib::adt::wsqueue::Default as work-stealing queue implementation. The reference to WsClQueue would break if e.g., ws_queue_default=cl4, since the type would not exist.
-
- Feb 24, 2022
-
-
Florian Schmaus authored
-
Florian Schmaus authored
In case pushing to the local work-stealing queue fails because the queue is full, and that failure is not fatal as it is in Fibril, emit a warning once.
-
Florian Schmaus authored
-
Florian Schmaus authored
This result also contains the observed queue size at the moment of the push.
-