Skip to content
Snippets Groups Projects
  1. Apr 04, 2022
  2. Feb 25, 2022
  3. Feb 22, 2022
    • Florian Schmaus's avatar
      [apps]: Modernize 'fib' app · ca5bcf5c
      Florian Schmaus authored
      ca5bcf5c
    • Florian Fischer's avatar
      implement a sharded file buffer · 2531492e
      Florian Fischer authored
      Each worker thread has it own stringstream per ShardedFileBuffer.
      All streams are joined and flushed to the file when a ShardedFileBuffer
      is destructed.
      
      Flushing a ShardedFileBuffer is not thread-safe and must not be called
      concurrently to any modifications to the ShardedFileBuffer.
      
      Use a ShardedFileBuffer to accumulate and print all paths during fsearch.
      2531492e
  4. Feb 21, 2022
    • Florian Fischer's avatar
      fsearch: write only found files to stdout and use implicit file offset · b0438822
      Florian Fischer authored
      In the emper-fs-eval I would like to validate the output of the fsearch
      variants against a list of known files. Not writing any log messages to
      stdout make that easier.
      
      Use -1 as the offset of the write to stdout.
      Passing offset -1 means to use the file's implicit offset just like write(2).
      When using a tty as stdout offset 0 is fine but when redirecting stdout
      to a file 0 will cause that previously found paths will always be
      overwritten.
      b0438822
  5. Feb 07, 2022
  6. Jan 21, 2022
  7. Dec 14, 2021
  8. Dec 06, 2021
  9. Nov 29, 2021
  10. Nov 23, 2021
  11. Oct 28, 2021
    • Florian Fischer's avatar
      [EchoSever] implement random computations variants · 964278bc
      Florian Fischer authored
      Now three variants of computation are available:
      
      * fixed (echoserver <port> <computation>:
         This will always consume computation us before sending the echo
         back to the client.
      * random range (echoserver <port> <computation> <computation-max>:
         This will consume a random computation uniformly selected
         from the interval [computation, computation-max] us.
      * random min-max (echoserver <port> <computation> <computation-max> <max-probability>
         This will either consume computation or computation-max us.
         The max computation is randomly chosen with the specified probability.
      
      All random values are generated with a thread_local mt19937 generator
      and uniformly distributed with uniform_{int,real}_distribution.
      964278bc
    • Florian Fischer's avatar
      42fda2bb
    • Florian Fischer's avatar
      d7d109a1
  12. Oct 12, 2021
  13. Sep 24, 2021
    • Florian Fischer's avatar
      [EchoServer] set SO_REUSEPORT on the listen socket · b79f5470
      Florian Fischer authored
      This is needed by emper-io-eval because apparently our startup/termination
      times are shorter than the OS allows the rebinding of the same tcp tuple.
      
      Also make all global variables static because they don't have to be exported.
      b79f5470
  14. Sep 14, 2021
  15. Sep 13, 2021
  16. Aug 19, 2021
  17. Aug 09, 2021
  18. Aug 08, 2021
  19. Jul 28, 2021
  20. 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
  21. Jul 23, 2021
  22. Jul 21, 2021
  23. May 20, 2021
  24. May 03, 2021
  25. Apr 19, 2021
  26. 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
  27. Apr 15, 2021
  28. 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
Loading