Browse Source

Mitigate stealing storm a bit

Samuel Thibault 8 years ago
parent
commit
7a7c9d2a4a
1 changed files with 3 additions and 1 deletions
  1. 3 1
      src/sched_policies/work_stealing_policy.c

+ 3 - 1
src/sched_policies/work_stealing_policy.c

@@ -549,7 +549,9 @@ static struct starpu_task *ws_pop_task(unsigned sched_ctx_id)
 	if (victim == -1)
 		return NULL;
 
-	STARPU_PTHREAD_MUTEX_LOCK(&ws->per_worker[victim].worker_mutex);
+	if (STARPU_PTHREAD_MUTEX_TRYLOCK(&ws->per_worker[victim].worker_mutex))
+		/* victim is busy, don't bother it, come back later */
+		return NULL;
 	if (ws->per_worker[victim].queue_array != NULL && ws->per_worker[victim].queue_array->ntasks > 0)
 	{
 		task = ws_pick_task(victim, workerid, sched_ctx_id);