- Feb 01, 2022
-
-
Florian Schmaus authored
Introduce AbstractFiber as superclass of all scheduled control flows See merge request !325
-
Florian Schmaus authored
It is safe to perform a relaxed load in isRunnable(), since the information is potentially outdated immediately after it was looked at. Also, since Fiber::isRunnable() is a virtual method, keeping its definition in the header has no real advantage, hence we move it out of the header.
-
Florian Schmaus authored
-
- Jan 31, 2022
-
-
Florian Schmaus authored
[io/Stats] don't try to print worker stats when using a single uring See merge request !324
-
Florian Schmaus authored
add io latency evaluation See merge request !323
-
Florian Fischer authored
-
Florian Fischer authored
* increase iterations to 10K this produced more stable averages * add options to dump all measurements * add baseline benchmark using two threads and read/write syscalls * add iouring benchmark using two threads and iouring to read
-
- Jan 30, 2022
-
-
Florian Fischer authored
Test more Fiber functionality in Future callbacks: blocking and spawning.
-
Florian Fischer authored
It uses a watch thread writing to eventfd and a ReadFuture with a Callback to measure the latency between writing to the eventfd and executing the resulting IO Continuation. The worker submitting the read request starts a busy loop after the submission to enforce that the IO-continuation is delayed on this worker.
-
- Jan 28, 2022
-
-
Florian Schmaus authored
[CI] Move iwyu and clang-tidy out of the smoke-test stage See merge request !322
-
- Jan 27, 2022
-
-
Florian Schmaus authored
-
Florian Schmaus authored
[CI] Bump container image to 1.20 See merge request !321
-
Florian Schmaus authored
-
- Jan 26, 2022
-
-
Florian Schmaus authored
Various improvements See merge request !320
-
Florian Schmaus authored
-
Florian Schmaus authored
-
- Jan 25, 2022
-
-
Florian Schmaus authored
[Runtime] Set a name for every worker thread See merge request !319
-
Florian Schmaus authored
-
Florian Schmaus authored
[Context] Fix DBG message See merge request !318
-
Florian Schmaus authored
The thread local currentContext was already set to nullptr when we logged it. Use the right field instead.
-
- Jan 23, 2022
-
-
Florian Schmaus authored
[meson] add option to ignore wakeup hints See merge request !316
-
Florian Fischer authored
I think wakeup hints should never be ignored but having the option seams usefull to observe their benefits/cost.
-
- Jan 22, 2022
-
-
Florian Schmaus authored
[Runtime] Move EMPER_* environment variable handling into module See merge request !314
-
Florian Schmaus authored
[ScheduleOnTest] block worker thread if IO is not available See merge request !315
-
Florian Fischer authored
-
Florian Schmaus authored
That debug statement is noisy, as it is emitted all the time, irregardless whether or not the environment variable is set.
-
Florian Schmaus authored
Also add a DBG message that is emitted if such a EMPER_* environment variable has been processed.
-
Florian Fischer authored
The alpha fiber waits to ensure the worker threads are suspended before starting to schedule work on specific threads. emper::sleep uses an AlarmFuture and thus needs emper to be build with IO support. If IO is not available we now just block the whole worker thread.
-
- Jan 21, 2022
-
-
Florian Schmaus authored
-
Florian Schmaus authored
[Coordinator] allow listen socket port reuse See merge request !312
-
Florian Schmaus authored
[Context] Move switchToOriginalStack() into module and add DBG statement See merge request !313
-
Florian Schmaus authored
This function is not performance critical and hence can be moved out of the header into the compilation unit.
-
Florian Fischer authored
-
Florian Schmaus authored
fix Future::cancel with new Scheduler::scheduleOn(fiber, workerId) Closes #31 See merge request !296
-
Florian Fischer authored
LinuxVersion used the assumption that both strings have the same amount of dot-separated components. But this is obviously not always the case. If we can't compare the two strings further they must been equal so far.
-
Florian Fischer authored
* sleeping workers have decremented the semaphore count before sleeping. But if they are notified specifically the semaphore counter is decremented excessively This results in unnecessary suspension/notifications because the counter is out of sync with the actual waiter count. * waitv expects that the futex size is specified in the futex flags * wake sleepers using FUTEX_PRIVATE_FLAG * futex_waitv returns the index of the woken futex -> wake on ret > -1 * add debug output and asserts
-
Florian Fischer authored
A getter not calling sem.wait is needed so we don't call sem.wait twice: once during Future::cancel() and Future::wait() to obtain the return value afterwards.
-
Florian Fischer authored
Our only cancellation test case where it is possible that the cancellation must happen on a specific worker uses a single fiber. The introduced massCancelOnDifferentWorker() test case uses workerCount * 5 fibers and actively tries to provoke cancellation on other workers.
-
Florian Fischer authored
Remember the IoContext where a Future was prepared and submit the CancelWrapper on the correct Worker using scheduleOn.
-
Florian Fischer authored
-