История изменений
Исправление intelfx, (текущая версия) :
Ну смотри.
Видно два подхода.
Подход первый.
- выбрать все критические программы (init, системные службы, графический сервер, композитор/WM/DE);
- оценить сверху их потребление памяти (допустим, X байт);
- пихнуть их в цгруппу A, задать там ограничение на X байт;
- все остальные программы пихнуть в цгруппу B и задать на ней ограничение
Total-(X+Padding)
.
Придётся ещё разобраться с page cache, я не помню, как себя ведут цгруппы применительно к нему — страницы в кэше приписываются цгруппе процесса, который вызвал их загрузку, или лежат отдельно. Если первое, то проще, если второе, то сложнее.
Подход второй. В cgroups v2 появилось «ограничение снизу» (MemoryLow=
в systemd). Если оно делает то, что я думаю (исключает цгруппу из всяческого тротлинга, пока потребление памяти ниже ограничения снизу), то можно воспользоваться им: задать глобальное ограничение сверху в Total-Padding
, а для всех критичных программ задать ограничение снизу.
Исходная версия intelfx, :
Ну смотри.
Видно два подхода.
Подход первый.
- выбрать все критические программы (init, системные службы, графический сервер, композитор/WM/DE);
- оценить сверху их потребление памяти (допустим, X байт);
- пихнуть их в цгруппу A, задать там ограничение на X байт;
- все остальные программы пихнуть в цгруппу B и задать на ней ограничение Total-(X+padding).
Придётся ещё разобраться с page cache, я не помню, как себя ведут цгруппы применительно к нему — страницы в кэше приписываются цгруппе процесса, который вызвал их загрузку, или лежат отдельно. Если первое, то проще, если второе, то сложнее.
Подход второй. В cgroups v2 появилось «ограничение снизу» (MemoryLow=
в systemd). Если оно делает то, что я думаю (исключает цгруппу из всяческого тротлинга, пока потребление памяти ниже ограничения снизу), то можно воспользоваться им: задать глобальное ограничение сверху в Total-padding, а для всех критичных программ задать ограничение снизу.