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

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
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 потоков, генерация становится очень медленной.

У меня есть один вопрос, почему при запуск в многопотоке, потоки ждут друг друга?
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
393
Баллы
63
Шаблон на стандартных кубиках написан или как в прошлых постах на C# со статикой ? :ap:
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Шаблон на стандартных кубиках написан или как в прошлых постах на C# со статикой ? :ap:
Шаблоны без статики, а ты так и не ответил на мой вопрос, почему мне нужно уйти от статики и инициализировать 100500 раз один и тот же instance и project?

Феникс, я тебя узнал:ah:
 
Последнее редактирование:

volody00

Client
Регистрация
06.09.2016
Сообщения
929
Благодарностей
1 019
Баллы
93

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Вопрос еще актуален.
 

Deisler

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

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Вы запускаете больше потоков чем тянет ваш сервер.
Из личного опыта. Очень грубый подсчёт - количество потоков с инстансом, которые можно использовать без тормозов потоками друг друга = количество физических ядер процессора ×2. На практике 8 ядерный процессор, скорее всего сможет потянуть 18, может и 20 потоков, с использованием инстанса, без потери времени выполнения одного потока.
Дальше уже потоки начнут тормозить друг друга и время работы каждого потока будет увеличиваться.
Данные проца
112581

112582

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

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