Проверка корректности использования POSIX-сокетов при неблокирующем вводе-выводе
Реализация неблокирующего ввода-вывода, необходимого для работы с несколькими сетевыми соединениям в одном потоке исполнения, достаточно трудоемка: ошибки могут привести к блокированию потока выполнения на неопределенное время. Поставлена задача разработки и создания программной реализации метода поиска таких ошибок при тестировании системы. Описан метод, с помощью которого осуществляется анализ системных вызовов процесса и определение ошибок при мультиплексировании сетевых соединений на этапе тестирования. Метод реализован как программный комплекс для ОС на базе ядра Linux.
Авторы
Тэги
Тематические рубрики
Предметные рубрики
В этом же номере:
Резюме по документу**
УДК 004.415.53
Проверка корректности использования
POSIX-сокетов при неблокирующем вводе-выводе
1
1 <...> Н.Э. Баумана, Москва, 105005, Россия
Реализация неблокирующего ввода-вывода, необходимого для работы
с несколькими сетевыми соединениям в одном потоке исполнения, достаточно
трудоемка: ошибки могут привести к блокированию потока
выполнения на неопределенное время. <...> Описан метод, с помощью которого
осуществляется анализ системных вызовов процесса и определение
ошибок при мультиплексировании сетевых соединений на
этапе тестирования. <...> Метод реализован как программный комплекс
для ОС на базе ядра Linux. <...> Число одновременно поддерживаемых сетевой службой соединений
может достигать нескольких тысяч, что приводит к проявлению
недостатков стратегии, направленной на создание отдельного потока
для каждого соединения. <...> Для организации потока требуется как выделение
ресурсов для дескриптора потока в ядре операционной системы
(ОС), так и использование некоторого количества памяти в
пространстве пользователя, в частности для хранения стека потока. <...> Эффективность работы планировщика задач ОС достаточно резко
снижается, если сетевая служба создает сотни однотипных потоков и
более, из которых одновременно выполняются лишь несколько. <...> В итоге подход
«одно соединение — один поток» уже при нескольких сотнях сетевых
соединений приводит к существенно нелинейному снижению
производительности из-за накладных расходов на формирование рабочих
потоков [1]. <...> Наиболее распространенным способом преодоления этой проблемы
является стратегия работы с соединениями, предполагающая
создание нескольких потоков, каждый из которых опрашивает множество
сокетов, считывает из них данные и затем обрабатывает их <...> Число таких рабочих потоков обычно фиксировано и может быть
выбрано исходя из числа логических процессоров в системе. <...> В корректной
реализации данной стратегии, называемой мультиплексированием
сокетов, следует использовать <...>
** - вычисляется автоматически, возможны погрешности
Похожие документы: