Контрольные точки представляют собой метод , который обеспечивает отказоустойчивость для вычислительных систем. По сути, он состоит из сохранения снимка состояния приложения , чтобы приложения могли перезапускаться с этой точки в случае сбоя . Это особенно важно для долго работающих приложений, которые выполняются в подверженных сбоям вычислительных системах.
Контрольные точки в распределенных системах
В распределенной вычислительной среде контрольные точки - это метод, который помогает выдерживать сбои, которые в противном случае вынудили бы долго работающее приложение перезапускаться с самого начала. Самый простой способ реализовать контрольную точку - остановить приложение, скопировать все необходимые данные из памяти в надежное хранилище (например, в параллельную файловую систему ), а затем продолжить выполнение. [1] В случае сбоя при перезапуске приложение не нужно запускать с нуля. Скорее, он считывает последнее состояние («контрольную точку») из стабильного хранилища и запускается из него. В то время как продолжаются дискуссии о том, является ли контрольная точка основной нагрузкой ввода-вывода в распределенных вычислительных системах, существует общее мнение, что контрольная точка является одной из основных рабочих нагрузок ввода-вывода. [2] [3]
Существует два основных подхода к созданию контрольных точек в распределенных вычислительных системах: координированная контрольная точка и несогласованная контрольная точка. При подходе координированных контрольных точек процессы должны обеспечивать согласованность своих контрольных точек. Обычно это достигается с помощью какого-либо алгоритма протокола двухфазной фиксации . При несогласованной контрольной точке каждый процесс независимо устанавливает свое состояние. Следует подчеркнуть, что простого принуждения процессов к проверке своего состояния через фиксированные интервалы времени недостаточно для обеспечения глобальной согласованности. Необходимость в установлении согласованного состояния (т. Е. Отсутствия пропущенных или дублированных сообщений) может вынудить другие процессы вернуться к своим контрольным точкам, что, в свою очередь, может вызвать откат других процессов к еще более ранним контрольным точкам, что в самом крайнем случае может означают, что единственное найденное согласованное состояние - это начальное состояние (так называемый эффект домино ). [4] [5]
Реализации для приложений
Сохранить состояние
Одним из первоначальных, а теперь и наиболее распространенных средств контрольной точки приложения была функция «сохранения состояния» в интерактивных приложениях, в которой пользователь приложения мог сохранять состояние всех переменных и других данных на носитель в то время, когда они использовали и либо продолжите работу, либо выйдите из приложения, а позже перезапустите приложение и восстановите сохраненное состояние. Это было реализовано с помощью команды «Сохранить» или пункта меню в приложении. Во многих случаях стало стандартной практикой спрашивать пользователя, есть ли у него несохраненная работа при выходе из приложения, если он хочет сохранить свою работу перед этим.
Такая функциональность стала чрезвычайно важной для удобства использования в приложениях, где конкретная работа не могла быть выполнена за один присест (например, игра в видеоигру, которая, как ожидается, займет десятки часов, или написание книги или длинного документа, состоящего из сотен или тысяч страниц). ) или когда работа выполнялась в течение длительного периода времени, например, ввод данных в документ, например строки в электронной таблице.
Проблема с состоянием сохранения заключается в том, что оно требует, чтобы оператор программы запросил сохранение. Для неинтерактивных программ, включая автоматизированные или пакетные рабочие нагрузки, возможность проверки таких приложений также должна была быть автоматизирована.
Контрольная точка / перезагрузка
Поскольку пакетные приложения начали обрабатывать от десятков до сотен тысяч транзакций, где каждая транзакция могла обрабатывать одну запись из одного файла против нескольких разных файлов, необходимость в перезапуске приложения в какой-то момент без необходимости повторного запуска всего задания с нуля. стало императивом. Так родилась возможность «контрольная точка / перезапуск», при которой после обработки ряда транзакций можно было сделать «моментальный снимок» или «контрольную точку» состояния приложения. Если приложение не удалось до следующей контрольной точки, его можно перезапустить, предоставив ему информацию о контрольной точке и последнее место в файле транзакции, где транзакция была успешно завершена. Затем приложение может перезапуститься с этого момента.
Создание контрольных точек, как правило, является дорогостоящим, поэтому обычно это делается не для каждой записи, а при разумном компромиссе между стоимостью контрольной точки и стоимостью компьютерного времени, необходимого для повторной обработки пакета записей. Таким образом, количество записей, обрабатываемых для каждой контрольной точки, может варьироваться от 25 до 200, в зависимости от факторов стоимости, относительной сложности приложения и ресурсов, необходимых для успешного перезапуска приложения.
Интерфейс отказоустойчивости (FTI)
FTI - это библиотека, цель которой предоставить ученым-вычислителям простой способ выполнения контрольной точки / перезапуска масштабируемым образом. [6] FTI использует локальное хранилище, а также методы множественной репликации и стирания для обеспечения нескольких уровней надежности и производительности. FTI предоставляет контрольные точки на уровне приложений, которые позволяют пользователям выбирать, какие данные необходимо защитить, чтобы повысить эффективность и избежать потерь пространства, времени и энергии. Он предлагает прямой интерфейс данных, поэтому пользователям не нужно иметь дело с именами файлов и / или каталогов. FTI прозрачно для пользователя управляет всеми метаданными. При желании пользователи могут выделить один процесс на узел для перекрытия рабочей нагрузки отказоустойчивости и научных вычислений, чтобы задачи после контрольной точки выполнялись асинхронно.
Контрольно-пропускной пункт лаборатории Беркли / перезапуск (BLCR)
Future Technologies Group в Национальной лаборатории Лоуренса разрабатывает гибридную реализацию контрольной точки / перезапуска ядра / пользователя под названием BLCR. Их цель - обеспечить надежную и качественную реализацию, которая проверяет широкий спектр приложений, не требуя внесения изменений в код приложения. [7] BLCR фокусируется на создании контрольных точек параллельных приложений, которые обмениваются данными через MPI, и на совместимости с программным пакетом, созданным SciDAC Scalable Systems Software ISIC. Его работа разбита на 4 основные области: контрольная точка / перезапуск для Linux (CR), библиотеки MPI с контрольными точками, интерфейс управления ресурсами для контрольной точки / перезапуска и разработка интерфейсов управления процессами.
DMTCP
DMTCP (распределенная многопоточная контрольная точка) - это инструмент для прозрачной контрольной точки состояния произвольной группы программ, распределенных по множеству машин и связанных сокетами. [8] Он не изменяет ни программу пользователя, ни операционную систему. Среди приложений, поддерживаемых DMTCP, - Open MPI , Python , Perl , а также многие языки программирования и языки сценариев оболочки. Используя TightVNC, он также может проверять и перезапускать приложения X Window, если они не используют расширения (например, OpenGL или видео). Среди функций Linux, поддерживаемых DMTCP, - дескрипторы открытых файлов , каналы, сокеты, обработчики сигналов, виртуализация идентификатора процесса и идентификатора потока (убедитесь, что старые идентификаторы pid и tid продолжают работать после перезапуска), ptys, fifos, идентификаторы групп процессов, идентификаторы сеансов, терминал. атрибуты и mmap / mprotect (включая разделяемую память на основе mmap). DMTCP поддерживает OFED API для InfiniBand на экспериментальной основе. [9]
Совместная контрольная точка
Некоторые недавние протоколы выполняют совместную контрольную точку, сохраняя фрагменты контрольной точки в соседних узлах. [10] Это полезно, поскольку позволяет избежать затрат на хранение в параллельной файловой системе (что часто становится узким местом для крупномасштабных систем) и использует более близкое хранилище. Это нашло применение, в частности, в крупномасштабных суперкомпьютерных кластерах. Задача состоит в том, чтобы гарантировать, что, когда контрольная точка необходима при восстановлении после сбоя, близлежащие узлы с фрагментами контрольных точек будут доступны.
Докер
Докер и базовая технология содержат контрольную точку и механизм восстановления. [11]
CRIU
CRIU - это библиотека контрольных точек пространства пользователя.
Реализация для встроенных и ASIC-устройств
Сувениры
Mementos - это программная система, которая преобразует задачи общего назначения в программы, которые можно прерывать, для платформ с частыми перебоями, такими как перебои в подаче электроэнергии. Он был разработан для безбатарейных встроенных устройств, таких как RFID-метки и смарт-карты, которые используют энергию из внешних источников. Mementos часто определяет доступную энергию в системе и решает, следует ли проверять программу из-за надвигающейся потери мощности или продолжать вычисления. При установке контрольной точки данные будут храниться в энергонезависимой памяти . Когда энергии становится достаточно для перезагрузки , данные извлекаются из энергонезависимой памяти, и программа продолжает работу из сохраненного состояния. Mementos был реализован на MSP430 семейства микроконтроллеров . Mementos назван в честь Кристофера Нолана «s Memento . [12]
Idetic
Idetic - это набор автоматических инструментов, которые помогают разработчикам специализированных интегральных схем (ASIC) автоматически встраивать контрольные точки в свои проекты. Он нацелен на инструменты синтеза высокого уровня и добавляет контрольные точки на уровне передачи регистров ( код Verilog ). Он использует подход динамического программирования для определения точек с минимальными накладными расходами в конечном автомате проекта. Поскольку контрольная точка на аппаратном уровне включает отправку данных зависимых регистров в энергонезависимую память, оптимальные точки должны иметь минимальное количество регистров для хранения. Idetic используется и оценивается на устройстве RFID-меток для сбора энергии . [13]
Смотрите также
Рекомендации
- Перейти ↑ Plank, JS, Beck, M., Kingsley, G., & Li, K. (1994). Libckpt: прозрачная контрольная точка в unix. Кафедра компьютерных наук.
- ^ Ван, Тэн; Снайдер, Шейн; Локвуд, Гленн; Карнс, Филип; Райт, Николас; Бына, Сурен (сентябрь 2018 г.). «IOMiner: крупномасштабная аналитическая платформа для получения знаний из журналов ввода-вывода». 2018 IEEE Международная конференция по вычислительной кластерной (Кластер) . IEEE. С. 466–476. DOI : 10,1109 / CLUSTER.2018.00062 . ISBN 978-1-5386-8319-4. S2CID 53235850 .
- ^ «Сравнительная характеристика нагрузки ввода-вывода двух журналов кластера хранения ведущего класса» (PDF) . ACM. Ноя 2015.
- ^ Bouteiller, Б., Lemarinier П., Krawezik, К., и Капелло, F. (2003, декабрь). Скоординированная контрольная точка в сравнении с журналом сообщений для отказоустойчивого MPI. В кластерных вычислениях, 2003. Труды. Международная конференция IEEE 2003 г. (стр. 242–250). IEEE.
- ^ Elnozahy, Е.Н., Alvisi, Л., Ван, Я. М., & Джонсон, Д. Б. (2002). Обзор протоколов отката-восстановления в системах передачи сообщений. ACM Computing Surveys, 34 (3), 375-408.
- ^ Баутиста-Гомес, Л., Цубои, С., Komatitsch Д., Cappello, Ф., Maruyama, Н., & Мацуока, С. (2011, ноябрь). FTI: высокопроизводительный интерфейс отказоустойчивости для гибридных систем. В материалах Международной конференции по высокопроизводительным вычислениям, сетям, хранению данных и анализу 2011 г. (стр. 32). ACM.
- ^ Харгрув, PH, и Duell, JC (2006, сентябрь). Контрольная точка / перезапуск лаборатории Беркли (blcr) для кластеров Linux. В Journal of Physics: Conference Series (Vol. 46, No. 1, p. 494). IOP Publishing.
- Перейти ↑ Ansel, J., Arya, K., & Cooperman, G. (2009, май). DMTCP: прозрачная контрольная точка для кластерных вычислений и рабочего стола. В «Параллельная и распределенная обработка», 2009 г. IPDPS 2009. Международный симпозиум IEEE (стр. 1–12). IEEE.
- ^ «GitHub - DMTCP / DMTCP: DMTCP: распределенная многопоточная контрольная точка» . 2019-07-11.
- ^ Уолтерс, JP; Чаудхари, В. (2009-07-01). «Отказоустойчивость на основе репликации для приложений MPI». Транзакции IEEE в параллельных и распределенных системах . 20 (7): 997–1010. CiteSeerX 10.1.1.921.6773 . DOI : 10.1109 / TPDS.2008.172 . ISSN 1045-9219 . S2CID 2086958 .
- ^ «Докер - ЦНИИ» .
- ^ Benjamin Рансфорд, Иаков поглотитель, и Кевин Фу. 2011. Mementos: поддержка системы для длительных вычислений на устройствах RFID. Уведомления ACM SIGPLAN 47, 4 (март 2011 г.), 159-170. DOI = 10.1145 / 2248487.1950386 http://doi.acm.org/10.1145/2248487.1950386
- ^ Mirhoseini, A .; Сонгори, EM; Кушанфар, Ф., «Idetic: подход к высокоуровневому синтезу для обеспечения длительных вычислений на ASIC с временным питанием», Pervasive Computing and Communications (PerCom), Международная конференция IEEE 2013, том, №, стр. 216, 224, 18 –22 марта 2013 г. URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6526735&isnumber=6526701
дальнейшее чтение
- Ибэй Лин, Джи Ми, Сяола Линь: Подход с использованием вариационного исчисления к оптимальному размещению контрольных точек. IEEE Trans. Компьютеры 50 (7): 699-708 (2001).
- Р.Э. Ахмед, Р.К. Фрейзер и П.Н. Маринос, «Алгоритмы восстановления после ошибок с помощью кэша (CARER) для многопроцессорных систем с общей памятью», 20-й Международный симпозиум IEEE по отказоустойчивым вычислениям (FTCS-20), Ньюкасл-апон-Тайн, Великобритания, 26–28 июня 1990 г., с. 82–88.
Внешние ссылки
- LibCkpt
- FTI
- Контрольно-пропускной пункт лаборатории Беркли / перезапуск (BLCR)
- OpenVZ
- CRIU
- Криопид2