Eu não trabalho com gradle. Mas, pelo que entendi, é um problema comum.
Aqui estão os links:
Tópico muito útil
Problema de utilização da CPU
O que você pode fazer é alterar o agendamento do processo. Para processos que executam IDE ou gradle.
bom
nice é um programa encontrado em sistemas operacionais Unix e Unix, como como o Linux. Ele mapeia diretamente para uma chamada do kernel com o mesmo nome. bom é usado para invocar um utilitário ou script de shell com uma prioridade específica, dando assim ao processo mais ou menos tempo de CPU do que outros processos. UMA niceness de -20 é a prioridade mais alta e 19 ou 20 é a mais baixa prioridade. A nicencia padrão dos processos é herdada de seus processo pai, geralmente 0.
Para alterar niceness , você pode usar o comando renice
sudo renice <PID> <niceness>
Leia this para mais informações
Para o tempo de construção, você pode definir a preferência por 15 a 20. Depois da compilação, mude para o valor padrão, geralmente é 0.
cpulimit
Instale cpulimit
. sudo apt-get install cpulimit
-p : Process PID.
-e : Process name.
-l : percentage of CPU allowed from 0 to 100.
-P: absolute path name of the executable program file.
Para limitar o uso da CPU do processo chamado firefox para 30%, insira:
# cpulimit -e firefox -l 30
Para limitar o uso de CPU do processo a 30% usando seu PID, insira:
# cpulimit -p 1313 -l 30
o cpulimit deve ser executado pelo menos com o mesmo usuário executando o controle processo. Mas é muito melhor se você executar o cpulimit como root, para ter uma prioridade mais alta e um controle mais preciso.
Se a sua máquina tiver um processador, você poderá limitar a porcentagem de 0% para 100%, o que significa que se você definir, por exemplo, 50%, seu processo não pode usar mais de 500 ms de tempo de CPU por segundo. Mas se o seu máquina tem quatro processadores, a porcentagem pode variar de 0% a 400%, definir o limite para 200% significa usar não mais do que metade do potência disponível. Em qualquer caso, a porcentagem é a mesma do que você veja quando você topar.
Como limitar o uso da CPU
chrt
Você também pode alterar o agendador de processos ou o PID.
SCHED_FIFO
Scheduling policy designed for special time-critical applications. It uses the First In-First Out scheduling algorithm.
SCHED_BATCH
Scheduling policy designed for CPU-intensive tasks.
SCHED_IDLE
Scheduling policy intended for very low prioritized tasks.
SCHED_OTHER
Default Linux time-sharing scheduling policy used by the majority of processes.
SCHED_RR
Similar to SCHED_FIFO, but uses the Round Robin scheduling algorithm.
A maioria dos processos no Ubuntu são SCHED_OTHER
Encontre valores de prioridade para a política de agendamento
$ chrt -m
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
Defina SCHED_IDLE para processar
$ chrt -i -p 0 PID
ou você pode alterar a prioridade SCHED_OTHER
$ chrt -o -p 1 PID
Outra maneira
Além disso, você pode tentar reduzir o número de Thread para gradle. Você pode ler sobre aqui . Como eu vejo, tem essas opções:
./gradlew -PtaskThreads=2
Além disso, você pode tentar reduzir o uso de memória:
GRADLE_OPTS=-Mmx512m
Citação de tópico muito útil
--parallel-threads only applies to project parallelization.
For android tasks that are running in parallel, we always create as many threads as possible. For slower machine (or with low ram) this is not great. We should allow control on that.
Possible though:
./gradlew assemble -PandroidThread=3
Studio would have to allow configuring and sending this (it should also let you configure --parallel-threads if it doesn't already).
Long term gradle will have a thread pool shared across all level of parallelization (multi-projects. inside a project, inside a task) so this will become obsolete but it would be good to do now.