Compilação Gradle desacelera meu computador

3

A capacidade de resposta é muito ruim em um Ubuntu 14.04 LTS recém-instalado.

Aqui estão as especificações do meu laptop:

Quadcore Intel i7-4600U CPU @ 2.10GHz
12GB Ram
1TB Samsung EVO SSD

E quando o gradle está sendo compilado, todo o meu sistema fica lento, os vídeos começam a gaguejar, a navegação é lenta, etc.

O mesmo ocorre quando uma atualização de página ocorre em outra janela no Chrome e, embora seja atualizada, o vídeo HTML5 em outra guia começa a gaguejar.

Como posso corrigir isso?

Aqui estão alguns registros:

$ vmstat -a 1 5 - link

$ iostat -x 1 5 - link

$ top -b - link

    
por nubela 20.05.2014 / 18:25

1 resposta

3

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

Desempenho gradual

Google

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.

Uso do Cpulimit

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

Howto

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.
    
por c0rp 21.05.2014 / 20:20