Исследование механизмов синхронизации времени от различных
аппаратных источников в ядре Linux

 

 

Студент: Шпилевой Владислав, 320 гр.

Научный руководитель: Герасев Александр

Распределенная вычислительная система

  • РВС – набор независимых вычислительных машин и среда передачи данных между ними

 

  • У РВС есть узлы, взаимодействующие с внешним миром

Распределенная вычислительная система

  • У РВС есть узлы, взаимодействующие с внешним миром

 

  • На узлах возникают события

 

  • Необходимо уметь определять порядок возникновения событий

Распределенная вычислительная система

  • На узлах есть аппаратные счетчики времени
  • На разных узлах счетчики идут по-разному

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

Постановка задачи

Система из состоит из одного узла и нужно пересчитывать аппаратное время адаптера интерфейса в системное время этого узла.


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

Существующие алгоритмы пересчета времени

Решение в сетевой подсистеме ядра Linux

  • До версии 3.8 в ядре Linux существовал алгоритм для решения задачи пересчета времени событий на сетевых адаптерах

 

  • Система периодически опрашивала адаптеры о значениях их счетчиков

Существующие алгоритмы пересчета времени

Решение в сетевой подсистеме ядра Linux

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

 

  • В версии ядра 3.8 реализация алгоритма была удалена, в том числе из-за узконаправленности на сетевые адаптеры

Существующие алгоритмы пересчета времени

Алгоритм Кристиана

  • Устанавливает часы узлов системы в значение эталонных часов сервера
  • Частично учитывает время передачи по сети данных для синхронизации

 

  • Прост в реализации
  • Возможности для улучшения точности пересчета
  • Зависимость узлов от главного сервера

Существующие алгоритмы пересчета времени

Алгоритм Беркли

  • Сервер задает эталонное время на основании данных о ходе часов всех узлов системы
  • Замедляет «спешащие» и ускоряет «медленные» часы

 

 

 

 

 

  • Эффективен для небольших систем
  • Не учитывает время передачи данных по сети
  • «Плохие» узлы влияют на результирующее время

Существующие алгоритмы пересчета времени

Другие алгоритмы

Отметки времени Лампорта

  • Позволяет определять лишь порядок событий, но не точное время возникновения
  • Высоко эффективен при малом числе узлов

 

Решение в драйвере ta1usb интерфейса MIL-STD1553-B

  • Аппроксимирует ход аппаратных часов устройства функцией на основании последних известных значений счетчика
  • Устойчив к скачкам счетчика
  • Сложен в реализации

Предложенный алгоритм

Добавление узла в подсистему

  • Узел – любое устройство, значения аппаратного счетчика времени которого надо пересчитывать
  • Подсистема при добавлении узла получает информацию о нем и выполняет ряд подготовительных действий

Предложенный алгоритм

Взаимодействие узла с подсистемой

  • Периодически подсистема опрашивает узел о значении его локального счетчика времени, обновляя параметры пересчета:

Последние значения счетчика времени узла, соответствующие им значения эталонного времени и коэффициент пересчета

  • Узел в любой момент может запросить пересчет значения своего счетчика в эталонное время

Предложенный алгоритм

Взаимодействие узла с подсистемой

  • Когда узлу больше не требуется решать задачу пересчета времени, он отключается от подсистемы
  • При отключении узла будут освобождены ресурсы, выделенные ему

Архитектура ядра Linux

  • Динамическая загрузка модулей. Драйвер — модуль для работы с аппаратурой
  • Ядро — объектная структура
  • Общую функциональность модулей выделяют в подсистемы

Архитектура решения

  • Реализованная подсистема - загружаемый модуль ядра Linux
  • Для периодического обращения к узлам – hrtimer (High Resolution Timer)
  • По срабатыванию таймера узел сообщает значение своего счетчика времени
  • При запросе узла на пересчет значения подсистема использует последние вычисленные параметры этого узла

Итоги

Результаты:

  • Разработана обобщенная подсистема пересчета временных меток, которая может быть использована различными драйверами оборудования
  • Подсистема опробована на тестовом модуле – эмуляторе устройства

Далее:

  • Портирование на подсистему реального драйвера
  • Дописать текст курсовой работы