Skip to content
Snippets Groups Projects
  1. Apr 06, 2021
  2. Apr 03, 2021
  3. Apr 02, 2021
  4. Apr 01, 2021
  5. Mar 29, 2021
    • Florian Schmaus's avatar
      Merge branch 'cleanup-debug5' into 'master' · 820575a0
      Florian Schmaus authored
      [Debug.hpp] wrap actual logging in log-level constexpr
      
      See merge request !150
      820575a0
    • Florian Fischer's avatar
      [Debug.hpp] wrap actual logging in log-level constexpr · 3626bdf4
      Florian Fischer authored
      According to godbolt.org
      
      do { if constexpr(false) { break; } int foo = 42; foo++; } while(false);
      
      does result in code generation for gcc 10.2 and clang 11.0.1 as opposed to
      
      do { if constexpr(false) { int foo = 42; foo++; }} while(false);
      
      which does not result in code generation for both gcc and clang.
      
      And this simple change did indeed significantly increases our echo
      benchmark performance. We were probably creating a lot of std::stringstream
      objects without ever using them.
      3626bdf4
  6. Mar 24, 2021
  7. Mar 23, 2021
  8. Mar 22, 2021
  9. Mar 19, 2021
  10. Mar 18, 2021
    • Florian Schmaus's avatar
      Merge branch 'io_misc' into 'master' · f2a2a12f
      Florian Schmaus authored
      Fix submit of invalid Future chains
      
      Closes #13
      
      See merge request !136
      f2a2a12f
    • Florian Fischer's avatar
      [IoContext] invalidate unsubmitted sqes · 03727b29
      Florian Fischer authored
      io_uring_submit does some inline error checking and consumes less
      cqes than prepared if an error is detected.
      
      Currently we just cancel the Futures, whose prepared sqes were not submitted.
      But this leaves already prepared sqes for those futures in the SQ
      of the io_uring which will be submitted the next time io_uring_submit
      is called.
      
      This results in a violation of the chain guaranty, that dependent operations
      are only executed if all dependencies were successful.
      Additionally this leads to double completions or memory corruption
      because the io_uring will produce cqes for already completed Futures.
      
      To prevent this from happening we track all sqes we prepared to
      invalidate and resubmit those which were not submitted because of a short submit.
      We invalidate sqes by preparing them as NOP instructions and set their
      user data to NULL.
      
      I took this approach instead of rewinding the ring or somethings like
      similar because it seemed safer for me not fiddle with io_uring internals
      and just be less efficient.
      
      Enable previously failing LinkFutureTest test cases.
      03727b29
    • Florian Fischer's avatar
    • Florian Fischer's avatar
      [IO] mark IO functions returning futures as nodiscard · 79f6eb9f
      Florian Fischer authored
      Fix compilation error in LinkFutureTest where clsoe was used instead
      of closeAndWait.
      79f6eb9f
Loading