跳转到内容

MeGUI/演示/并行作业执行

来自维基教科书,开放的书籍,开放的世界

并行作业执行是MeGUI 0.2.6.1001版本中引入的一项功能,允许同时运行多个作业。此页面解释了其引入的原因以及如何使用它。

视频编码是一项CPU密集型任务,欢迎硬件的改进,以提高编码速度,并允许编码器进行更深入的搜索以实现更好的压缩率。双核CPU理论上比单核CPU快近2倍,随着内核数量的增加,性能提升(理论上)会持续增加。为了利用这种额外的处理能力,视频编码器已经并行化以支持多个内核。这意味着编码前端可以实现多核CPU的大部分性能提升,而无需进行任何操作。但是,这主要有两个问题。

  1. 编码器内部的同步需求意味着计算机的处理能力并非全部使用。虽然与单核应用程序相比仍能观察到显著的性能提升,但并没有达到您希望的2倍/3倍/4倍/等倍的速度提升。
  2. 并非所有编码器都支持多线程。尤其是,许多音频编码器仍然是单线程的。

有一种替代方法。由于视频编码通常同时进行多个作业,因此同时运行这些作业可以解决这两个问题,因为并行来自同时运行,而不是来自编码器本身。

支持并行作业执行无需按顺序执行作业,这使得在使用MeGUI时更加自由:您无需等待一个作业完成才能运行下一个作业。

工作原理

[编辑 | 编辑源代码]

作业执行的基本单位是作业工作者(或简称工作者)。单个工作者一次只能处理一个作业。然而,在MeGUI中,可以有多个作业工作者,每个工作者都处理作业,从而实现并行。

正常作业执行

[编辑 | 编辑源代码]

作业处理的标准方法是,每个作业工作者从主作业队列中请求一个作业,处理它,然后请求另一个作业。这将持续到所有作业完成或无法处理(例如,它们被设置为推迟跳过中止,或者它们出现错误)。为了防止相互依赖的作业按错误的顺序执行,每个作业都维护一个它所依赖的作业列表,并且只有在所有它所依赖的作业成功完成(这意味着它们的状态为完成)之后,才会运行该作业。这在一个精细的级别上进行,因此即使在包含音频、视频和合并作业的作业链中,合并作业也依赖于音频和视频,但音频和视频并不相互依赖,因此它们可以同时处理。

拥有作业

[编辑 | 编辑源代码]

工作者还维护一个保留作业列表,这些作业是它们“拥有”的作业。如果一个作业被拥有,那么只有拥有该作业的工作者才能执行它。工作者将在请求主作业队列中的更多作业之前,执行所有它拥有的作业。此功能对于在无需等待已排队的慢速作业的情况下运行快速作业很有用。例如,您可能排队了几个长时间的视频编码,并且您想设置另一个需要 d2v 索引的编码。在 0.2.6.1001 之前的行为中,您必须排队索引作业并等待上一个作业完成。使用拥有作业,您只需排队作业,然后右键单击并选择“在新临时工作者中运行”。临时工作者将拥有该作业,立即运行它,并在作业完成后关闭。这不会中断正在运行的其他作业。

每个工作者都有一个本地队列,其中列出了它拥有的作业。如果您想“放弃”一个作业,可以通过右键单击工作者本地队列中的该作业来“将作业返回到主作业队列”。

工作者汇总

[编辑 | 编辑源代码]

工作者汇总是一个小窗口,它提供了工作者的简要摘要。您也可以通过右键单击该窗口来访问大多数工作者功能。

华夏公益教科书