我有几个大的hugin脚本工作,我想及时处理。 每个脚本有时会使用所有机器的内核,有时甚至会使用单线程。
我想知道最快的方式来完成我所有的拼接工作。 最好让Linux内核把它整理出来? 举个例子,让所有的脚本一下子把CPU砸死 还是把工作分开来更好? – 像太阳网格引擎/毛伊岛(只有一个服务器)? 或者,也可以将所有脚本重写为一个脚本? 这最后一个选项不会很便携。
只要你的资源约束是CPU时间,你可以让内核调度程序完成它的工作,你会得到一个最佳的结果。
但是,如果您有其他限制,例如RAM使用率或磁盘IO,以某种方式分配作业可能实际上是有益的,但是您需要亲自观察系统,以找出实际约束条件以达到最佳效果战略。
只要单线程和multithreading处理的阶段发生在同一个进程/作业中,使用经典的作业调度程序就不会有太大的帮助。
你需要多快?
一种方法是继续添加作业,直到资源达到某个限制(如CPU利用率阈值)。 这使得进程调度开销和内存使用可以pipe理。 例如,GNU make的负载平均值将会暂停新的工作,直到负载平均值低于阈值。
值得了解的是,该过程的哪一部分是单线程的。 在可用的地方查看源代码。 在短期内,除了获得具有良好单线程性能的CPU之外,有时候可以做很多事情。
一些云式应用程序可以很容易地自动扩展到多个主机。 如果应用程序可以这样构build,一个主机可以按需要突发数百个。
在使用性能方法时,有很多工具可以使用。 我build议的一个参考:红帽企业Linux性能调优指南。