Назад | Перейти на главную страницу

вопрос о базовых числах набора задач

У меня четырехъядерный процессор с включенной гиперпоточностью. Итак, у меня 8 логических ядер. Я хочу ограничить свое приложение использованием только 4 ядер, и я хочу, чтобы эти 4 ядра были разными физическими ядрами. Какие параметры набора задач (основные числа) мне следует использовать? :

Спасибо.

Вы можете увидеть, какие ядра на каких процессорах, посмотрев на /proc/cpuinfo. Например, на машине с двухъядерным процессором вы увидите:

processor   : 0
(snip)
core id     : 0
cpu cores   : 2

для первого ядра процессора и:

processor   : 1
(snip)
core id : 1
cpu cores   : 2

На втором.

Итак, в общем, я думаю, вам бы хотелось:

taskset -c 0,1,2,3

или:

taskset -c 4,5,6,7

Вы можете использовать как:

taskset -c -p 0-3 pid

Вы можете взглянуть на Набор ЦП (набор) чтобы создать группу защиты процессора для вашего приложения. Таким образом вы можете быть уверены, что настоящие ядра используются для важной работы. Обычно я отключаю гиперпоточность (в системах Nehalem) для своих приложений реального времени и с малой задержкой.

Вот руководство по созданию групп процессоров для конкретных приложений / процессов с использованием cset, которое немного более организовано, чем набор задач. https://rt.wiki.kernel.org/index.php/Cpuset_management_utility/tutorial

Что касается определения количества ядер и назначений местоположений, обратите внимание на: http://dag.wieers.com/blog/is-hyper-threading-enabled-on-a-linux-system

Быстрый запуск утилиты, подключенной к четырехъядерному процессору Nehalem с включенной гиперпоточностью, показывает:

[root@XXX ~/hwloc-1.0.3]# ./utils/lstopo 
Machine (7980MB) + Socket #0 + L3 #0 (8192KB)
  L2 #0 (256KB) + L1 #0 (32KB) + Core #0
    PU #0 (phys=0)
    PU #1 (phys=4)
  L2 #1 (256KB) + L1 #1 (32KB) + Core #1
    PU #2 (phys=1)
    PU #3 (phys=5)
  L2 #2 (256KB) + L1 #2 (32KB) + Core #2
    PU #4 (phys=2)
    PU #5 (phys=6)
  L2 #3 (256KB) + L1 #3 (32KB) + Core #3
    PU #6 (phys=3)
    PU #7 (phys=7)