저는 구현중인 스레드 풀에 대한 다른 스케줄링 알고리즘을 조사했습니다. 해결할 문제의 본질 때문에 병렬로 실행되는 작업은 독립적이며 새로운 작업을 생성하지 않는다고 가정 할 수 있습니다. 작업은 다양한 크기 일 수 있습니다.Work Stealing은 항상 가장 적절한 사용자 수준의 스레드 스케줄링 알고리즘입니까?
로컬 작업 대기열에 대해 잠금없는 데크를 사용하여 가장 인기있는 스케줄링 알고리즘 인 "work stealing"을 즉시 사용했습니다.이 접근법에 비교적 만족합니다. 그러나 나는 work-stealing이 최선의 방법이 아닌 일반적인 경우가 있는지 궁금해하고 있습니다.
이 특정 문제에 대해서는 각 개별 작업의 크기를 잘 예측했습니다. Work-stealing은이 정보를 사용하지 않으며이 정보로 작업을 도용하는 것보다로드 밸런싱을 향상시키는 스케줄러가 있는지 궁금합니다.
NB. 이 질문은 이전의 question과 관련이 있습니다.
이 하위 주제에 대해서는 거의 알지 못하지만이 관련 질문에 대한 답변 중 일부는 도움이 될 것입니다. http://stackoverflow.com/questions/2552810/work-stealing-vs-work-shrugging –