che*_*vim 3 linux multi-threading queue multiple-instances
我有一台服务器,我想专门用于通过 LibreOffice将doc
文件转换为该服务器pdf
。服务器有 6 个内核,LibreOffice 是单线程的。这意味着生成单个 pdf 使用了我总 CPU 功率的 16.666%。转换文件可以从控制台完成并且是一个阻塞任务,即它等待直到完成将控制返回到控制台。
我可以启动 6 个无头办公实例(在 6 个不同的端口上),并通过一些自定义代码确保每个工作请求都发送到不同的实例。我必须检查所有 6 个实例何时都忙于工作,以便将工作保留在待处理的队列缓冲区中。我还必须管理超时/错误以重新启动特定实例并尝试重做导致问题的特定工作,可能再尝试 1-2 次,直到我放弃。
上述场景不会为单个文档使用 100% 的 cpu,但它允许一次转换多达 6 个文档,而不是一个接一个地处理它们,功率仅为 16.6%。
我的问题是:是否存在管理此类场景的产品/工具?可能是可以协调此类任务的通用东西(当然不知道有关 LibreOffice 的任何细节)。
您可能想查看GNU parallel:
GNU parallel 是一种 shell 工具,用于使用一台或多台计算机并行执行作业。
文档中有很多示例,包括GNU Parallel 作为 dir 处理器,您可能应该查看一下。
当然,您需要为此编写相当多的脚本,最后您甚至可能得出结论,在脚本中进行整个调度也更容易。