"README.md" did not exist on "c1eb0f12365d62a49acd905c32893a632e18e05f"
- Mar 15, 2022
-
-
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.
-
- 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.
-
- Feb 23, 2022
-
-
Florian Fischer authored
Fix fsearch by using a sharded file buffer See merge request i4/manycore/emper!352
-
- Feb 22, 2022
-
-
Florian Schmaus authored
Also rename 'res' to 'pushed' and only notify about new work if there was work pushed.
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Fischer authored
Each worker thread has it own stringstream per ShardedFileBuffer. All streams are joined and flushed to the file when a ShardedFileBuffer is destructed. Flushing a ShardedFileBuffer is not thread-safe and must not be called concurrently to any modifications to the ShardedFileBuffer. Use a ShardedFileBuffer to accumulate and print all paths during fsearch.
-
- Feb 21, 2022
-
-
Florian Fischer authored
-
Florian Schmaus authored
[StealingResult] Improve docstring See merge request i4/manycore/emper!349
-
Florian Fischer authored
fsearch: write only found files to stdout and use implicit file offset See merge request i4/manycore/emper!350
-
Florian Schmaus authored
-
Florian Schmaus authored
Use std::function based factory See merge request i4/manycore/emper!71
-
Florian Fischer authored
In the emper-fs-eval I would like to validate the output of the fsearch variants against a list of known files. Not writing any log messages to stdout make that easier. Use -1 as the offset of the write to stdout. Passing offset -1 means to use the file's implicit offset just like write(2). When using a tty as stdout offset 0 is fine but when redirecting stdout to a file 0 will cause that previously found paths will always be overwritten.
-
Florian Schmaus authored
-
- Feb 19, 2022
-
-
Florian Fischer authored
[LinuxVersion] Use "Construct on first use" idiom and add mutex See merge request i4/manycore/emper!348
-