Как масштабируется библиотека параллельных задач на терминальном сервере или в веб-приложении? - PullRequest
2 голосов
/ 02 мая 2010

Я понимаю, что TPL использует очереди для кражи работы для своих задач, когда я выполняю такие вещи, как Parallel.For и подобные конструкции.

Если я правильно понимаю, конструкция будет ускорять ряд задач, каждая из которых начнет обработку элементов. Если одна из задач завершит выполнение выделенных им предметов, она начнет кражу предметов из других задач, которые еще не выполнили свои. Это решает проблему, когда элементы 1-100 являются дешевыми для обработки, а элементы 101-200 являются дорогостоящими, и одна из двух задач будет простаивать, пока другая не будет завершена. (Я знаю, что это упрощенное объяснение.)

Однако как это будет масштабироваться на терминальном сервере или в веб-приложении (при условии, что мы используем TPL в коде, который будет выполняться в веб-приложении)? Можем ли мы рискнуть насытить процессоры задачами только потому, что N экземпляров нашего приложения работают рядом?

Есть ли какая-либо информация по этой теме, которую я должен прочитать? Я еще ничего не нашел, но это не значит, что его нет.

1 Ответ

1 голос
/ 07 мая 2010

Возможно, вы сможете использовать TPL для улучшения операций, связанных с вводом / выводом, перейдя на асинхронную модель.Вы также можете улучшить задержку запросов, более активно используя доступную неиспользуемую мощность процессора на веб-сервере в ситуациях низкой нагрузки.Вы должны подумать об этом довольно осторожно, поскольку при высоких нагрузках, когда процессоры уже используются на 100%, добавление параллелизма снизит пропускную способность на сервере.

Это обсуждается в блоге группы параллельных расширений:

Использование параллельных расширений для .NET 4 в приложениях ASP.NET

Я подозреваю, что тот же аргумент применим и к приложениям сервера терминалов.

...