Контрольные точки приложения - Application checkpointing

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

Контрольные точки в распределенных системах

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

Существует два основных подхода к созданию контрольных точек в распределенных вычислительных системах: координированная контрольная точка и несогласованная контрольная точка. При подходе координированных контрольных точек процессы должны обеспечивать согласованность их контрольных точек. Обычно это достигается каким-то протокол двухфазной фиксации алгоритм. В несогласованной контрольной точке каждый процесс независимо устанавливает свое состояние. Следует подчеркнуть, что простого принуждения процессов к проверке своего состояния через фиксированные интервалы времени недостаточно для обеспечения глобальной согласованности. Необходимость в установлении согласованного состояния (т. Е. Отсутствия пропущенных или дублированных сообщений) может вынудить другие процессы вернуться к своим контрольным точкам, что, в свою очередь, может вызвать откат других процессов к еще более ранним контрольным точкам, что в самом крайнем случае может означают, что единственное найденное согласованное состояние - это начальное состояние (так называемое эффект домино ).[4][5]

Реализации для приложений

Сохранить состояние

Одним из первоначальных, а теперь и наиболее распространенных средств контрольной точки приложения была функция «сохранения состояния» в интерактивных приложениях, при которой пользователь приложения мог сохранять состояние всех переменных и других данных на носителе в то время, когда они использовали и либо продолжите работу, либо выйдите из приложения, а позже перезапустите приложение и восстановите сохраненное состояние. Это было реализовано с помощью команды «Сохранить» или пункта меню в приложении. Во многих случаях стало стандартной практикой спрашивать пользователя, есть ли у него несохраненная работа при выходе из приложения, если он хочет сохранить свою работу перед этим.

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

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

Контрольная точка / перезапуск

Поскольку пакетные приложения начали обрабатывать от десятков до сотен тысяч транзакций, где каждая транзакция могла обрабатывать одну запись из одного файла для нескольких разных файлов, необходимость в перезапуске приложения в какой-то момент без необходимости повторного запуска всего задания с нуля стало необходимо. Так родилась возможность «контрольная точка / перезапуск», при которой после обработки ряда транзакций можно было сделать «моментальный снимок» или «контрольную точку» состояния приложения. Если приложение завершилось неудачно до следующей контрольной точки, его можно перезапустить, предоставив ему информацию о контрольной точке и последнее место в файле транзакции, где транзакция была успешно завершена. После этого приложение может перезапуститься.

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

Интерфейс отказоустойчивости (FTI)

FTI - это библиотека, цель которой - предоставить ученым-вычислителям простой способ выполнения контрольной точки / перезапуска масштабируемым образом.[6] FTI использует локальное хранилище, а также методы множественной репликации и стирания, чтобы обеспечить несколько уровней надежности и производительности. FTI предоставляет контрольные точки на уровне приложений, которые позволяют пользователям выбирать, какие данные необходимо защитить, чтобы повысить эффективность и избежать потерь пространства, времени и энергии. Он предлагает прямой интерфейс данных, поэтому пользователям не нужно иметь дело с именами файлов и / или каталогов. Все метаданные управляются FTI прозрачно для пользователя. При желании пользователи могут выделить один процесс на узел для перекрытия рабочей нагрузки отказоустойчивости и научных вычислений, чтобы задачи после контрольной точки выполнялись асинхронно.

Контрольно-пропускной пункт лаборатории Беркли / перезапуск (BLCR)

Группа Future Technologies из Национальной лаборатории Лоуренса разрабатывает гибридную реализацию контрольной точки / перезапуска ядра / пользователя под названием BLCR. Их цель - обеспечить надежную и качественную реализацию, которая проверяет широкий спектр приложений, не требуя внесения изменений в код приложения.[7] BLCR фокусируется на создании контрольных точек параллельных приложений, которые обмениваются данными через MPI, и на совместимости с программным пакетом, созданным SciDAC Scalable Systems Software ISIC. Его работа разбита на 4 основные области: контрольная точка / перезапуск для Linux (CR), библиотеки MPI с контрольными точками, интерфейс управления ресурсами для контрольной точки / перезапуска и разработка интерфейсов управления процессами.

DMTCP

DMTCP (распределенная многопоточная контрольная точка) - это инструмент для прозрачной контрольной точки состояния произвольной группы программ, распределенных по множеству машин и связанных сокетами.[8] Он не изменяет ни программу пользователя, ни операционную систему. Среди приложений, поддерживаемых DMTCP: Открыть 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 часто определяет доступную энергию в системе и решает, следует ли проверять программу из-за надвигающейся потери мощности или продолжать вычисления. При установке контрольной точки данные будут храниться в энергонезависимая память. Когда энергии становится достаточно для перезагрузка данные извлекаются из энергонезависимой памяти, и программа продолжается из сохраненного состояния. Сувениры были реализованы на MSP430 семья микроконтроллеры. Mementos назван в честь Кристофер Нолан с Memento.[12]

