O Work Stealing é sempre o algoritmo de agendamento de encadeamento no nível do usuário mais apropriado?

Eu tenho investigado algoritmos diferentes de agendamento para um pool de threads que estou implementando. Devido à natureza do problema que estou resolvendo, posso assumir que as tarefas executadas em paralelo são independentes e não geram novas tarefas. As tarefas podem ter tamanhos variados.

Fui imediatamente ao algoritmo de agendamento mais popular "roubo de trabalho" usando deques sem bloqueio para as filas de trabalhos locais, e estou relativamente satisfeito com essa abordagem. No entanto, estou me perguntando se existem casos comuns em que o roubo de trabalho não é a melhor abordagem.

Para esse problema em particular, tenho uma boa estimativa do tamanho de cada tarefa individual. O roubo de trabalho não utiliza essas informações e estou me perguntando se existe algum agendador que ofereça melhor balanceamento de carga do que o roubo de trabalho com essas informações (obviamente com a mesma eficiência).

NB. Esta questão está ligada a uma anteriorPergunta, questão.

questionAnswers(2)

yourAnswerToTheQuestion