2015-09-08 40 views
0

我承載一個視頻編碼服務。我的客戶提交一些視頻進行編碼。目前,我只是以FIFO的方式編碼它們。我想改變它,這樣每個客戶都可以獲得我的服務。高效的作業調度算法

我想考慮下列因素:

1.先進先出 - 先提交作業具有更高的優先級。
2.如果客戶提交大量視頻,我想優先考慮。

我可以通過設置數據庫的屬性來控制客戶端的優先級,但不能控制每個視頻。 如何更好地控制所有視頻並有效地安排它們?

PS:如果需要,我可以重新設計數據庫。

+0

爲什麼不使用雲簡單地根據需要放大編碼器的數量,在不需要時縮小編碼器的數量,那麼您就沒有這個問題。 –

+0

我正在使用AWS雲,我在固定數量的ec2實例上運行我的編碼服務(節省成本)。存在的視頻需要離線編碼。我可以根據需要擴展ec2實例,但我認爲目前不需要,因爲我沒有很多客戶端。但我想有一個有效的算法來安排任務。 – user3288346

回答

0

以下是對客戶公平的方法:不要排隊作業,而是將提交作業的客戶排隊到FIFO中。當每個客戶端到達隊列的前端時,對其第一個作業進行編碼,如果該客戶端有更多的作業,則將該客戶端放回隊列中。

+0

這很聰明。但是,在未來,也許我想有其他參數,如視頻大小等 – user3288346

0

您可以計算編碼成本(基於尺寸和/或質量),並將其除以請求的年齡(curent time減去發出請求的時間加上一些阻尼常數)。 然後,您將使用此分數按遞增順序排列請求。

對大請求進行排隊的客戶端將不得不等待較小的請求進行處理,但最終得到的分數足夠小以便進行調度。