Выбор ввода формы jQuery по идентификатору

Общие сведения

У меня есть приложение распределенной обработки, которое выполняет анализ данных. Он предназначен для параллельной обработки множества наборов данных, обновляемых в реальном времени. Как часть дизайна, анализ был разбит на аналитические узлы. Каждый узел берет исходные данные и обрабатывает их для создания других данных, которые затем, в свою очередь, могут использоваться другими узлами. Для выполнения текущего полного набора анализа одного набора данных требуется около 200 узлов.

В текущем проекте каждый узел работает со своим собственным потоком. Сейчас большую часть времени эти потоки спят. Каждый раз, когда обновляются данные, они просыпаются, как водопад, а затем снова засыпают. В настоящее время приложение работает с 40 наборами данных, каждый из которых требует 200 узлов, с использованием 8000 потоков. Когда данные не поступают, сервер не нагружается. Когда данные поступают в самое загруженное время, сервер загружает примерно 25% ЦП. Все это находится в рамках проектных и производственных параметров проекта.

Теперь для следующего шага мы масштабируем 40 наборов данных до 200. Для каждого набора требуется 200 узлов, что означает в общей сложности 40000 узлов, что составляет 40000 потоков. . Это превышает максимальный PID нашего сервера, поэтому я попросил наших администраторов сервера увеличить это ограничение. Они сделали это, и приложение работает, но они дали мне отпор о количестве потоков. Я не отрицаю, что количество потоков необычно, но это ожидается и оправдано на данном этапе нашего проектирования.

Я планирую некоторые небольшие изменения в дизайне, чтобы отделить поток от узла. Это позволит нам настроить один поток для запуска нескольких узлов и уменьшить количество потоков. Для наборов данных, которые не обновляются часто, будет очень небольшой эффект производительности от того, что один поток будет выполнять обновления данных в каждом узле. Для наборов данных, которые обновляются сотни раз в секунду, мы можем настроить каждый узел для работы в собственном потоке. На самом деле, я не сомневаюсь, что это изменение дизайна будет внесено - это вопрос только когда. А пока я хотел бы получить как можно больше информации о последствиях использования этой конструкции.

Вопрос

Каковы затраты на работу с более чем 40 000 потоков на одной машине? Насколько я теряю производительность из-за того, что ОС JVM / Linux управляет таким количеством потоков? Пожалуйста, помните, что все они правильно настроены для сна, когда нет работы. Итак, я просто говорю о дополнительных накладных расходах и проблемах, вызванных огромным количеством потоков.

Обратите внимание - я знаю, что могу уменьшить количество потоков, и знаю, что это изменение дизайна - хорошая идея. Я сделаю это, как только смогу, но это должно быть сбалансировано с другой работой и соображениями дизайна. Я задаю этот вопрос, чтобы собрать информацию и принять правильное решение. Мы очень ценим ваши мысли и комментарии по этому поводу.

8
задан Alba Mendez 19 April 2011 в 15:21
поделиться