Компиляция Gradle замедляет мой компьютер

Скорость отклика действительно плоха на недавно установленной Ubuntu 14.04 LTS.

Вот спецификации моего ноутбука:

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

И когда gradle компилирует, моя вся система замедляется к проверке, видео начинают заикаться, задержки прокрутки браузера... и т.д.

То же идет, когда обновление страницы происходит в другом окне в Chrome, и в то время как это обновляется, видео HTML5 на другой вкладке начинает заикаться.

Как я могу зафиксировать это?

Вот некоторые журналы:

$ vmstat-a 1 5 - http://paste.ubuntu.com/7493966/

$ iostat-x 1 5 - http://paste.ubuntu.com/7493970/

Вершина $-b - http://paste.ubuntu.com/7493974/

4
задан 21 May 2014 в 22:32

1 ответ

Я не работаю с gradle. Но насколько я понимаю типичная проблема.

Вот ссылки:

Очень полезная тема

Проблема загрузки ЦП

Работа Gradle

Google

То, что можно сделать, изменить диспетчеризацию процессов. Для процесса, который выполняет IDE или gradle.

мило

хороший программа, найденная на Unix и подобных Unix операционных системах, таких как Linux. Это непосредственно отображается на вызов ядра того же имени. хороший используется для вызова служебного или сценария оболочки с особым приоритетом, таким образом давая более или менее процессорное время процесса, чем другие процессы. Правильность −20 является самым высоким приоритетом и 19, или 20 самый низкий приоритет. Правильность по умолчанию для процессов наследована от своего родительского процесса, обычно 0.

Для изменения правильности, можно использовать renice команда

sudo renice <PID> <niceness> 

Считайте это для получения дополнительной информации

В течение времени нарастания можно установить правильность для 15-20. После изменения сборки это к значению по умолчанию обычно это 0.

cpulimit

Установка 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.

Для ограничения использования ЦП процесса, названного Firefox к 30%, войдите:

# cpulimit -e firefox -l 30

Для ограничения использования ЦП процесса к 30% при помощи его PID войдите:

# cpulimit -p 1313 -l 30

cpulimit должен работать, по крайней мере, с тем же пользователем, выполняющим управляемый процесс. Но намного лучше при выполнении cpulimit как корня чтобы иметь более высокий приоритет и более точное управление.

Если Ваша машина имеет один процессор, можно ограничить процент от 0% до 100%, что означает, что при установке, например, 50% процесс не может использовать больше чем 500 мс процессорного времени в течение каждой секунды. Но если Ваша машина имеет четыре процессора, процент может варьироваться от 0% до 400%, таким образом устанавливая предел к 200%-м средствам использовать не больше, чем половину доступного питания. В любом случае процент является тем же из того, что Вы видите при выполнении вершины.

Использование Cpulimit

Как ограничить использование ЦП

chrt

Также можно изменить планировщик процесса или 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.

Большинство, если процесс в Ubuntu является SCHED_OTHER

Найдите приоритетные значения для планирования политики

$ 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

Набор SCHED_IDLE для обработки

$ chrt -i -p 0 PID

или можно изменить приоритет SCHED_OTHER

$ chrt -o -p 1 PID

Практическое руководство

Иначе

Также можно попытаться сократить количество Потока для gradle. Можно читать об этом здесь. Поскольку я вижу, что это имеет это опции:

./gradlew -PtaskThreads=2

Также можно попробовать, уменьшают использование памяти:

GRADLE_OPTS=-Mmx512m

Кавычка от Очень полезной темы

--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.
4
ответ дан 17 November 2019 в 14:45

Другие вопросы по тегам:

Похожие вопросы: