LINUX.ORG.RU

GNOME Shell − приоритет процесса

 , , ,


1

1

Есть такая знаменитая проблема, как лагающие анимации GNOME Shell под выскокой нагрузкой на процеcсор с видеокартами NVIDIA. На других видеоадаптерах не пробовал.

***

Оказалось, что ядро с патчами СK и планировщиком MuQSS немного помогает удерживать плавность анимации под нагрузками.

Как я обычно делаю:

  • 1. Запускаю Blender с рендером сцены на ЦПУ на все возможные потоки, к слову у меня их четыре.
  • 2. Зажимаю клавишу Super(Win) и периодически нажимая «А» смотрю на плавность вылета значков. Это самое узкое место в анимациях, но ещё лагает и режим «обзор», особенно когда много окон открыто. Можно просто клавишу Super понажимать.

Что вижу:

Вижу как начинает подлагивать анимация, ну то есть видно же, что пропуск кадров происходит. Многие не замечают, возможно неискушённые пользователи, но я вижу это хорошо, хотя не играю в игрульки и не мастурбирую на FPS.

И вот накатываю ядро СK, повторяю первое и второе условия и анимация под нагрузкой намного лучше, почти идеальная.

Ужесточаю условия. К рендеру сцены можно добавить ещё что-то из нагрузок, например я просто из терминала могу ещё стресс-тест запустить на 4 потока.

stress -c 4
Либо можно обойтись одной компиляцией ядра. И тут уже не помогает и MuQSS.

И вот к сути вопроса...

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

Ещё нагуглил такую штуку, как http://ck.wikia.com/wiki/SchedulingPolicies

Типа можно задавать процессам какие-то политики вроде SCHED_FIFO, SCHED_RR, SCHED_ISO Но мои скудные знания английского и вообще познания этих политик, не позволяют понять принцип их работы.

Вот к примеру я сделал на процесс gnome-shell так:

schedtool -I 437

Вроде как становится лучше как никогда.

Так вот кто мне объяснит как работают эти SchedulingPolicies, будут ли запускаемые процессы из gnome-shell иметь такой же приоритет при этом, как это происходит при обычном renice, ну и может есть какие-то способы другие, что бы повысить приоритет gnome-shell, не затрагивая другие?

Раз вы можете патчить ядро, пропатчте и schedtool, чтобы он выставляя политику, указывал флаг SCHED_RESET_ON_FORK, тогда планировщик у потомков будет дефолтный. Иначе планировщик будет наследоваться.

man по политикам планировщика, вроде, простой, может его и гугл транслейт осилит. Работают они просто, сначала процессор делится между процессами с одной политикой, пока эти процессы не освободят процессор (не перейдут в состояние сна), другие процессы не ставятся на выполнение.

Если запустить процесс жрущий CPU на вычисления (бесконечный цикл) с политикой SCHED_FIFO в количестве, равным числу процессоров (ядер), то всё остальное остановится, только кнопка SysRq или Reset.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.