Skip to content
Snippets Groups Projects
  1. Sep 21, 2021
  2. Sep 13, 2021
    • Florian Fischer's avatar
      [Debug] implement logging to a memory-mapped log file · ad10eb3a
      Florian Fischer authored
      
      When setting the environment variable EMPER_LOG_FILE=<logfile> EMPER
      will write its log messages to <logfile> instead of stderr.
      This removes the need for the mutex protecting std::cerr as well as
      multiple write calls to flush std:cerr.
      
      To efficiently write log messages to the log file the algorithm uses
      three memory 1MiB mapped views into <logfile> to store the log messages.
      One buffer is active, one is new, and one is old.
      The next buffer ensures that threads can write log messages even if the
      active buffer would overflows.
      The old buffer allows slower threads to still write safely while everyone
      else uses the active buffer.
      When a thread changes from the active buffer to the new buffer it
      is responsible to renew the current old buffer and changing the semantic
      of the buffers:
      
      * active -> old
      * next -> active
      * old -> next
      
      This buffer scheme allows wait-free logging.
      But the approach is NOT sound because delayed thread may still use the
      old buffer which gets renewed by the first thread touching the next buffer.
      But the likeliness for this situation decreases with bigger sizes of the
      buffers.
      
      ATTENTION: Using SCHED_IDLE for the completer may break this likeliness
      assumption.
      
      Add new CI test job with mmaped log files.
      
      This contains code cleanups
      Suggested-By: default avatarFlorian Schmaus <flow@cs.fau.de>
      ad10eb3a
  3. Jul 26, 2021
  4. May 28, 2021
  5. May 20, 2021
  6. May 05, 2021
  7. Apr 12, 2021
  8. Mar 22, 2021
  9. Mar 01, 2021
  10. Feb 25, 2021
  11. Feb 23, 2021
    • Florian Fischer's avatar
      [WorkerWakeupSemaphore] add three possible implementations · 3cde3e16
      Florian Fischer authored
      LockedSemaphore is the already existening Semaphore using
      a mutex and a condition variable.
      PosixMutex is a thin wrapper around a POSIX semaphore.
      SpuriousFutexSemaphore is a atomic/futex based implementation
      prune to spurious wakeups which is fine for the worker wakeup usecase.
      3cde3e16
  12. Feb 20, 2021
    • Florian Schmaus's avatar
      [Makefile] fix smoke-test/static-analysis target · 1b39754b
      Florian Schmaus authored
      This adds yet another target "smoke-test-suite", which just runs all
      tests in the 'smoke' test suite. The static-analysis target was
      changed to include *all* static analysis thingies we have, even 'doc'
      as Doxygen does also do some checks that the documentation is
      "correct".
      
      The smoke-test target is also kept, as it allows developers to simply
      run all smoke tests. Furthermore, this adds some missing PHONY
      declarations in the Makefile.
      
      The gitlab-ci now runs the smoke-test-suite and static-analysis
      targets in two different jobs. Previously the smoke-test would also
      run the static-analysis target, which was not intended.
      1b39754b
  13. Feb 02, 2021
  14. Feb 01, 2021
  15. Jan 26, 2021
  16. Jan 14, 2021
  17. Jan 13, 2021
  18. Jan 11, 2021
  19. Dec 17, 2020
  20. Dec 05, 2020
  21. Dec 02, 2020
  22. Nov 30, 2020
  23. Nov 27, 2020
  24. Nov 17, 2020
  25. Nov 10, 2020
  26. Nov 05, 2020
Loading