Мониторинг и корректировка прерываний сетевых интерфейсов | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 4 мая, печатный экземпляр отправим 8 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №15 (357) апрель 2021 г.

Дата публикации: 07.04.2021

Статья просмотрена: 36 раз

Библиографическое описание:

Поселенов, К. В. Мониторинг и корректировка прерываний сетевых интерфейсов / К. В. Поселенов. — Текст : непосредственный // Молодой ученый. — 2021. — № 15 (357). — С. 22-24. — URL: https://moluch.ru/archive/357/79855/ (дата обращения: 25.04.2024).



Ключевые слова: программный модуль, прерывание, сетевой интерфейс, демон.

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

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

Актуальность данной проблемы обусловлена тем, что существующие решения не удовлетворяют всем требованиям. Рассмотрим одно из существующих решений — это решение компании ООО «С-Терра СиЭсПи». С помощью драйвера, реализованного в компании, нельзя было надежно установить необходимые оператору прерывания для обработки событий от сетевых интерфейсов. Сейчас в драйвере регистрируются обработчики событий NETDEV_UP/NETDEV_DOWN/NETDEV_CHANGE от сетевых интерфейсов. Но вызов этих обработчиков может происходить в неподходящее время. Например, драйвер сетевой карточки способен динамически изменить параметры её работы — в том числе, модифицировать привязку RX/TX очередей сетевой карты к номерам CPU, которые должны обрабатывать прерывания от этих очередей, и не вызвать обработчик NETDEV_CHANGE. Было принято решение создать программный модуль, работающий в фоновом циклическом режиме с заданным интервалом времени.

Выбранный тип работы программы позволяет избежать незапланированных изменений масок прерываний другими драйверами и сервисами. Так как данный программный модуль будет работать в циклическом режиме, заданная маска прерывания будет сохраняться неизменной на протяжении всей работы модуля.

Реализацией данного программного модуля является программа — демон. Демон [3] — это сервисный процесс, который работает в фоновом режиме и контролирует систему. В нашем решении демон будет работать с определенным временным интервалом.

В качестве входных параметров для запуска программного модуля используются:

  1. Флаг интерактивного режима работы. Все сообщения будут выводиться не только в специализированный лог-файл, но и на экран пользователя (не является обязательным параметром);
  2. Флаг считывания данных о прерывании из заготовленного файла. Данный флаг позволяет отлаживать программу на тестовых данных, чтобы была возможность протестировать все варианты работы модуля перед его внедрением в реальную систему (не является обязательным параметром);
  3. Флаг «сухого» режима работы. При данном режиме работы все сообщения поступают на экран пользователя, а также модуль не вносит никаких изменений в работу системы (не является обязательным параметром);
  4. Путь к файлам, обеспечивающие работу модуля.

Информация о том, как будет работать модуль, за какими интерфейсами он должен следить, задается в конфигурационном файле. Структура данного файла следующая:

  1. Указывается интервал работы (пример: interval 30, значит корректировка прерываний будет осуществляться раз в 30 с);
  2. Указываются названия сетевых интерфейсов, за которыми модуль будет следить (пример: eth0).

Информация о том, сколько выделять ядер для обработки прерывания от того или иного сетевого интерфейса задается в отдельном файле. Структура данного файла содержит строки такого формата [*]: / [2], где:

  1. Параметр до «:» определяет выполнять или не выполнять привязку прерываний от сетевых интерфейсов к процессорам;
  2. — число процессорных ядер, полностью выделенных под обработку прерываний сетевых интерфейсов;
  3. — количество рабочих ниток, число процессорных ядер, используемых для IPsec обработки.

Также к данному модулю прилагается файл, в котором хранится информация о различных прерываниях, для тестирования работы программы. Структура данного файла следующая:

Пример файла с информацией о прерываниях

Рис. 1. Пример файла с информацией о прерываниях

Все промежуточные сообщения, результаты записываются в специальный лог-файл.

Пример лог-файла

Рис. 2. Пример лог-файла

ПМ работает в фоновом режиме. С заданной периодичностью программа считывает входные данные из конфигурационных файлов, считывает данные о структуре процессора (количество ядер, распределение ядер по нума нодам), формирует маски ядер и массив нума нод, считывает информацию об интерфейсе, преобразует ее и выставляет прерывания (записывает полученную маску в файл /proc/irq/ /smp_affinity). Вся информация о работе программы записывается в лог файлы, также, если при старте программы был указан флаг –f программа будет работать в интерактивном режиме (в этом режиме программа выводит информацию не только в лог-файл, но и на консоль оператора ЭВМ). В модуле будет существовать, так называемый, «сухой» режим, вызываемый флагом –d, при котором изменение файлов не происходит (запись в файл /proc/irq/ /smp_affinity не производится), все действия, которые совершает программа, отображается в консоль оператора. Этот метод предназначен для отладки программы.

Схема данных для программного модуля представлена на рис. 3.

Схема данных программного модуля

Рис. 3. Схема данных программного модуля

Использованный в данной ситуации тип программы — демон, работающий циклически, позволил добиться того, что заданные в файле прерывания будут установлены в том виде, в котором они были прописаны оператором ЭВМ. В модуле выполняется запись в файлы /proc (например, /proc/irq/ /smp_affinity), которые ядро создаёт для взаимодействия с пользовательскими процессами ОС, но писать в эти файлы с уровня ядра является не совсем корректным. Поэтому, наиболее надёжным и правильным видится решение по созданию сервиса мониторинга состояния сетевых интерфейсов и их настройки через файлы /proc.

