Проблемы работы шаблонов в многопотоке

  • Автор темы Автор темы Dmitriy Ka
  • Дата начала Дата начала

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
949
Реакции
734
Баллы
93
Предыстория: раньше я работал на стандарте где всего 5 потоков, для личных целей мне вполне хватало. Сейчас начал работать с про и при работе в 100 потоков начинаются проблемы. Возможно, что-то я не правильно понимаю, но постараюсь описать как я это вижу.

Сервак:
Win 10 Pro
Проц: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
Оперативки: 128
ZP: 7.7.6.0
Количество потоков в одном процессе 1 (приоритет на скорость выполнения)

Есть шаблон по генерации профилей, ничего особенного простенький шаблон который генерирует профиль CEF и сохраняет в .zpprofile. Почему-то, если запустить его в 50 потоков, он не будет работать сразу, сначала ZP дождётся пока запустятся 50 инстансов и только потом начнет выполнение шаблонов. То есть работа происходит так: ставим 50 токов ZP ждет пока запустятся 50 инстансов, потом их выполнит и опять ждет пока запустятся следующие 50 инстансов чтобы их выполнить. Времени тратиться очень много. В 5 поток все работает очень быстро, но хочется чтобы так же быстро работало и в 50 и в 100 потоков.

Но возникает другая проблема:
Запустил генерацию профилей 20000штук в 5 потоков, все работает нормально. Но параллельно мне нужно запустить другой шаблон, который работает с профилями(из другой папки) в 100 потоков, и тут опять начинается проблема. Шаблон который генерирует профили в 5 потоков начинает ждать работу шаблона который работает с профилями в 100 потоков и генерация профилей становится очень медленной, я за 2 суток не смог на генерировать 20000 штук профилей.

Каков итог: для того чтобы на генерировать максимально быстро 20000 профилей, мне приходится останавливать основную работу и ждать пока сгенерируются профиля. И это очень расстраивает.

Была идея сделать генерацию профилей в цикле, чтобы не перезапускать шаблон постоянно, но и это не помогло, пока шаблон работает в те же 5 потоков, профиле нормально генерируются в цикле, но стоит запустить шаблон с основной работой в 100 потоков, генерация становится очень медленной.

У меня есть один вопрос, почему при запуск в многопотоке, потоки ждут друг друга?
 
Шаблон на стандартных кубиках написан или как в прошлых постах на C# со статикой ? :ap:
Шаблоны без статики, а ты так и не ответил на мой вопрос, почему мне нужно уйти от статики и инициализировать 100500 раз один и тот же instance и project?

Феникс, я тебя узнал:ah:
 
Последнее редактирование:
Вопрос еще актуален.
 
Вы запускаете больше потоков чем тянет ваш сервер.
Из личного опыта. Очень грубый подсчёт - количество потоков с инстансом, которые можно использовать без тормозов потоками друг друга = количество физических ядер процессора ×2. На практике 8 ядерный процессор, скорее всего сможет потянуть 18, может и 20 потоков, с использованием инстанса, без потери времени выполнения одного потока.
Дальше уже потоки начнут тормозить друг друга и время работы каждого потока будет увеличиваться.
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitriy Ka
Вы запускаете больше потоков чем тянет ваш сервер.
Из личного опыта. Очень грубый подсчёт - количество потоков с инстансом, которые можно использовать без тормозов потоками друг друга = количество физических ядер процессора ×2. На практике 8 ядерный процессор, скорее всего сможет потянуть 18, может и 20 потоков, с использованием инстанса, без потери времени выполнения одного потока.
Дальше уже потоки начнут тормозить друг друга и время работы каждого потока будет увеличиваться.
Данные проца
112581

112582

Но для генерации профилей, даже в 20 потоков, потоки ждут друг друга, это же не нормально.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)