У меня есть приложение, которое использует многопоточность, поскольку его основная операция разделена на один и тот же блок кода, выполняемый на независимых фрагментах структуры данных.
рассматривают его как дерево, где каждый узел выполняет операцию независимо от других. поэтому я создаю поток для каждой операции узла.
Я проверил производительность этого кода на 2 машинах, и время выполнения без графов потоков показано ..
Мой вопрос ... с тем же кодом. почему такая разница может произойти? (почему машина насыщается быстрее, чем другая)
также, выполнение того же кода для 48 машин дает худшие результаты?
Характеристики машины RED line :
ЦП: 16
Он-лайн список процессоров: 0-15
Резьба (ы) на ядро: 1
Сердечник (и) на сокет: 4
Разъем (ы): 4
NUMA узел (ы): 2
Технические характеристики машины Blue Line :
ЦП: 8
Он-лайн список процессоров: 0-7
Резьба (ы) на ядро: 1
Сердечник (и) на сокет: 4
Разъем (ы): 2
NUMA узел (ы): 1
одинаковая скорость ядра для обоих значений кэша .
Подтверждено из ответа ::
попробовал
numactl --cpunodebind = 0 --membind = 0 {exe}
для запуска на одном узле numa и результаты согласованы .. это была проблема numa