Skip to content
Snippets Groups Projects
  1. Sep 13, 2021
    • Florian Fischer's avatar
      [PipeSleepStrategy] prevent the still present race to cqes with the completer · 7a08804d
      Florian Fischer authored
      The previous race which I tried but in fact can not be fixed alone with
      waitInflight flag is now described in the code comment in
      PipeSleepStrategy::sleep().
      
      To completely prevent the completer and the worker racing to the
      new work notifications cqes we repurpose the cq_lock to ensure the
      completer is always observing and honoring the waitInflight flag.
      
      Also add an onNewWorkNotification callback to keep most sleep related
      code and logic in PipeSleepStrategy.
      7a08804d
  2. Sep 07, 2021
  3. Aug 27, 2021
  4. Aug 26, 2021
    • Florian Fischer's avatar
      [IoContext] die when the completer threads reaps new work notifications · f5906cb6
      Florian Fischer authored
      The PipeSleepStrategy uses the invariant that the completer thread
      is not reaping IoContext of workers which have a read of the
      sleep/notification pipe in flight.
      This means that it can not reap CQEs resulting from such reads.
      To esnure this invariant we DIE if the completer encounters completions
      for such notifications.
      f5906cb6
  5. Aug 24, 2021
  6. Aug 23, 2021
  7. Aug 20, 2021
  8. Aug 19, 2021
  9. Aug 18, 2021
  10. Aug 11, 2021
    • Florian Schmaus's avatar
      Merge branch 'random-worker-id' into 'master' · 96d27755
      Florian Schmaus authored
      [AbstractWorkStealingScheduler] Get rid of "rand() % workerCount"
      
      See merge request !229
      96d27755
    • Florian Schmaus's avatar
      [AbstractWorkStealingScheduler] Get rid of "rand() % workerCount" · bf8cf516
      Florian Schmaus authored
      The "rand() % workerCount" constructed used in the work-stealing
      scheduler is flawed. It has a bias toward lower worker IDs due the
      modulo operation. This is something I always wanted to get rid of, but
      never found the time to do it. Until know.
      
      Get rid of it and replace it with
      std::uniform_int_distribution<workerid_t> (as field the Worker
      instance).
      
      The main changes in AbstractWorkStealingScheduler are
      - use currentWorker->nextRandomWorkerId() (instead of the flawed construct)
      - currentWorker->getWorkerId() (instead of Runtime::getWorkerId())
      bf8cf516
  11. Aug 10, 2021
Loading