настройка сродства для нескольких ядер в системе с двумя процессорами

1085
Sarmes

Мы используем некоторые системы с процессором 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.

Есть ли проблема с использованием неравного количества ядер для спецификации сродства? или я что-то делаю не так?

Есть ли люди, у которых есть опыт использования спецификации сродства, которым удалось добиться некоторого прироста производительности? Какие стратегии вы использовали?

0
24 логических ядра отсутствуют. я запускаю 4 симуляции с 5 потоками в каждом, оставляя 24- (4x5) = 4 потока для накладных расходов. (что с -1?) Sarmes 9 лет назад 0
Я полагал, что вопрос не был ясен. Конечно, отрицательные отзывы являются анонимными по причине. Поэтому я не ценю, что вы предполагаете, что это был я. Ramhound 9 лет назад 0
По теме: [Как сродство процессоров Windows работает с многопоточными процессорами?] (Http://superuser.com/questions/347982/how-does-windows-processor-affinity-work-with-hyperthreaded-cpus) Ƭᴇcʜιᴇ007 9 лет назад 0
@ Ƭᴇcʜιᴇ007, да, это связано, однако этот пост только охватывает основы по спецификации сходства. Я надеялся на некоторые ответы / комментарии пользователей, которые имеют опыт настройки соответствия, о многопоточных проблемах в конфигурациях с несколькими процессорами. А также мой вопрос, почему 5 потоков на 5 ядрах отключены, 5 потоков на 6 ядрах отключены. Sarmes 9 лет назад 0
Я упомянул это как относящееся к тем, кто ищет связанную информацию (для похожих проблем или возможных ответов), не предполагая, что это было обманом. Продолжать. ;) Ƭᴇcʜιᴇ007 9 лет назад 0
У меня нет объяснения ваших конкретных результатов, но я скажу, что, как правило, лучше оставить сходство в покое. Windows автоматически назначит потоки «идеальным процессорам» и направит их на те, которые оптимизируют использование кэша. Если вы слишком «креативны» со сродством, вы часто попадаете в ситуации, когда потоки, которые могут выполняться, не могут какое-то время работать, потому что вы заблокировали их из единственных процессоров, доступных в данный момент. Как правило, вычисление пропускной способности лучше выполнять где-то, чем нигде. Jamie Hanrahan 7 лет назад 1

0 ответов на вопрос

Похожие вопросы