Skip to content
Snippets Groups Projects
  1. Aug 08, 2021
  2. Jul 28, 2021
  3. Jul 26, 2021
    • Florian Fischer's avatar
      [meson] allow building EMPER on systems whithout <filesystem> · 6753d982
      Florian Fischer authored
      Check if std::filesystem::recursive_directory_iterator and std::filesystem::path
      are available before using those in EMPER code.
      
      We do not export the symbols using the not supported filesystem features
      in our public headers using preprocessor ifdef.
      
      But the code in the cpp files using it not removed using the preprocessor.
      To allow linkage we use a constexpr which throws a logic_error on runtime
      rendering the rest of the code dead und thus prevents its generation by
      the compiler.
      This methods allows the compiler to see the code in its analysis passes
      but does not fail during linking.
      
      Allow meson.build files in emper/ subdirectories add configuration options
      by consuming the conf_data object after all subdirectories were visited.
      
      Introduce a quasi naming standard for cpp feature flags in meson code:
      	cpp_has_<namespace>_<feature>
      
      Examples:
      	cpp_has_fs_path
      6753d982
    • Florian Fischer's avatar
  4. Jul 23, 2021
  5. Jul 21, 2021
  6. May 20, 2021
  7. May 03, 2021
  8. Apr 19, 2021
  9. Apr 17, 2021
    • Florian Fischer's avatar
      [EchoClient] support latency histograms · a71a6127
      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)
      a71a6127
  10. Apr 15, 2021
  11. Apr 14, 2021
    • Florian Fischer's avatar
      [EchoClient] change the output format · 0b08f773
      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.
      0b08f773
    • Florian Fischer's avatar
      [EchoClient] reconnect on ECONNRESETC and C++-ify the code · 8f01db62
      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
      8f01db62
  12. Apr 08, 2021
    • Florian Fischer's avatar
      [EchoClient] collect the total amount of unexpected echos · 592f72d1
      Florian Fischer authored
      My first test runs don't show unexpected echos. Therefore I think
      unexpected echos are rare and their average will always be 0 even if
      some sparse unexpected echos occur.
      592f72d1
    • Florian Fischer's avatar
      [EchoClient] changes to easier debug our IO evaluation artifact · e554f7fd
      Florian Fischer authored
      * Use emper::lib::math::RunningAverage instead of doing it manually
      * Count the unexpected Echos, print a error to the log and go continue
      * Return a duration and error message pair from our clientIteration* functions
      * Print the current iteration on error
      * Wait 10 seconds after an error before terminating
      e554f7fd
    • Florian Fischer's avatar
      [EchoClient] improve unexpected echo output · 23cb213d
      Florian Fischer authored
      Build up output string and don't incrementally output it to stderr
      to hopefully prevent error messages interleaving.
      Only output the least significant byte of the unsigned int cast.
      Always use two digits per byte and remove the whitespace.
      Should have used printf in the first place.
      23cb213d
  13. Apr 06, 2021
  14. Apr 02, 2021
  15. Mar 23, 2021
    • Florian Fischer's avatar
      [Debug] s/WDBG/DBG and always terminate a log messager with a new line · 28028fac
      Florian Fischer authored
      Rename the macro used to build up the debug message, to better reflect
      its generality.
      It can be used anywhere to build a string with C++ stream formatting.
      std::string s = EMPER_BUILD_STR("foo = " << 1 " , bar = " << bar(42));
      
      Since WDBG was the only log macro without a terminating newline, which
      was in fact broken according to flow, we can remove it and the new line
      handling code in the LOG macro.
      28028fac
  16. Mar 17, 2021
    • Florian Fischer's avatar
      [EchoClient] make linked futures optional · ae81b029
      Florian Fischer authored
      While we haven't figured out why the version using linked futures breaks
      we can use a simpler implementation which calls submitAndWait on both futures
      separately
      ae81b029
    • Florian Fischer's avatar
      [EchoCLient] use a thread to terminate · d87acb25
      Florian Fischer authored
      First of all this replaces the call to sleep(execution_seconds)
      which calls POSIX sleep(3) which is definitely not what we want here
      blocking one worker thread.
      
      Using a std::thread for termination was chosen because we assume it
      will be more precise than the emper native emper::sleep.
      d87acb25
  17. Mar 11, 2021
  18. Mar 08, 2021
  19. Feb 22, 2021
  20. Feb 08, 2021
  21. Feb 06, 2021
  22. Feb 05, 2021
  23. Feb 03, 2021
Loading