- May 17, 2021
-
-
Florian Fischer authored
-
Florian Schmaus authored
[check-license] Do not pass --max-args to xargs See merge request !203
-
Florian Schmaus authored
GCC 11.1 fixes See merge request !202
-
Florian Schmaus authored
[CountingPrivateSemaphore] Fix assert See merge request !200
-
Florian Schmaus authored
xargs: warning: options --max-args and --replace/-I/-i are mutually exclusive, ignoring previous --max-args value
-
Florian Fischer authored
-
Florian Fischer authored
gcc 11.1 on my arch system complains that the calls to free does not match the allocator function new[].
-
- May 14, 2021
-
-
Florian Schmaus authored
As the code comment above the assert indicates, the atomic exchange operation may either return nullptr or a valid Context pointer. And this is what the assert() should assert. :) Reported-by:
Florian Fischer <florian.fl.fischer@fau.de>
-
- May 11, 2021
-
-
Florian Schmaus authored
[Common] Call abort() instead of exit() in die() See merge request !198
-
Florian Schmaus authored
Calling abort() has multiple advantages. First, it better matches the semantic of DIE(_MSG) as it signals an abnormal process termination, whereas exit() is a normal process termination (even though potentially with an error exit code). Secondly, abort() throws SIGABRT, which in turn triggers a coredump, hence the program's state can be inspected afterwards.
-
- May 10, 2021
-
-
Florian Schmaus authored
[LAWS/Fiber] Introduce the concept of Multi-Fiber See merge request !195
-
Florian Schmaus authored
-
Florian Schmaus authored
LAWS, and similar scheduling strategies, only need to perform refcounting and atomic operations if the fiber was placed in multiple ready-lists in the first place.
-
Florian Schmaus authored
Already check if fiber is runnable in scheduliing subsystem See merge request !197
-
- May 08, 2021
-
-
Florian Schmaus authored
Already check if the fiber is in-fact runnable in the scheduling subsystem. This should not make a difference when WS scheduling is used, but makes a difference when LAWS is used.
-
- May 05, 2021
-
-
Florian Fischer authored
[meson] propagate set_affinity_on_block See merge request !194
-
Florian Fischer authored
-
Florian Schmaus authored
[LawsScheduler] Guard Runtime::getWorkerId() with CallerEnvironment See merge request !192
-
Florian Schmaus authored
[IO] remove Future affinity awareness which is done in Blockable See merge request !193
-
Florian Schmaus authored
Set affinity on block See merge request !191
-
Florian Fischer authored
-
Florian Schmaus authored
Calling Runtime::getWorkerId() is only possible from within the runtime, hence guard the call with CallerEnvironment.
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
-
- May 04, 2021
-
-
Florian Schmaus authored
[IO] set the affinity of Fibers created by the completer thread See merge request !188
-
Florian Fischer authored
-
Florian Fischer authored
Set the affinity for Fibers created from the completer thread to the workerId where the completion originated from. First, we split up the Callback type in a user facing and an internal one. The internal one has a new affinity member which provides the memory for the new Fibers affinity buffer. This is memory safe because the Callback object is always heap allocated and freed when the CallbackFiber terminates. Second, each Future has an affinity member as well which will be passed to the BinaryPrivateSemaphore when calling signalFromAnywhere to again hint the originating worker. Both affinity values are set during the preparation of the Future in IoContext::prepareFutureChain because then we are sure in which worker's IoContext the completion will be generated.
-
Florian Fischer authored
First of all I think it makes sense for laws to also look at affinities of Fibers scheduled to the AnywhereQueue. But the actual reason is that IO completions scheduled from the completer could be dispatched from the priorityQueue before they are found in the expensive AnywhereQueue. But this comes with the cost of a vcall for scheduleFromAnywhere.
-
Florian Fischer authored
Using the STL iterator based approach has caused more harm than it has advantages. First of all it is unneeded we know how the Fibers we want to schedule are stored and don't need a algorithmic generic abstraction. We keep Fibers pointers in continues memory for memory locality benefits therefore we can simply use the C dynamic array style of passing the Fibers to the scheduler. This removes the template from the batched schedule methods and allows us to use virtual functions to specialize the batched scheduleFromAnywhere method.
-
Florian Schmaus authored
[LAWS] Set fiber affinity *before* dispatching it, not after See merge request !189
-
Florian Schmaus authored
-
- May 03, 2021
-
-
Florian Schmaus authored
[Blockable] Support worker affinity in PrivateSemaphore.signalFromAnywhere() See merge request !187
-
Florian Schmaus authored
[EchoClient] don't include shutdown duration in echo duration See merge request !181
-
Florian Schmaus authored
I do as IWYU guides.
-
Florian Schmaus authored
-
Florian Fischer authored
-
Florian Fischer authored
* Merge the two echo functions echo and linkedEcho into a single templated Client member function _run(). This reduces code duplication but the resulting echo loop is less readable because of more if constexpr switches. * Move more code out of the echo loop into separate functions: * unexpected echo message * on ECONNRESET handling * error handling * termination condition
-
Florian Fischer authored
-
Florian Fischer authored
* Shutdown the client connections after the echo phase has ended. * Send "quit\n" on the last client connection (Though it is not guarantied that there are no more open connection because we parallelize the termination) * Free memory after the Runtime has terminated
-