- Apr 19, 2021
-
-
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 i4/manycore/emper!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 i4/manycore/emper!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 i4/manycore/emper!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 i4/manycore/emper!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 i4/manycore/emper!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 i4/manycore/emper!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 i4/manycore/emper!169
-
Florian Schmaus authored
-
Florian Schmaus authored
[LawsScheduler] Delete stray #define EMPER_OVERFLOW_QUEUE See merge request i4/manycore/emper!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 i4/manycore/emper!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 i4/manycore/emper!162
-
Florian Schmaus authored
-
Florian Schmaus authored
[iwyu] Take load average into consideration on CI See merge request i4/manycore/emper!151
-
Florian Schmaus authored
[IO] fix IoCompleterBehavior::none See merge request i4/manycore/emper!161
-
Florian Schmaus authored
[gitlab-ci] Fix test-with-stats See merge request i4/manycore/emper!159
-
Florian Schmaus authored
[io/Future] take a const reference of the Future::Callback See merge request i4/manycore/emper!163
-
Florian Fischer authored
Currently we always resubmit a possible partial completed Future in the globalIo context. This is not possible any more when we don't have a running completer. Therefore we must resubmit on a worker's IoContext. Furthermore we now select the callerEnvironment at Runtime because I can not remember the reason why I choose to always resubmit on the GlobalIoContext.
-
Florian Schmaus authored
The EMPER option Meson option for stats is called 'stats' not 'worker_stats'.
-
Florian Schmaus authored
-
Florian Schmaus authored
-
Florian Fischer authored
-
Florian Schmaus authored
-