Как ограничить ядро процессора только 2 приложениями с помощью планировщика Linux?

#linux #linux-kernel #scheduler #scheduling

#linux #linux-ядро #планировщик #планирование

Вопрос:

Я хотел бы изучить взаимодействие между двумя приложениями на ядре процессора, одно из которых является постоянным приложением (резидент NVM), а другое — обычным (резидент DRAM). Для этого я хочу запланировать только эти 2 приложения на ядре и ничего больше. Я смотрю на Linux scheduler для достижения этой цели. Может кто-нибудь, пожалуйста, помочь мне с направлением для достижения этой цели? Могу ли я достичь этого с помощью sched или мне нужно изменить код планировщика ядра, чтобы планировщик не планировал приложения к интересующему меня ядру.

Ответ №1:

Вы можете использовать параметр isolcpus командной строки ядра:

Этот параметр можно использовать для указания одного или нескольких процессоров для изоляции от общих алгоритмов балансировки и планирования SMP. Вы можете переместить процесс на «изолированный» процессор или с него с помощью системных вызовов CPU affinity или cpuset.

Ответ №2:

isolcpus — это решение, но документация ядра Linux объявляет его устаревшим:

isolcpus= [KNL, SMP,ISOL] Изолировать данный набор процессоров от помех.
[Устарело — вместо этого используйте процессоры]

Предпочтительнее подсистема процессорных групп. Такой инструмент, как partrt, основан на этом принципе, чтобы разделить ядра процессора на два подмножества: nrt, где выполняются все процессы, и rt, в которые вы можете перемещать свои приложения. Следовательно, приложения изолированы на некоторых ядрах процессора.

Комментарии:

1. Спасибо за вашу помощь, а также спасибо за исправление опечаток 🙂 @Rachid