Skip to content
Snippets Groups Projects

Add WorkerLocalData and use it for stats

Merged Florian Schmaus requested to merge flow/emper:improve-stats into master
Files
27
@@ -2,13 +2,13 @@
// Copyright © 2020-2021 Florian Schmaus
#include "LawsDispatcher.hpp"
#include <atomic> // for atomic, memory_order_relaxed
#include "Common.hpp" // for DIE_MSG
#include "Emper.hpp"
#include "LawsStrategy.hpp" // for LawsStrategy, LawsStrategy::FiberSource
#include "NextFiberResult.hpp"
#include "Runtime.hpp"
#include "emper-common.h"
#include "strategies/laws/LawsWorkerStats.hpp"
void LawsDispatcher::recycle(Fiber* fiber) {
// If the ref count has not reached zero yet, do not recycle the
@@ -36,16 +36,16 @@ void LawsDispatcher::dispatchLoop() {
auto fiberSource = static_cast<LawsStrategy::FiberSource>(next.metadata);
switch (fiberSource) {
case LawsStrategy::FiberSource::fromPriority:
lawsStrategy.dispatchedFiberFromPriority.fetch_add(1, std::memory_order_relaxed);
LawsStrategy::stats.dispatchedFibersFromPriority++;
break;
case LawsStrategy::FiberSource::local:
lawsStrategy.dispatchedFiberFromLocal.fetch_add(1, std::memory_order_relaxed);
LawsStrategy::stats.dispatchedFibersFromLocal++;
break;
case LawsStrategy::FiberSource::stolen:
lawsStrategy.dispatchedFiberStolen.fetch_add(1, std::memory_order_relaxed);
LawsStrategy::stats.dispatchedFibersStolen++;
break;
case LawsStrategy::FiberSource::anywhereQueue:
lawsStrategy.dispatchedFiberFromAnywhere.fetch_add(1, std::memory_order_relaxed);
LawsStrategy::stats.dispatchedFibersFromAnywhereQueue++;
break;
default:
DIE_MSG("Unknown fiber source: " << next.metadata);
Loading