Во-первых: получите макет вашего процессора из / proc / cpuinfo, который будет выглядеть примерно так (это на 2-сокетном, 6-ядерном, урезанный список):
> cat /proc/cpuinfo |grep -P 'processor|physical id|core id' processor : 0 physical id : 1 core id : 0 processor : 1 physical id : 0 core id : 0 processor : 2 physical id : 1 core id : 1 processor : 3 physical id : 0 core id : 1
физический идентификатор будет вашим сокетом, обратите внимание, в моем случае переключение основного идентификатора между сокетами.
используйте 'schedtool', чтобы установить сродство 1 группы ко всем физическим идентификаторам. Так что в моем случае, так как четы и шансы находятся на отдельных физических процессорах (сокетах), я бы использовал:
schedtool -a 0,2,4,6,8,10 -e run_group1 & schedtool -a 1,3,5,7,9,11 -e run_group2 &
где run_group1 запускает все ваши потоки на одном ядре, а run_group2 запускает остальные. (посмотрите на 'man schedtool' (в разделе 8, чтобы узнать больше вариантов. Я поместил их оба в фоновый режим, чтобы обе группы работали одновременно).
Возможно, вам нужно быть пользователем root, чтобы установить сходство - не уверен.
Это решает ваш вопрос или я что-то не так понял?