Детальная информация

Название: Методы оценки производительности linux-ядра на примере примитива синхронизации futex: выпускная квалификационная работа бакалавра: направление 09.03.04 «Программная инженерия» ; образовательная программа 09.03.04_01 «Технология разработки и сопровождения качественного программного продукта»
Авторы: Панкова Полина Алексеевна
Научный руководитель: Никифоров Игорь Валерьевич
Организация: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности
Выходные сведения: Санкт-Петербург, 2024
Коллекция: Выпускные квалификационные работы; Общая коллекция
Тематика: futex; Linux; оценка производительности; системный вызов; профилирование; performance evaluation; system call; profiling
Тип документа: Выпускная квалификационная работа бакалавра
Тип файла: PDF
Язык: Русский
Уровень высшего образования: Бакалавриат
Код специальности ФГОС: 09.03.04
Группа специальностей ФГОС: 090000 - Информатика и вычислительная техника
DOI: 10.18720/SPBPU/3/2024/vr/vr24-1677
Права доступа: Доступ по паролю из сети Интернет (чтение)
Дополнительно: Новинка
Ключ записи: ru\spstu\vkr\28752

Разрешенные действия:

Действие 'Прочитать' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети

Группа: Анонимные пользователи

Сеть: Интернет

Аннотация

Цель данного исследования заключается в разработке методики для сопоставительного анализа отдельных компонентов операционной системы Linux, а также в выработке сравнительной таблицы и выборе наиболее подходящей метрики для оценки системного вызова futex на платформах ARM64, RISC-V и x86_64. В рамках данной цели поставлены следующие задачи: 1) Осуществить обзор существующих решений. 2) Определить метрику для сопоставления системного вызова futex. 3) Выбрать инструменты для проведения нагруженного тестирования. 4) Провести измерения выбранной метрики. 5) Провести анализ первопричин полученных данных. 6) Сделать выводы. Для измерения системного вызова futex использовались инструменты нагрузочного тестирования stress-ng, трассировщики strace и ftrace, а также инструмент профилирования perf. В процессе исследования было обнаружено, что при использовании strace наблюдаются два переключения контекста, так как strace начинает измерение системного вызова из пользовательского пространства. Поэтому для точного измерения системного вызова только в пространстве ядра использовался инструмент ftrace. Результаты свидетельствуют о том, что системный вызов futex выполняется с одинаковой производительностью на трех платформах с различной архитектурой в пределах допустимой погрешности, что подтверждает достижение цели по сравнению системного вызова.

The aim of this study is to develop a methodology for comparative analysis of individual components of the Linux operating system, along with generating a comparative table and selecting the most suitable metric for evaluating the futex system call on ARM64, RISC-V, and x86_64 platforms. To achieve this aim, the following objectives are pursued: 1) Conduct a review of existing solutions. 2) Define a metric for comparing the futex system call. 3) Select tools for conducting stress testing. 4) Perform measurements of the selected metric. 5) Analyze the root causes of the obtained data. 6) Draw conclusions. Tools used for measuring the futex system call include stress-ng load testing tools, strace and ftrace tracers, as well as perf profiling tool. During the investigation, it was found that when using strace, two context switches occur, as strace begins measuring the system call from user space. Therefore, the ftrace tool was utilized for precise measurement of the system call exclusively within the kernel space. The results indicate that the futex system call performs with consistent efficiency across three platforms of varying architectures within acceptable margins of error, confirming the achievement of the objective of comparing system calls.

Права на использование объекта хранения

Место доступа Группа пользователей Действие
Локальная сеть ИБК СПбПУ Все Прочитать
Интернет Авторизованные пользователи СПбПУ Прочитать
-> Интернет Анонимные пользователи

Оглавление

  • ПЕРЕЧЕНЬ ТАБЛИЦ
  • Список сокращений и определений
  • Введение
  • Глава 1. Обзор предметной области
    • 1.1. Системный вызов futex
    • 1.2. Инструмент нагрузочного тестирования stress-ng
    • 1.3. Инструменты для отладки
      • 1.3.1. Инструмент strace
      • 1.3.2. Инструмент ftrace
      • 1.3.3. Инструмент perf
    • 1.4. Язык программирования Python
    • 1.5. Обзор решений
      • 1.5.1. Методика на основе бенчмарков
      • 1.5.2. Профилирование с использованием perf:
      • 1.5.3. Измерение времени выполнения системных вызовов:
      • 1.5.4. Профилирование в режиме ядра (Kernel Profiling):
    • 1.6. Сравнение существующих решений
    • 1.7. Выводы
  • Глава 2. Архитектура предполагаемого решения
    • 2.1. Аппаратная спецификация
    • 2.2. Выбор тестируемой системы
      • 2.2.1. Выравниваине линукса
      • 2.2.2. Выравнивание конфига
        • 2.2.2.1. Анализ данных
        • 2.2.2.2. Выводы
        • 2.2.2.3. Возможные шаги по уточнению данных
      • 2.2.3. Выравнивание частоты планировщика
        • 2.2.3.1. Выводы
      • 2.2.4. Выравнивание механизма управления энергопотреблением
    • 2.3. Выбор метрики для замеров
    • 2.4. Подготовка инструментов для замеров
      • 2.4.1. Подготовка stress-ng
        • 2.4.1.1. Сборка бинарного файла
        • 2.4.1.2. Изменения в тесте на futex
      • 2.4.2. Подготовка к замерам под strace
      • 2.4.3. Подготовка к замерам под ftrace
    • 2.5. Принципы замеров
    • 2.6. Обработка, анализ и оформление результатов замеров
    • 2.7. Выводы
  • Глава 3. Результаты
    • 3.1. Результаты strace
    • 3.2. Анализ полученных результатов
      • 3.2.1. Графики плотности распределений
      • 3.2.2. Профилирование систем при помощи perf
      • 3.2.3. Вывод
    • 3.3. Результаты ftrace
    • 3.4. Вывод и обоснование результатов
  • Заключение
  • СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Статистика использования

stat Количество обращений: 2
За последние 30 дней: 2
Подробная статистика