Details

Title: Методы оценки производительности linux-ядра на примере примитива синхронизации futex: выпускная квалификационная работа бакалавра: направление 09.03.04 «Программная инженерия» ; образовательная программа 09.03.04_01 «Технология разработки и сопровождения качественного программного продукта»
Creators: Панкова Полина Алексеевна
Scientific adviser: Никифоров Игорь Валерьевич
Organization: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности
Imprint: Санкт-Петербург, 2024
Collection: Выпускные квалификационные работы; Общая коллекция
Subjects: futex; Linux; оценка производительности; системный вызов; профилирование; performance evaluation; system call; profiling
Document type: Bachelor graduation qualification work
File type: PDF
Language: Russian
Level of education: Bachelor
Speciality code (FGOS): 09.03.04
Speciality group (FGOS): 090000 - Информатика и вычислительная техника
DOI: 10.18720/SPBPU/3/2024/vr/vr24-1677
Rights: Доступ по паролю из сети Интернет (чтение)
Additionally: New arrival
Record key: ru\spstu\vkr\28752

Allowed Actions:

Action 'Read' will be available if you login or access site from another network

Group: Anonymous

Network: Internet

Annotation

Цель данного исследования заключается в разработке методики для сопоставительного анализа отдельных компонентов операционной системы 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.

Document access rights

Network User group Action
ILC SPbPU Local Network All Read
Internet Authorized users SPbPU Read
-> Internet Anonymous

Table of Contents

  • ПЕРЕЧЕНЬ ТАБЛИЦ
  • Список сокращений и определений
  • Введение
  • Глава 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. Вывод и обоснование результатов
  • Заключение
  • СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Usage statistics

stat Access count: 2
Last 30 days: 2
Detailed usage statistics