2017-02-20 71 views
2

我使用我的Maven项目的并行构建。降低Maven构建线程/进程的优先级

通常我运行mvn install -T 4(我的PC上有4个内核)。

之后,我必须等待5-10分钟才能完成项目。我无法在Windows工作站上执行任何操作:鼠标/键盘无法响应。 CPU负载= 100%。

有没有办法降低maven生成的线程/进程(javac)的优先级?

据我了解,如果我设置优先级低于正常 - 操作系统将安排更少的时间为maven构建和更多的其他程序。

+2

如果你只有4个内核,那么你不应该使用'-T 4'来更好地使用'-T 2',这样其他内核就可以免费使用其他东西了。 – khmarbaise

回答

1

建议使用少于4个内核的注释使您有空闲内核来做其他事情,这是一种误解。在正常情况下,你的内核大部分时间只是在等待,所以把它们中的一部分留在那里无所事事是毫无意义的,而maven有工作要做。关键是,正如您已经猜到的那样,让maven进程利用您的机器可以提供的尽可能多的CPU能力,并降低maven进程的优先级,以便在Maven运行时想要与计算机进行交互,您的交互优先于Maven,所以它们可以快速完成,马上就可以使用CPU的全部容量自由地继续进行自己的事情。

所以,在windows下,在命令提示符下,start /belownormal mvn install -T 4就可以做到。更好的是,如果你的CPU足够现代化,(如果你不想担心你有多少核心的问题)(你可能不需要担心, ),然后使用start /belownormal mvn install -T1C来指示maven找出你有多少核心,并为每个核心产生一个线程。这是可取的,因为它允许超线程化:你的CPU可能只有4个内核,但是这些内核可能具有超线程,每个内核有2个线程,所以maven会产生8个线程。

类型help start有关Windows的内置“启动”命令的更多选项,可让您控制通过命令行启动的应用程序的优先级。例如,您可以指定/low而不是/belownormal;它可能会产生更好的响应能力,并且很可能不会使mvn过程明显放缓。

保留核心的唯一情况是,如果你想与maven并行运行其他CPU密集型任务,(你可能不需要),你不相信Windows的调度程序在编排这方面做得很好。 (你应该)

+1

今天终于检查了。奇迹般有效! – turbanoff