我正在尋找分配一些任務的算法。問題如下:考慮延遲和效率的最佳分配任務的方法
假設我有一箇中心任務生產者和一些客戶消費者。生產者生成任務,消費者接受任務(對於初學者,一次一個),處理它們,當它們完成時,接受新任務(我已經有一個任務隊列)。
問題是,如果考慮從生產者到消費者的任務延遲,將任務組合在一起可能是有意義的。例如,假設我們共有10項任務和2個消費者。如果每個任務需要5毫秒才能處理,並且網絡延遲也是5毫秒,則向每個消費者發送2組5個任務,每個任務需要5ms + 5 * 5ms = 30ms,而單獨發送任務需要5 * 5ms + 5 * 5ms = 50ms,因爲每個任務都會出現延遲開銷。
它不像分組那樣簡單,因爲某些任務可能需要更長時間,因此將它們分開發送以讓其他消費者並行處理花費較短時間的其他任務是有意義的。我打算做一些關於任務類型的統計。消費者的數量也不是恆定的。
任何一個好的算法或好的閱讀,可以幫助我實現這個想法?
爲什麼不開始在當前開始工作時預取下一個任務? – CAFxX
@CAFxX可能效率低下,已經完成的消費者可能已經開始處理它,而是等待當前的消費者完成。 –
通過預取,我顯然是指從任務隊列中彈出下一個任務,以便潛在地隱藏。由於該任務已從隊列中移除,因此其他消費者無法開始處理該任務。 – CAFxX