Skip to content

[IO] set the affinity of Fibers created by the completer thread

Florian Fischer requested to merge aj46ezos/emper:io-use-affinity into master

This is a followup to and supersedes !186 (closed).

  1. Switch from the STL iterator based to a C-style array batched schedule interface
    template<class Iterator> schedule(Iterator begin, Iterator finish) -> schedule(Fiber** fibers, unsigned count)
  2. Schedule Fibers from anywhere with set affinity to the AnywhereQueue and the hinted priorityQueue
  3. Use the new BPS affinity aware signalFromAnywhere and a affinity hint stored in Future::CallbackInternal to set the affinity for Fiber created by the completer thread and scheduled to the AnywhereQueue

I want this to experiment with the IO completer and laws. To see if scheduling completions reaped by the completer to the worker priorityQueue as well is beneficial. Maybe the benefit of faster dispatch from priorityQueue vs AnywhereQueue is worth the laws overhead especially in scenarios where the completer reaps a significant chunk of all completions (20 Worker eval).

Merge request reports