Мы используем некоторые системы с процессором 2cpu с 6 ядрами /12 потоков в каждой, то есть всего 24 потока, для довольно большого количества многопоточных симуляций. Поскольку проблема не масштабируется идеально, я обычно запускаю 4 задачи в parralel, по 5 потоков в каждой. чтобы осталось 4 ядра для запуска 4 потоков, которые запускают симуляции и пре- и постобработку. Я заметил некоторые странные различия в производительности для идентичных симуляций.
Моя идея состояла в том, что, используя сходство, я мог бы, возможно, регулировать производительность немного больше, руководствуясь тем, чтобы процесс не разделялся на 2 процессора, чтобы проблема не распространялась на разные части кеша и памяти, а оставалась фиксированной для одного процессор, или набор ядер на процессоре.
Я знаю, как установить сходство в диспетчере задач, когда процесс запущен, но мне нравится устанавливать его в командном файле.
например:
начало / сходство HEXNUM myprog3.exe
где HEXNUM, например: 1F000 (шестнадцатеричное представление 011111000000000000
если цель состояла в том, чтобы запустить его на ядре:0,1,2,3,4 от процессора2
или HEXNUM 1F шестнадцатеричное представление 011111, если цель - запустить его на ядре 0,1,2,3,4 процессора1.
Но кое-как это не работает, как я ожидаю: когда я запускаю симуляцию на 5 потоках без спецификации сродства, процесс занимает 20-21% процессорного времени. когда я запускаю 5 ступеней, со сродством к 6 ядрам это тоже работает, но когда я запускаю 5 ступеней со сродством к 5 ядрам. это занимает всего 13%, и если я смотрю в диспетчере задач (Windows 7 64 Pro), похоже, что он использует только ядро 1,3,5.
Есть ли проблема с использованием неравного количества ядер для спецификации сродства? или я что-то делаю не так?
Есть ли люди, у которых есть опыт использования спецификации сродства, которым удалось добиться некоторого прироста производительности? Какие стратегии вы использовали?