Linux Kernel supports CPU isolation for scheduling.
edit /etc/default/grub
format : isolcpus=<cpu list for isolation>
GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=0,1"
execute grub update
$ update-grub
In the kernel parameter, we can see
linux /vmlinuz-3.13.6+ root=/dev/mapper/gaus02--m--vg-root ro console=ttyS0,115200 earlyprint=serial,ttyS0,115200 pci=
assign-busses iommu=pt intel_iommu=on noplymouth text nosplash isolcpus=0,1
After rebooting, we can see process is not scheduled in isolated CPUs.
I run 7 process which loop forever, but CPU0 and CPU1 does not receive load.
One thing to remember is that it is scheduling for process.
The CPU0 and CPU1 can receive interrupts from hardware.