我正在创建一个服务,该服务可能会ffmpeg
同时调用数百甚至数千个命令。Ubuntu 16.04 会自动将这些作业排队吗?
是否有某种应用程序比其本机方法做得更好?
答案1
任何 Linux 发行版都可以轻松管理多个(甚至数百个)进程实例。
但是,为了获得最佳性能,您应该仅使用您的机器可以管理的硬件线程数的进程。
添加更多进程(例如:8 线程机器上的 16 个进程实例)将降低由于严重的缓存破坏和资源过度使用而导致的性能。
答案2
不,如果你启动了数千个进程,内核就会尽最大努力运行这数千个进程。但显然,这不会有什么好结果。
要像这样连续运行作业,请使用 gearman 或 RabbitMQ 等工具组建适当的作业队列系统。这样,作业就会在消息队列中排队,您的工作进程会使用这些可用消息,并且每次只运行少量进程。