Limitpriorität / Threads für Gradle / Android Studio-Builds?

1393
quezak

Wenn Android Studio mein Projekt erstellt, frisst es leicht alle meine 8 Kerne. Ich möchte in der Lage sein, fließend im Internet zu surfen, während meine App kompiliert wird. Gibt es eine Möglichkeit, die Java-Prozesse von Gradle so einzustellen, dass sie eine niedrige Priorität haben (nette Stufe> 10)?

Diese Lösung funktioniert perfekt für mein Gentoo-System (mit Portage auf Niceness 19 kann ich normalerweise meinen PC verwenden, während er kompiliert wird). Optimalerweise sollte nur Java von Gradle mit niedriger Priorität ausgeführt werden, sodass Android Studio selbst reaktionsfähig bleibt. Wenn dies nicht möglich ist, ist es vielleicht einfacher, die Java-VMs von Gradle auf 5-7 Kerne zu beschränken? Dies würde jedoch wahrscheinlich zu längeren Bauzeiten führen.


BEARBEITEN

Ich habe ein bisschen damit experimentiert. Ich habe ein Skript in einer Schleife ausgeführt, das für alle neuen Java-Prozesse jede Sekunde einen schönen Level 15 ("Priorität niedrig" für die Windows-Benutzer) festlegt . Leider reagiert das System immer noch nicht sehr gut. Ich sehe, dass meine durchschnittliche Last während des Kompilierens auf 20 steigt, wobei ich nur 4 (logische) Kerne habe. Dies bedeutet, dass Gradle zu viele Threads erzeugt. An anderer Stelle habe ich gelesen, dass auch diese Threads selten nachgeben, was die Ursache sein kann, warum das Senken der Priorität nicht hilft.

Die aktualisierte Frage lautet also: Kann die Anzahl der von Gradle verwendeten Threads begrenzt werden?

5

2 Antworten auf die Frage

3
quezak

Es scheint ein bekanntes Problem zu sein, es gibt eine laufende Debatte über diesen Upstream: https://code.google.com/p/android/issues/detail?id=66696

Sie sagen, der Build sollte einen gemeinsam genutzten Thread-Pool verwenden, der Parameter zum Einstellen der Größe ist -Pandroid.threadPoolSize=<count>und sollte in Android Studio 2.3 Beta 3 verfügbar sein.

Kannst du es zusammenfassen? bertieb vor 7 Jahren 0
@bertieb ok, bearbeitete die Antwort. Ich habe es noch nicht getestet, da ich noch in Studio 2.2 bin, aber ich schaue mir den verlinkten Thread an, um weitere Informationen zu erhalten. quezak vor 7 Jahren 1
0
Michal

Erstellen Sie einfach eine Verknüpfung mit folgendem Pfad:

cmd.exe / c "Android Studio" starten / LOW "C: \ Programme \ Android \ Android Studio \ bin \ studio64.exe"

Oder setzen Sie jedes Mal im Task-Manager Priorität, aber ich glaube, dass dieser Ansatz besser ist:)

Danke für den Vorschlag, ich habe ähnliche Dinge mit gutem Level auf Linux ausprobiert. Während die Gradle-Prozesse, die von Studio erzeugt werden, eine niedrigere Priorität haben, hat Studio den Prozess selbst - also kann das IDE-Fenster während des Kompilierens nicht reagieren. Nach dem Experimentieren scheint es, dass dies das Problem sowieso nicht löst, siehe Frage bearbeiten. quezak vor 8 Jahren 1