diff --git a/emper/lib/adt/LockedQueue.hpp b/emper/lib/adt/LockedQueue.hpp
index a1a86180f0d320d8298c2deaa12d1c45ede42b41..6344ccd468107234f42c8cbdfa915cd4606f7452 100644
--- a/emper/lib/adt/LockedQueue.hpp
+++ b/emper/lib/adt/LockedQueue.hpp
@@ -29,6 +29,11 @@ class LockedQueue {
 		return SIZE - deque.size();
 	}
 
+	auto usedSlots() -> size_t {
+		std::lock_guard<std::mutex> lock(queue_mutex);
+		return deque.size();
+	}
+
 	auto pushBottom(const I item) -> bool {
 		std::lock_guard<std::mutex> lock(queue_mutex);
 
diff --git a/emper/strategies/AbstractWorkStealingScheduler.cpp b/emper/strategies/AbstractWorkStealingScheduler.cpp
index 9205a6890ac5ab70c3ee853ac7b5088392c97f11..09fc49b89ca4a5fc6aac13e524a9ffb0d05851ee 100644
--- a/emper/strategies/AbstractWorkStealingScheduler.cpp
+++ b/emper/strategies/AbstractWorkStealingScheduler.cpp
@@ -48,7 +48,8 @@ void AbstractWorkStealingScheduler::scheduleViaWorkStealing(Fiber& fiber) {
 			ABORT("Could not push fiber " << &fiber << " into queue");
 		}
 	} else if constexpr (emper::STATS) {
-		awss::stats.scheduledFibersToLocal++;
+		uint64_t queueLength = queue.usedSlots();
+		awss::stats.recordScheduledToLocalAndQueueLength(queueLength);
 	}
 
 	// Classes using this method are supposed to always invoke this
diff --git a/emper/strategies/AbstractWorkStealingStats.cpp b/emper/strategies/AbstractWorkStealingStats.cpp
index 0e6492a2d096c2391a71386ca07ae51a597b69c7..c6e6e79620c715b91139fe944ce98a5d56345591 100644
--- a/emper/strategies/AbstractWorkStealingStats.cpp
+++ b/emper/strategies/AbstractWorkStealingStats.cpp
@@ -21,6 +21,8 @@ void AbstractWorkStealingStats::print() {
 						<< std::to_string(comulatedWorkerStats.scheduledFibersToLocal) << std::endl
 						<< "total-scheduled-fibers-to-overflow-queue: "
 						<< std::to_string(comulatedWorkerStats.scheduledFibersToOverflowQueue) << std::endl
+						<< "global-max-queue-length: " << std::to_string(comulatedWorkerStats.maxQueueLength)
+						<< std::endl
 						<< "total-next-fiber-from-local: "
 						<< std::to_string(comulatedWorkerStats.nextFiberFromLocal) << std::endl
 						<< "total-next-fiber-hint-local: "
diff --git a/emper/strategies/AbstractWorkStealingWorkerStats.cpp b/emper/strategies/AbstractWorkStealingWorkerStats.cpp
index 260e5d4fbeced409950dea2f5343b11cc7fb906e..c7adae3f6b6aab1eefe381af0e3fac08d5ec187b 100644
--- a/emper/strategies/AbstractWorkStealingWorkerStats.cpp
+++ b/emper/strategies/AbstractWorkStealingWorkerStats.cpp
@@ -8,6 +8,7 @@ auto AbstractWorkStealingWorkerStats::operator+=(const AbstractWorkStealingWorke
 		-> AbstractWorkStealingWorkerStats& {
 	scheduledFibersToLocal += other.scheduledFibersToLocal;
 	scheduledFibersToOverflowQueue += other.scheduledFibersToOverflowQueue;
+	maxQueueLength = std::max(maxQueueLength, other.maxQueueLength);
 	nextFiberFromLocal += other.nextFiberFromLocal;
 	nextFiberStolen += other.nextFiberStolen;
 	nextFiberFromAnywhereQueue += other.nextFiberFromAnywhereQueue;
@@ -27,3 +28,8 @@ void AbstractWorkStealingWorkerStats::recordFibersLiftedFromAnywhereQueue(
 			std::max(maxFibersLiftedFromAnywhereQueue, fibersLiftedFromAnywhereQueue);
 	avgFibersLiftedFromAnywhereQueue.update(fibersLiftedFromAnywhereQueue);
 }
+
+void AbstractWorkStealingWorkerStats::recordScheduledToLocalAndQueueLength(uint64_t queueLength) {
+	scheduledFibersToLocal++;
+	maxQueueLength = std::max(maxQueueLength, queueLength);
+}
diff --git a/emper/strategies/AbstractWorkStealingWorkerStats.hpp b/emper/strategies/AbstractWorkStealingWorkerStats.hpp
index 35126d12537fc37fe720601f43663bbb0f2ca655..684b1d5966ac5c910f9c14125a002378dea4152a 100644
--- a/emper/strategies/AbstractWorkStealingWorkerStats.hpp
+++ b/emper/strategies/AbstractWorkStealingWorkerStats.hpp
@@ -15,6 +15,7 @@ class AbstractWorkStealingWorkerStats {
  public:
 	uint64_t scheduledFibersToLocal = 0;
 	uint64_t scheduledFibersToOverflowQueue = 0;
+	uint64_t maxQueueLength = 0;
 	uint64_t nextFiberFromLocal = 0;
 	uint64_t nextFiberFromHintLocal = 0;
 	uint64_t nextFiberFromHintAnywhere = 0;
@@ -29,4 +30,6 @@ class AbstractWorkStealingWorkerStats {
 
  private:
 	void recordFibersLiftedFromAnywhereQueue(size_t fibersLiftedFromAnywhere);
+
+	void recordScheduledToLocalAndQueueLength(uint64_t queueLength);
 };