Сборка Android 10 на слабом железе

Подскажите, кто сталкивался с такой проблемой.
Система: Archlinux
Окружение: KDE
Процессор: AMD Authlon II X4 631
Памяти: 8Gb
Использую: Swap на 20 гигов + ccache на 50Gb на отдельном HDD
Сборщик soong: 100% загрузка по всем ядрам.
ключ при сборке -j1 - не помогает
Зависает при сборке вся графика, ПК не отвечает.
Вопрос: Возможно ли как-то ограничить использование CPU для сборщика soong.
После компиляции soong, сборка идёт в нормальном режиме.
Panda911
Возможно ли как-то ограничить использование CPU
Начни с самого простого - cpulimit
Ошибки не исчезают с опытом - они просто умнеют
Panda911
Вопрос: Возможно ли как-то ограничить использование CPU для сборщика soong.
это не поможет, известная проблема линукс №12309 похоже будет жить вечно

на некотором железе, при работе диска\свопинге система сначала жутко фризит потом встаёт колом, io улетает в космос
не спасают никакие лимиты, ionice к примеру

решение только 2 или добавление достаточного количества озу или смена материнки на ту где такого жёсткого эффекта не заметно
если озу хватает, то сборку делать в tmpfs, по умолчанию это /tmp

в южный мост вроде всё упирается, обычно проявляется на недорогих мамках
Из сложных способов (на много ... много сложнее cpulimit)
- cgroup - использовал несколько раз, но только для ограничения памяти
- ananicy-cpp (аналог ananicy), есть в AUR - сам никогда не использовал, но как пишут: существено повышает отклик системы и вроде бы имеет в составе cgroup, то есть можно задавать ограничения.

Раньше не которым помогало отключение многопоточности (SMT) ... но сам никогда не пробоавал.
Ошибки не исчезают с опытом - они просто умнеют
В части cgroup - написано довольно заумно и способов использования несколько, можно ограничивать даже конкретный процесс …. например, в этом топике описал ограничение процесса (palemoon) по использованию memory.
Но вообще можно довольно просто, используя cgroup, ограничить user в части использоания им cpu.
Привожу сначала результаты тестирования без ограничения.
Смотрим что имем в системе по дефолту - привожу вывод systemd-cgto
1. Без нагрузки
Control Group                                                    Tasks   %CPU   Memory
/                                                                            536       6.0         1.7G
user.slice                                                             418       5.5         2.3G
user.slice/user-1000.slice                                  418       5.7         2.3G
user.slice/user-1000.slice/session-1.scope     358      4.7          2.2G
2. С нагрузкой (для нагрузки cpu использовал stress)
Control Group                                                    Tasks   %CPU   Memory
/                                                                           548      400.7       1.7G
user.slice                                                            428      367.7       2.3G
user.slice/user-1000.slice                                 428     367.7        2.3G
user.slice/user-1000.slice/session-1.scope    368     367.3         2.2G
И как видим нагрузка составляет 400% (100% на ядро)

Пробуем ограничить, но не отдельный процесс, а все процессы user (так намного проще) до 30%
Создаем файл /etc/systemd/system/user.slice и пропысываем в нем всего две строчки
[Slice]
CPUQuota=30%
Запускаем команду: sudo systemctl daemon-reload
Нагружаем (stress) … и смотрим вывод
Control Group                                                    Tasks   %CPU   Memory
/                                                                           547        34.1       1.7G
user.slice                                                            427        31.7       2.3G
user.slice/user-1000.slice                                 427        31.6       2.3G
user.slice/user-1000.slice/session-1.scope    367        31.4       2.2G
Все получилось.
В конце не забываем выполнить
sudo rm /etc/systemd/system/user.slice
sudo systemctl daemon-reload

EDIT - забыл отметить, что температура cpu при нагрузке (stress) составляла
- без использования ограничения cpu - 70 - 72 град.
- с использованием ограничения cpu - 57 - 59 град.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.