Литература:

  1. What is NUMA? URL. — Текст: электронный // The Linux Kernel: [сайт]. — URL: https://www.kernel.org/doc/html/v4.18/vm/numa.html
  2. CPU_DISTRIBUTION URL. — Текст: электронный // s-terra портал документации: [сайт]. — URL: http://doc.s-terra.ru/rh_output/4.3/Gate/output/index.htm
  3. Ubuntu manuals. — Текст: электронный // Writing and packaging system daemons URL: [сайт]. — URL: http://manpages.ubuntu.com/manpages/bionic/man7/daemon.7.html
  4. Лекция 3: Базовые понятия ОС Windows URL. — Текст: электронный // НОУ ИНТУИТ: [сайт]. — URL: https://intuit.ru/studies/courses/962/217/lecture/5589
Основные термины (генерируются автоматически): программный модуль, файл, интерфейс, обязательный параметр, прерывание, CPU, работа модуля, сетевой интерфейс, схема данных, фоновый режим.


Ключевые слова

программный модуль, прерывание, сетевой интерфейс, демон

Похожие статьи

Типы требований к Web-приложению для обработки...

§ коллективная работа и синхронное взаимодействие – единый формат представления, единая терминология, поддержка системой

§ существующие классификации хорошо работают в условиях крупных проектов, однако являются избыточными для проектов малого масштаба

Использование отладочной платы STM32F7 Discovery для...

Также будут выделены основные интерфейсы и подключаемая периферия, легкость

Данная плата Discovery содержит в себе все необходимое для быстрого начала работы и разработки

IPIPEIF (The Image Pipe Interface) — это интерфейс для передачи данных и синхронизации.

Создание обучающего приложения по информатике на базе Unity

Система пользовательских интерфейсов позволит разработчику создать пользовательские интерфейсы быстро и интуитивно. Это новая система, разработанная для Unity. Данная система имеет ряд двухмерных объектов чем-то напоминающих элементы Windows Form, но...

Алгоритм формирования пакетов данных для передачи по...

Для различных режимов работы (прием и передача) предусмотрены разные схемы данных и схемы алгоритмов. Основными данными, с которыми работает описываемый алгоритм в режиме передатчика, являются пакеты, подаваемые ему от прикладного ПО.

Разработка программного модуля для обеспечения комфортного...

В завершении работы был разработан программный модуль для обеспечения

фоновую страницу (background page). Это скрытая страница, содержащая основную логику расширения

Её осуществление берёт на себя программный модуль статистического анализа данных...

Разработка программного модуля по реализации функции...

Рис. 2. Пользовательский интерфейс настройки модуля и его компонентов из панели администрирования 1С-Битрикс. Алгоритм предложенного программного решения работает следующим образом. На вход программного модуля поступают данные из компонента.

Интеграция информационных систем на основе стандартов XML...

Помимо модуля генерации требуется модуль анализа XML-пакетов, т.к. результаты обработки информационных пакетов, отправленных на площадки и официальный сайт, также передаются в формате XML. Стоит отметить, что структура и состав XML-пакетов не унифицированы и могут...

Обзор методов интеграции информационных систем, их...

‒ Интеграция на уровне интерфейсов (физических, программных и пользовательских).

Данный вид интеграции основан на фиксации интерфейсов и форматов данных с обеих сторон.

На рисунке 2 представлена схема данных программного модуля, отображающая...

Разработка программных модулей обработки многомерных...

Библиографическое описание: Степаненко, А. А. Разработка программных модулей обработки многомерных данных различной природы в среде

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

Похожие статьи

Типы требований к Web-приложению для обработки...

§ коллективная работа и синхронное взаимодействие – единый формат представления, единая терминология, поддержка системой

§ существующие классификации хорошо работают в условиях крупных проектов, однако являются избыточными для проектов малого масштаба

Использование отладочной платы STM32F7 Discovery для...

Также будут выделены основные интерфейсы и подключаемая периферия, легкость

Данная плата Discovery содержит в себе все необходимое для быстрого начала работы и разработки

IPIPEIF (The Image Pipe Interface) — это интерфейс для передачи данных и синхронизации.

Создание обучающего приложения по информатике на базе Unity

Система пользовательских интерфейсов позволит разработчику создать пользовательские интерфейсы быстро и интуитивно. Это новая система, разработанная для Unity. Данная система имеет ряд двухмерных объектов чем-то напоминающих элементы Windows Form, но...

Алгоритм формирования пакетов данных для передачи по...

Для различных режимов работы (прием и передача) предусмотрены разные схемы данных и схемы алгоритмов. Основными данными, с которыми работает описываемый алгоритм в режиме передатчика, являются пакеты, подаваемые ему от прикладного ПО.

Разработка программного модуля для обеспечения комфортного...

В завершении работы был разработан программный модуль для обеспечения

фоновую страницу (background page). Это скрытая страница, содержащая основную логику расширения

Её осуществление берёт на себя программный модуль статистического анализа данных...

Разработка программного модуля по реализации функции...

Рис. 2. Пользовательский интерфейс настройки модуля и его компонентов из панели администрирования 1С-Битрикс. Алгоритм предложенного программного решения работает следующим образом. На вход программного модуля поступают данные из компонента.

Интеграция информационных систем на основе стандартов XML...

Помимо модуля генерации требуется модуль анализа XML-пакетов, т.к. результаты обработки информационных пакетов, отправленных на площадки и официальный сайт, также передаются в формате XML. Стоит отметить, что структура и состав XML-пакетов не унифицированы и могут...

Обзор методов интеграции информационных систем, их...

‒ Интеграция на уровне интерфейсов (физических, программных и пользовательских).

Данный вид интеграции основан на фиксации интерфейсов и форматов данных с обеих сторон.

На рисунке 2 представлена схема данных программного модуля, отображающая...

Разработка программных модулей обработки многомерных...

Библиографическое описание: Степаненко, А. А. Разработка программных модулей обработки многомерных данных различной природы в среде

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

Задать вопрос