2017-02-20 3 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