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