Идентичный

Idetic - это набор автоматических инструментов, которые помогают специализированная интегральная схема (ASIC), чтобы автоматически встраивать контрольные точки в свои проекты. Он нацелен синтез высокого уровня инструменты и добавляет контрольные точки на уровень регистрации-передачи (Verilog код). Он использует динамическое программирование подход к поиску точек с низкими накладными расходами в Государственный аппарат дизайна. Поскольку контрольная точка на аппаратном уровне включает отправку данных зависимых регистры Для энергонезависимой памяти оптимальные точки должны иметь минимальное количество регистров для хранения. Idetic внедряется и оценивается по сбору энергии RFID-метка устройство.[13]

Смотрите также

Рекомендации

  1. ^ Планк, Дж. С., Бек, М., Кингсли, Г., и Ли, К. (1994). Libckpt: прозрачная контрольная точка в unix. Кафедра компьютерных наук.
  2. ^ Ван, Тэн; Снайдер, Шейн; Локвуд, Гленн; Карнс, Филип; Райт, Николас; Бына, Сурен (сентябрь 2018 г.). «IOMiner: крупномасштабная аналитическая платформа для получения знаний из журналов ввода-вывода». Международная конференция IEEE по кластерным вычислениям (CLUSTER) 2018 г.. IEEE. С. 466–476. Дои:10.1109 / CLUSTER.2018.00062. ISBN  978-1-5386-8319-4.
  3. ^ «Сравнительная характеристика нагрузки ввода-вывода двух журналов кластера хранения ведущего класса» (PDF). ACM. Ноя 2015.
  4. ^ Бутейлер Б., Лемаринье П., Кравезик К. и Капелло Ф. (2003, декабрь). Скоординированная контрольная точка в сравнении с журналом сообщений для отказоустойчивого MPI. В кластерных вычислениях, 2003. Труды. Международная конференция IEEE 2003 г. (стр. 242–250). IEEE.
  5. ^ Эльнозахи, Э. Н., Алвиси, Л., Ван, Ю. М., и Джонсон, Д. Б. (2002). Обзор протоколов отката-восстановления в системах передачи сообщений. ACM Computing Surveys, 34 (3), 375-408.
  6. ^ Баутиста-Гомес, Л., Цубои, С., Коматич, Д., Каппелло, Ф., Маруяма, Н., и Мацуока, С. (2011, ноябрь). FTI: высокопроизводительный интерфейс отказоустойчивости для гибридных систем. В материалах Международной конференции по высокопроизводительным вычислениям, сетям, хранению данных и анализу 2011 г. (стр. 32). ACM.
  7. ^ Харгроув, П. Х., Дуэлл, Дж. К. (2006, сентябрь). Контрольная точка / перезапуск лаборатории Беркли (blcr) для кластеров Linux. В Journal of Physics: Conference Series (Vol. 46, No. 1, p. 494). IOP Publishing.
  8. ^ Ансель, Дж., Арья, К., и Куперман, Г. (2009, май). DMTCP: прозрачная контрольная точка для кластерных вычислений и рабочего стола. В «Параллельная и распределенная обработка», 2009 г. IPDPS 2009. Международный симпозиум IEEE (стр. 1–12). IEEE.
  9. ^ "GitHub - DMTCP / DMTCP: DMTCP: распределенная многопоточная контрольная точка". 2019-07-11.
  10. ^ Walters, J. P .; Чаудхари, В. (2009-07-01). «Отказоустойчивость на основе репликации для приложений MPI». Транзакции IEEE в параллельных и распределенных системах. 20 (7): 997–1010. CiteSeerX  10.1.1.921.6773. Дои:10.1109 / TPDS.2008.172. ISSN  1045-9219.
  11. ^ «Докер - ЦНИИ».
  12. ^ Бенджамин Рэнсфорд, Джейкоб Сорбер и Кевин Фу. 2011. Mementos: системная поддержка для длительных вычислений на устройствах RFID. Уведомления ACM SIGPLAN 47, 4 (март 2011 г.), 159-170. DOI = 10.1145 / 2248487.1950386 http://doi.acm.org/10.1145/2248487.1950386
  13. ^ Mirhoseini, A .; Songhori, E.M .; Кушанфар, Ф., «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).
  • R.E. Ахмед Р. Фрейзер, П. Маринос, "Алгоритмы восстановления после ошибок отката с помощью кэша (CARER) для многопроцессорных систем с общей памятью", 20-й Международный симпозиум IEEE по отказоустойчивым вычислениям (FTCS-20), Ньюкасл-апон-Тайн, Великобритания, 26–28 июня 1990 г., стр. 82–88.

внешняя ссылка