Я создал собственное приложение Job Manager.
Это запускает несколько копий моего рабочего приложения на выделенном сервере. Я запускаю около 3000 рабочих процессов (заданий) партиями по 50 на моем 30-ядерном компьютере. Каждая работа выполняет одинаковый объем работы. Считывает данные из кэша на диске SSD, записывает информацию на этапах на жестком диске и в базе данных Sql.
Сетевой трафик c низкий, использование диска низкое, активность SqlServer низкая, память остается постоянной на уровне около 60 % от моего 120G.
Каждый пакет заданий начинает занимать больше времени. Первоначально, первые несколько сотен рабочих мест хорошо используют ЦП, но затем загрузка ЦП начинает снижаться go (показать 0 много), и время работы начинает увеличиваться. Я не понимаю, почему это так, учитывая, что мой Диспетчер ресурсов не показывает ничего в максимальном объеме.
Что здесь может происходить?
Каждый рабочий процесс (задание) запускается совершенно независимо экземпляр моего exe. Так что я не думаю, что это может привести к утечке памяти.
Я не могу профилировать - так как профиль за один запуск экземпляра exe показывает, что он работает быстро!