- Mar 16, 2021
-
-
Florian Fischer authored
This test resembles our EchoClient implementation using linked futures.
-
Florian Fischer authored
-
Florian Schmaus authored
[Debug] use a lambda to build up the log message See merge request !133
-
Florian Fischer authored
This hides the used std::stringstream from the context using the LOG macros. So we don't have to see the a huge messy std::stringstream object in gdb for example. The use of a lambda is a ISO C++ alternative to GCC's statement expression.
-
- Mar 15, 2021
-
-
Florian Schmaus authored
More debug related changes See merge request !131
-
Florian Schmaus authored
[IO] propagate callerEnvironment to reapCompletion See merge request !132
-
Florian Fischer authored
-
- Mar 13, 2021
-
-
Florian Fischer authored
-
Florian Fischer authored
* Remove the obsolete EMPER_LOG_OFF check. * Add LogLevel::Debug to DBG and WDBG
-
- Mar 12, 2021
-
-
Florian Schmaus authored
[IO] add execution time option to EchoClient See merge request !129
-
Florian Schmaus authored
[Debug] remove OFF LogLevel, make Info release default, use constexpr everywhere See merge request !130
-
Florian Fischer authored
-
Florian Fischer authored
-
- Mar 11, 2021
-
-
Florian Schmaus authored
[EchoServer] add configurable computation part in us spent busy looping See merge request !124
-
Florian Fischer authored
-
Florian Fischer authored
Specifying execution time and iterations is not allowed.
-
- Mar 10, 2021
-
-
Florian Schmaus authored
Improved echo client See merge request !128
-
- Mar 09, 2021
-
-
Florian Schmaus authored
[IO] make the lock implementation protecting a IoContext's cq configurable  See merge request !126
-
Florian Fischer authored
This change introduces a new synchronization primitive "PseudoCountingTryLock" which takes an actual lock as template and provides a CountingTryLock interface. By using a PseudoCountingTryLock we don't have to change any synchronization code in IoContext::reapCompletion. Since all PseudoCountingTryLock code is defined in a header the compiler should see our constant return values and hopefully optimize away any check depending on those constant return values. Options: * spin_lock - naive CAS spin lock * mutex - std::mutex * counting_try_lock (default) - our own lightweight special purpose synchronization primitive
-
Florian Schmaus authored
Reduce the critical section of io_uring CQ See merge request !120
-
Florian Schmaus authored
[meson] Fix 'iwyu' target for meson >= 0.57 See merge request !125
-
Florian Schmaus authored
Probably avoids dynamic memory allocation done by the previously used std::vector.
-
Florian Schmaus authored
The run_target() function requires an absolute path in meson >= 0.57.
-
- Mar 08, 2021
-
-
Florian Fischer authored
* Open file only when the benchmark was successful * Append to existing files without writing the header
-
Florian Fischer authored
Nagle's algorithm which tries to prevent small TCP frames is harmful for our throughput if we send small echos. Arithmetic means are inaccurate if the sample has extreme outliers therefore we record and report the total execution times.
-
Florian Schmaus authored
-
Florian Schmaus authored
[IO] parallelize IO startup See merge request !122
-
Florian Schmaus authored
[meson] remove obsolete io_batch_anywhere_completions option See merge request !121
-
Florian Fischer authored
GlobalIoContext::registerWorkerIo() now protects the GlobalIoContext's SQ with a mutex and the globalCompleter waits till all worker's registered their IoContext with the new Sempahore Runtime.ioReadySem.
-
Florian Fischer authored
Since 8f38dbed the globalCompleter does always reap and schedule in batches through IoContest::reapAndSchedule<CallerEnvironment::ANYWHERE> -> Runtime::scheduleFromAnywhere(Input it begin, InputIt end) -> AnywhereQueue::insert(Input it begin, InputIt end)
-
- Mar 03, 2021
-
-
Florian Schmaus authored
EMPER shutdown See merge request !111
-
Florian Schmaus authored
-
- Mar 02, 2021
-
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
Fix reap completion race See merge request !117
-
- Mar 01, 2021
-
-
Florian Fischer authored
-
Florian Fischer authored
Our current naive try lock protecting a worker's IoContext's cq is racy. This fact alone is no problem a try lock is by design racy in the sense that two threads race who can take the lock. The actual problem is: While a worker is holding the lock additional completions could arrive which the worker does not observe because it could be already finished iterating the CQ. In the case that the worker still holds the lock preventing the globalCompleter from reaping the additional completions there exists a lost wakeup problem possibly leading to a completely sleeping runtime with runnable completions in a worker's IoContext. To prevent this lost wakeup the cq_lock now counts the unsuccessful lock attempts from the globalCompleter. If a worker observes that the globalCompleter tried to reapCompletions more than once we know that a lost wakeup could have occurred and we try to reap again. Observing one attempt is normal since we know the globalCompleter and the worker owning the IoContext race for the cq_lock required to reap completions. Additionally: * Reduce the critical section in which the cq_lock is held by copying all seen cqes and completing the Futures after the lock was released. * Don't immediately schedule blocked Fibers or Callbacks rather collect them an return them as batch. Maybe the caller knows better what to to with a batch of runnable Fibers
-
Florian Schmaus authored
[meson] remove duplicate overflow_queue meson option See merge request !118
-
Florian Fischer authored
-