Skip to content

Commit b15f814

Browse files
committed
DPL: exponential back-off for missing resources.
1 parent 462abe1 commit b15f814

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

Framework/Core/src/DataProcessingDevice.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,6 +1377,7 @@ void DataProcessingDevice::Run()
13771377
std::atomic<size_t> numberOfUnscheduledSinceLastScheduled = 0;
13781378
std::atomic<size_t> numberOfUnscheduled = 0;
13791379
std::atomic<size_t> numberOfScheduled = 0;
1380+
std::atomic<size_t> nextWarnAt = 1;
13801381
};
13811382
static SchedulingStats schedulingStats;
13821383
O2_SIGNPOST_ID_GENERATE(sid, scheduling);
@@ -1387,6 +1388,7 @@ void DataProcessingDevice::Run()
13871388
schedulingStats.lastScheduled = uv_now(state.loop);
13881389
schedulingStats.numberOfScheduled++;
13891390
schedulingStats.numberOfUnscheduledSinceLastScheduled = 0;
1391+
schedulingStats.nextWarnAt = 1;
13901392
O2_SIGNPOST_EVENT_EMIT(scheduling, sid, "Run", "Enough resources to schedule computation on stream %d", streamRef.index);
13911393
if (dplEnableMultithreding) [[unlikely]] {
13921394
stream.task = &handle;
@@ -1396,12 +1398,12 @@ void DataProcessingDevice::Run()
13961398
run_completion(&handle, 0);
13971399
}
13981400
} else {
1399-
if (schedulingStats.numberOfUnscheduledSinceLastScheduled > 100 ||
1400-
(uv_now(state.loop) - schedulingStats.lastScheduled) > 30000) {
1401+
if (schedulingStats.numberOfUnscheduledSinceLastScheduled >= schedulingStats.nextWarnAt) {
14011402
O2_SIGNPOST_EVENT_EMIT_WARN(scheduling, sid, "Run",
14021403
"Not enough resources to schedule computation. %zu skipped so far. Last scheduled at %zu. Data is not lost and it will be scheduled again.",
14031404
schedulingStats.numberOfUnscheduledSinceLastScheduled.load(),
14041405
schedulingStats.lastScheduled.load());
1406+
schedulingStats.nextWarnAt = schedulingStats.nextWarnAt * 2;
14051407
} else {
14061408
O2_SIGNPOST_EVENT_EMIT(scheduling, sid, "Run",
14071409
"Not enough resources to schedule computation. %zu skipped so far. Last scheduled at %zu. Data is not lost and it will be scheduled again.",

0 commit comments

Comments
 (0)