LINUX.ORG.RU

ядро шедулит код на изолированные ядра

 , , , ,


0

3

Приветствую,

Имеется система на Intel Xeon Platinum 8160 CPU с ядром 4.19.71, присутствует 24 физических ядра и по 2 треда на ядро, т.е. в сумме — 48 логических ядер. Эксперимунтирую с виртуализацией (qemu и kvm) и хотел бы изолировать группу ядер от планировщика OS, т.е. чтобы эти ядра выполняли только код приложения на vcpu тредах из виртуальной машины. Добавил директиву isolcpus в grub.cfg:

isolcpus=1-23,25-47

Перезагрузился, однако вижу что ядерные треды выполняются на ядрах которые я пытаюсь изолировать :

# ps -A -L -o pid,nlwp,tid,c,psr,comm |sort -n -k 5 | grep 27
  148    1   148  0  27 kworker/27:0-mm_percpu_wq
  149    1   149  0  27 kworker/27:0H-events_highpri
  267    1   267  0  27 kworker/27:1-mm_percpu_wq
  799    1   799  0  27 kworker/27:1H-events_highpri
...
#

В выводе ps 5-я колонка это ID ядра, в данном случае 27, который согласно isolcpus= не должен пользоваться ядром.

Означает ли что ядерные треды это исключение из правил, и ядро все равно будет из выполнять на ядрах из директивы isolcpus или я упустил что-то очевидное?

Спасибо.


Ответ на: комментарий от post-factum

isolcpus не гарантирует, что на ядрах не будет некоторых ядерных тредов.

По опыту, даже если у тебя RT и 5G, то никаких проблем с этим не будет, если не накосячить с приоритетами.

Спасибо за комментарий. Какие есть еще механизмы (кроме isolcpus) для более надежной изоляции ядер? Требуется ли для этого RT линукс?

cruz7 ()