From 90c73589a8f2ba5afb442cac0256bd7635d50317 Mon Sep 17 00:00:00 2001 From: Florian Schmaus <flow@cs.fau.de> Date: Thu, 24 Feb 2022 11:30:43 +0100 Subject: [PATCH] [AbstractWorkStealingScheduler] Emit warning if queue is full In case pushing to the local work-stealing queue fails because the queue is full, and that failure is not fatal as it is in Fibril, emit a warning once. --- emper/strategies/AbstractWorkStealingScheduler.cpp | 3 +++ emper/strategies/AbstractWorkStealingScheduler.hpp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/emper/strategies/AbstractWorkStealingScheduler.cpp b/emper/strategies/AbstractWorkStealingScheduler.cpp index 0dbfb91c..310131de 100644 --- a/emper/strategies/AbstractWorkStealingScheduler.cpp +++ b/emper/strategies/AbstractWorkStealingScheduler.cpp @@ -294,6 +294,9 @@ auto AbstractWorkStealingScheduler::pushBottom(AbstractFiber& fiber) -> bool { uint64_t queueLength = pushed.size; awss::stats.recordScheduledToLocalAndQueueLength(queueLength); } + } else if (!queueFullWarningEmitted) { + queueFullWarningEmitted = true; + LOGW("Pushing to queue failed: Queue full"); } return pushed; } diff --git a/emper/strategies/AbstractWorkStealingScheduler.hpp b/emper/strategies/AbstractWorkStealingScheduler.hpp index 35f80893..9afead16 100644 --- a/emper/strategies/AbstractWorkStealingScheduler.hpp +++ b/emper/strategies/AbstractWorkStealingScheduler.hpp @@ -28,6 +28,8 @@ class AbstractWorkStealingScheduler : public Scheduler { auto nextFiberViaAnywhereQueue() -> std::optional<NextFiberResult>; auto tryStealFiberFrom(workerid_t victim) -> std::optional<NextFiberResult>; + bool queueFullWarningEmitted = false; + protected: WsQueue<QUEUE_SIZE>** queues; static thread_local WsQueue<QUEUE_SIZE> queue; -- GitLab