Предварительное создание ведомых потоков или процессов

Опубликовано в Технологии > Серверные технологии

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

При использовании метода предварительного создания разработчик предусматривает создание в программе ведущего сервера N ведомых процессов или потоков с началом ее выполнения. Каждый ведомый процесс использует средства, доступные в операционной системе, для перехода в режим ожидания поступления запроса. После поступления запроса один из ожидающих ведомых процессов начинает выполнение и обрабатывает этот запрос. После завершения обработки запроса ведомый процесс не заканчивает свою работу, а возвращается к выполнению кода, предусматривающего ожидание очередного запроса.

Основное преимущество предварительного создания обусловлено снижением издержек операционной системы. Поскольку серверу не приходится ждать создания ведомого процесса после поступления запроса, он обрабатывает запросы быстрее. Этот метод приобретает особое значение, если на обработку запроса требуется выполнение более продолжительных операций ввода/вывода по сравнению с вычислениями. http://www.auto-bahn.ru/vysotnye_raboty.htm Метод предварительного создания позволяет операционной системе сервера переключить процессор на другой ведомый процесс и приступить к обработке следующего запроса, в то время как предыдущий запрос ожидает завершения связанных с ним операций ввода/вывода.

При использовании метода предварительного создания сервер создает одновременно работающие ведомые процессы во время своего запуска на выполнение. Метод предварительного создания позволяет уменьшить задержку, вносимую сервером, поскольку исключает затраты на создание процесса при поступлении каждого запроса и позволяет совмещать обработку одного запроса с операциями ввода/вывода, связанными с выполнением другого запроса.

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