Когда-то у меня был тред с вопросом, как сделать виртуальную машину реального времени.
Так вот, это можно решить, как и предполагалось, изоляцией CPU, на которых крутятся виртуальные процессоры, от других процессов.
Тогда никто так и не ответил, но в ядре есть параметр isolcpus
, который это и делает. (про это сейчас написано в статье про VFIO arch wiki)
Проблема в том, что это параметр ядра, и чтобы его изменить, надо перезагружаться.
Вопросы теперь следующие.
Можно ли как-то регулировать этот параметр в рантайме? (подозреваю, что таки нет)
Чем это отличается от taskset (если пройти по всем PID и указать не использовать нужные ядра)?
Есть информация, что этот вариант хуже, чем isolcpus, но чем именно (и насколько это актуально)?
(про isolcpus) This option is the preferred way to isolate CPUs. The alternative, manually setting the CPU mask of all tasks in the system, can cause problems and suboptimal load balancer performance
Как работает cpuset в cgroups? Например, если глобально задаю в rc.conf: rc_cgroup_cpuset="cpuset.cpus 0-3 cpuset.mems 0"
то все процессы по умолчанию тоже используют только эти ядра.
Я так понимаю, CPUAffinity это то же самое (цгруппы) в сустемд? В ред хат есть такое
Currently, systemd CPUAffinity does not provide sufficient isolation
И ссылка, которая требует авторизации - https://bugzilla.redhat.com/show_bug.cgi?id=1497182
О чём там написано?