-
- Downloads
introduce new Scheduler::scheduleOn(fiber, workerId) function
This function is needed to deal with worker local ressources: io_uring requests for example. Each worker now always has a MPSC inbox queue which was already used in the laws scheduling strategy. Fibers can be scheduled to a specific worker using the new Scheduler::scheduleOn method. Since the inbox queues are now always present we can use a single FiberSource enum combining AbstractWorkStealingStrategy::FiberSource and LawsStrategy::FiberSource. The laws strategy now uses the inbox queues as its priority queues. With the only differenze that when scheduling to a inbox queue using the Scheduler::scheduleOn the Fiber lifes only in the inbox queue and not also simultaneously in a WSQ. Unrelated code changes made while touching the code anyway: * Introduce FiberSource::io which hints that a Fiber comes from the worker's own CQ. * Strongly type the fiber's source in NextFiberResult. * Make all scheduler functions return std::optional<NextFiberResult> * Cleanup the identation in nextFiberResultViaWorkStealing
Showing
- emper/FiberSource.cpp 30 additions, 0 deletionsemper/FiberSource.cpp
- emper/FiberSource.hpp 28 additions, 0 deletionsemper/FiberSource.hpp
- emper/NextFiberResult.hpp 3 additions, 1 deletionemper/NextFiberResult.hpp
- emper/Runtime.cpp 3 additions, 5 deletionsemper/Runtime.cpp
- emper/Runtime.hpp 11 additions, 4 deletionsemper/Runtime.hpp
- emper/Scheduler.cpp 11 additions, 0 deletionsemper/Scheduler.cpp
- emper/Scheduler.hpp 5 additions, 1 deletionemper/Scheduler.hpp
- emper/meson.build 1 addition, 0 deletionsemper/meson.build
- emper/strategies/AbstractWorkStealingScheduler.cpp 81 additions, 70 deletionsemper/strategies/AbstractWorkStealingScheduler.cpp
- emper/strategies/AbstractWorkStealingScheduler.hpp 14 additions, 18 deletionsemper/strategies/AbstractWorkStealingScheduler.hpp
- emper/strategies/AbstractWorkStealingStats.cpp 2 additions, 0 deletionsemper/strategies/AbstractWorkStealingStats.cpp
- emper/strategies/AbstractWorkStealingWorkerStats.cpp 1 addition, 0 deletionsemper/strategies/AbstractWorkStealingWorkerStats.cpp
- emper/strategies/AbstractWorkStealingWorkerStats.hpp 1 addition, 0 deletionsemper/strategies/AbstractWorkStealingWorkerStats.hpp
- emper/strategies/laws/LawsDispatcher.cpp 16 additions, 13 deletionsemper/strategies/laws/LawsDispatcher.cpp
- emper/strategies/laws/LawsScheduler.cpp 3 additions, 21 deletionsemper/strategies/laws/LawsScheduler.cpp
- emper/strategies/laws/LawsScheduler.hpp 9 additions, 5 deletionsemper/strategies/laws/LawsScheduler.hpp
- emper/strategies/laws/LawsStrategy.hpp 0 additions, 12 deletionsemper/strategies/laws/LawsStrategy.hpp
- emper/strategies/ws/WsDispatcher.cpp 6 additions, 4 deletionsemper/strategies/ws/WsDispatcher.cpp
- emper/strategies/ws/WsScheduler.hpp 9 additions, 1 deletionemper/strategies/ws/WsScheduler.hpp
- tests/ScheduleOnTest.cpp 35 additions, 0 deletionstests/ScheduleOnTest.cpp
Loading
Please register or sign in to comment