跳轉到內容

MeGUI/演示/並行作業執行

來自華夏公益教科書,開放的書籍,開放的世界

並行作業執行是MeGUI 0.2.6.1001版本中引入的一項功能,允許同時執行多個作業。此頁面解釋了其引入的原因以及如何使用它。

影片編碼是一項CPU密集型任務,歡迎硬體的改進,以提高編碼速度,並允許編碼器進行更深入的搜尋以實現更好的壓縮率。雙核CPU理論上比單核CPU快近2倍,隨著核心數量的增加,效能提升(理論上)會持續增加。為了利用這種額外的處理能力,影片編碼器已經並行化以支援多個核心。這意味著編碼前端可以實現多核CPU的大部分效能提升,而無需進行任何操作。但是,這主要有兩個問題。

  1. 編碼器內部的同步需求意味著計算機的處理能力並非全部使用。雖然與單核應用程式相比仍能觀察到顯著的效能提升,但並沒有達到您希望的2倍/3倍/4倍/等倍的速度提升。
  2. 並非所有編碼器都支援多執行緒。尤其是,許多音訊編碼器仍然是單執行緒的。

有一種替代方法。由於影片編碼通常同時進行多個作業,因此同時執行這些作業可以解決這兩個問題,因為並行來自同時執行,而不是來自編碼器本身。

支援並行作業執行無需按順序執行作業,這使得在使用MeGUI時更加自由:您無需等待一個作業完成才能執行下一個作業。

工作原理

[編輯 | 編輯原始碼]

作業執行的基本單位是作業工作者(或簡稱工作者)。單個工作者一次只能處理一個作業。然而,在MeGUI中,可以有多個作業工作者,每個工作者都處理作業,從而實現並行。

正常作業執行

[編輯 | 編輯原始碼]

作業處理的標準方法是,每個作業工作者從主作業佇列中請求一個作業,處理它,然後請求另一個作業。這將持續到所有作業完成或無法處理(例如,它們被設定為推遲跳過中止,或者它們出現錯誤)。為了防止相互依賴的作業按錯誤的順序執行,每個作業都維護一個它所依賴的作業列表,並且只有在所有它所依賴的作業成功完成(這意味著它們的狀態為完成)之後,才會執行該作業。這在一個精細的級別上進行,因此即使在包含音訊、影片和合並作業的作業鏈中,合併作業也依賴於音訊和影片,但音訊和影片並不相互依賴,因此它們可以同時處理。

擁有作業

[編輯 | 編輯原始碼]

工作者還維護一個保留作業列表,這些作業是它們“擁有”的作業。如果一個作業被擁有,那麼只有擁有該作業的工作者才能執行它。工作者將在請求主作業佇列中的更多作業之前,執行所有它擁有的作業。此功能對於在無需等待已排隊的慢速作業的情況下執行快速作業很有用。例如,您可能排隊了幾個長時間的影片編碼,並且您想設定另一個需要 d2v 索引的編碼。在 0.2.6.1001 之前的行為中,您必須排隊索引作業並等待上一個作業完成。使用擁有作業,您只需排隊作業,然後右鍵單擊並選擇“在新臨時工作者中執行”。臨時工作者將擁有該作業,立即執行它,並在作業完成後關閉。這不會中斷正在執行的其他作業。

每個工作者都有一個本地佇列,其中列出了它擁有的作業。如果您想“放棄”一個作業,可以透過右鍵單擊工作者本地佇列中的該作業來“將作業返回到主作業佇列”。

工作者彙總

[編輯 | 編輯原始碼]

工作者彙總是一個小視窗,它提供了工作者的簡要摘要。您也可以透過右鍵單擊該視窗來訪問大多數工作者功能。

華夏公益教科書