> Linux will often still schedule kernel threads to run on those cores so they are not totally isolated.
Have a look at cpuset[0]. You can forcibly move kernel threads into a given set (even pinned threads), and then force that set onto whatever cores you want.
In the past I tried migrating kernel threads, the migration did work but system became unstable, so I gave up on that.