- May 01, 2021
-
-
Florian Fischer authored
-
- Apr 27, 2021
-
-
Florian Schmaus authored
[IO] provide memory to store continuation Fiber* by the caller See merge request !180
-
- Apr 21, 2021
-
-
Florian Fischer authored
Reason for this change is that we suspect the dynamic memory allocation in reapCompletions for the return vector to be rather costly. We know the maximum amount of memory needed to store continuation Fiber* at compile-time because the size of the CQs is fixed. This allows us to pass a buffer big enough to store all possible continuation Fiber* to reapCompletions from the caller preventing the need for the dynamic memory allocation for the returned vector. The caller has to ensure that the memory is free of data races. Currently this is ensured by allocating the buffer on the stack.
-
- Apr 20, 2021
-
-
Florian Schmaus authored
[io/Stats] do not try to print the globalIo stats if there are none See merge request !178
-
Florian Fischer authored
-
Florian Schmaus authored
[io] do not reap completions after resubmitting a PartialCompletableFuture Closes #17 See merge request !177
-
- Apr 19, 2021
-
-
Florian Fischer authored
Reaping completions after resubmitting a PartialCompletableFuture can lead to unbound recursion when the resubmitted Future was again partially completed during the resubmission. We already observed a stack overflow due to recursion for this in the IncrementalCompletionTest using completer thread with wakeup behaviour.
-
Florian Fischer authored
[EchoServer] fix echo function See merge request !176
-
Florian Fischer authored
The break was not in the right scope and thus exiting the echo loop immediately in the first iteration.
-
Florian Schmaus authored
[EchoServer] exit the echo server by terminate the runtime See merge request !175
-
Florian Fischer authored
Since stats are printed in the Runtime destructor we can not simply call exit() and have to properly terminate the Runtime. When the echo server receives a "quit" message all active connections will return and the Runtime will terminate if there is no work left.
-
- Apr 18, 2021
-
-
Florian Schmaus authored
introduce new CRTP based worker sleep algorithm abstraction See merge request !172
-
Florian Fischer authored
Introduce AbstractWorkerSleepStrategy a CRTP interface class for a worker sleep algorithm. A concrete WorkerSleepStrategy must implement the following functions: template <CallerEnvironment callerEnvironment> void notifyMany(unsigned count); template <CallerEnvironment callerEnvironment> void notifyOne(); template <CallerEnvironment callerEnvironment> void notifyAll(); void notifySpecific(workerid_t workerId); void sleep(); The runtime uses this interface to notify the workers about new work as well as ensuring that all workers get notified on termination. All sempahore based worker sleep algorithm code was moved from the Runtime into SemaphoreWorkerSleepStrategy which takes the used Semaphore as a template parameter. This interface should be an zero-cost abstraction. Encapsulating the worker sleep algorithm behind an interface allows us to easier experiment with different approaches not based on semaphores ("Wait in the io_uring", "Empty flag per WSQ"). Implement a generic notifySpecific algorithm for SemaphoreWorkerSleepStrategy. This algorithm comes with runtime overhead and is only used when it is used by the runtime and the semaphore implementation does not provide a own implementation.
-
- Apr 17, 2021
-
-
Florian Schmaus authored
[EchoClient] support latency histograms See merge request !174
-
Florian Fischer authored
Histograms can only be collected when using a fixed amount of iterations. When the '--histogram <file>' argument is passed each Client collects 4 time stamps (each 8 byte): 1. Before requesting the send operation 2. After requesting the send operation 3. After getting unblocked and dispatched because the send operation finished 4. After getting unblocked and dispatched because the recv operation finished Taking the timestamps is enabled using a template and thus does not introduce any runtime cost if they are not used except binary size. Before termination three latencies are calculated and written to the histogram file as csv data for each client and each echo. 1. total_latency := (T4 - T1) 2. after_send_latency := (T4 - T2) 3. after_send_dispatch_latency := (T4 - T3)
-
- Apr 16, 2021
-
-
Florian Schmaus authored
[repare-build-dir] Check for unknown meson options See merge request i4/manycore/emper!173
-
Florian Schmaus authored
Meson does only emit a warning if unknown options are passed. In our case, this is always something we should take care of, because an option we assumed we configured, had no effect. See also https://github.com/mesonbuild/meson/pull/8658
-
Florian Schmaus authored
[EchClient] calculate and output experiment totals See merge request !171
-
- Apr 15, 2021
-
-
Florian Fischer authored
This makes looking at individual experiment results and identifying outliers easier.
-
- Apr 14, 2021
-
-
Florian Schmaus authored
[EchoClient] overhaul the EchoClient.cpp See merge request i4/manycore/emper!165
-
Florian Fischer authored
Split output between two ini sections: global, clients. The global section includes results like: Arguments, total time spent in each phase, ... The clients section contains a sigle key 'csv' containing the csv data from each client inclufing the header: iterations, latency, reconnects, unexpected echos This leaves the post processing of the data to another program and does not hide experiment behavior (e.g. starvation of single clients) behind averages. Remove support for appending to an output file, because we do not use it in our emper-io-evaluation and it does not work anymore with the new output format.
-
Florian Schmaus authored
[Future] improve cancellation Closes #16 See merge request !170
-
Florian Fischer authored
* Unconditionally reconnect when the TCP connection was reset and count the reconnects * Send Client id and iteration in each echo * Use a Client class holding a clients state instead of a pthread style clientFunc * Create the Client object in the client Fiber to use NUMA first-touch policy * Reduce code duplication: * starting a new Client is now done with Client::startNew * latency measurement and error handling are moved from the clientIteration* functions in the Client::run function
-
- Apr 13, 2021
-
-
Florian Fischer authored
* Improve warn message in Future::cancel() * Don't cancel a Future in the destructor if it was already cancelled or received * Restructure CancelFutureTest into single separate test cases With this I can not reproduce the weird CancelFutureTest behavior anymore neither SIGABRT nor the timeout.
-
Florian Schmaus authored
Add WorkerLocalData and use it for stats See merge request !158
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Schmaus authored
For some reason, my IWYU wants this include to be removed.
-
Florian Schmaus authored
-
Florian Schmaus authored
Minor fixes See merge request !169
-
Florian Schmaus authored
-
Florian Schmaus authored
[LawsScheduler] Delete stray #define EMPER_OVERFLOW_QUEUE See merge request !168
-
Florian Schmaus authored
-
Florian Schmaus authored
-
- Apr 12, 2021
-
-
Florian Schmaus authored
[check-iwyu] Do not fail right away if IWYU_TOOL fails See merge request !167
-
Florian Schmaus authored
Since only newer versions of IWYU_TOOL fail with an exit code, we have to disable -e around the IWYU_TOOL invocation. Otherwise we would not print IWYU_LOG.
-
Florian Schmaus authored
[gitlab-ci] Update flowdalic/debian-testing-dev to 1.8 See merge request !162
-
Florian Schmaus authored
-
Florian Schmaus authored
[iwyu] Take load average into consideration on CI See merge request !151
-
Florian Schmaus authored
[IO] fix IoCompleterBehavior::none See merge request !161
-