LINUX.ORG.RU

История изменений

Исправление 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, а для всех критичных программ задать ограничение снизу.