На головну    
   
 
Головна Контакти Карта сайту ENG    UKR
 
 
Ч П О К С

ЧекПОйнт для лiнуКС

Чекпойнт процесiв (резервування та вiдновлення стану процесiв, збереження стану процесiв в контрольних точках) - це технiка, що дає можливiсть зберiгати стан процесiв у дисковий файл з подальшою можливiстю вiдновлення виконання процесу з цього файлу. Тобто, процес, стан якого був збережений i вiдновлений через деякий час повинен працювати так, наче вiн не переривався взагалi. Ця функцiя є корисною для задач, що вимагають тривалого часу виконання (наприклад, числове моделювання) у випадках нестабiльностi роботи обчислювальної системи, збоях подачi напруги живлення, перезавантаженнях системи, тощо. Звичайно, така функцiя притаманна розвиненим кластерним операцiйним системам.

ЧПОКС (CHPOX) це завантажуваний модуль ядра, що забезпесує пiдтримку функцiй резервування процесiв для операцiйної системи Лiнукс.

 

МОЖЛИВОСТI

Прозоре для користувача створення дампу у дисковий файл стану процесу або процесу з всiма його процесами-нащадками. Процес, або група процкесiв може бути вiдновлена з цього файлу пiзнiше в тiй самiй точцi, де був створений дамп.

ЧПОКС пiдтримує: створення даипу вiртуальної пам'ятi, звичайних файлiв, стану термiналу, поточної робочої директорiї, конвеєрiв, сокетів Unix, декiлькох процесiв, що не взаємодiють мiж собою.

Дана система не конфлiктує з системою кластеризацiї openMosix [4] i є безпечною при роботi з багатопроцесорними (SMP) системами. ЧПОКС працює як завантажуваний модуль ядра Лiнукс, i тому не вимагає перекомпiляцiї ядра Лiнукс, чи перекомпiляцiї або перекомпонування програм користувача.

ЧПОКС має працювати з рiзними версiями ядра Лiнукс, що основанi на серiї 2.4.х, такими як MOSIX [2], тощо. Команда розробникiв забезпечує тестування системи ЧПОКС для офiцiйної гiлки ядра Лiнукс та для ядра openMosix [4], тому iншi версiї з накладеними патчами можуть мати проблеми компiляцiї та використання.

 

IНСТАЛЯЦIЯ

Перед iнсталяцiєю Ви повиннi мати сконфiгуроване та скомпiльоване дерево вихiдних кодiв ядра Лiнукс, що працює в Вашiй системi, а також файл System.map для нього.

  1. Розархiвуйте за допомогою архiваторiв gunzip i tag архiв з вихiдними кодами системи ЧПОКС:

    tar -xzf chpox-.tar.gz

  2. перейдiть до директорiї 'cd', що мiстить вихiдний код i запустiть сценарiй './configure':

    cd chpox-
    ./configure


    Ви можете вказати шлях до вихiдних кодiв ядра Лiнукс за допомогою параметру сценарiю 'configure':

    ./configure --with-linux=/path/to/kernel/sources

    Якщо в директорiї вихiдних кодiв ядра вiдсутнiй файл System.map, Вам необхiдно явно вказати шлях до цього файлу:

    ./configure --with-sysmap=/path/to/System.map

    Дивiться результат виводу команди

    ./configure --help

    для iнформацiї про iншi опцiї.

  3. Виконайте 'make', 'make install' та 'depmod -ae':

    make
    make install
    depmod -ae

!!!УВАГА: Компiлюйте ЧПОКС лише тим компiлятором, яким Ви компiлювати ядро.
!!!УВАГА: При перекомпiляцiї ядра необхiдно перекомпiлювати сисему ЧПОКС



ВИКОРИСТАННЯ

 

Перед початком створення дампiв i вiдновленням процесiв необхiдно завантажити модуль ядра системи ЧПОКС:

modprobe chpox_mod

або

insmod chpox_mod

Резервування процесiв контролюється з використанням iнтерфейсу файлової системи proc. Процес, чи група процесiв може бути зареєстрована для для резервування шляхом запису рядка:

::: у файл '/proc/chpox/register'.

Ця процедура дає можливiсть зареструвати або скасувати реєстрацiю процесу з iдентифiкатором (можлива реєстрацiя процесу з його процесами-нащадками). Вказування == 0 скасовує реєстрацiю процесу (якщо рiвний 0 , скасовується реєстрацiя всiх зареєстрованих процесiв). У випадку, коли не рiвний 0 виконується реєстрацiя вiдповiдного процесу (або групи процесiв). Iм'я файлу дампу задається параметром .

Параметр має наступнi значення:

  • Якщо бiт 2 встановлений, то виконуваний файл буде включено в дамп. Це може бути корисним для переносу процесу мiж рiзними машинами, що мають однаковi версiї завантажуваних бiблiотек, але можуть не мати виконуваного файлу Вашого процесу.
  • Якщо бiт 3 встановлений, то динамiчно завантажуванi бiблiотеки процесу, якi зареєстрованi в системi ЧПОКС (див. нижче) будуть включенi у дамп.
  • Якщо бiт 4 встановлено, то система створює дамп всiх процесiв-нащадкiв зареєстрованого процесу.

Пiсля реєстрацiї процесу Ви можете проводити його резервування скiльки завгодно разiв шляхом надсилання цьому процесу сигналу to it.

Приклади

Реєстрацiя процесу з iдентифiкатором PID 1234 для резервування за допомогою сигналу 31 (SIGSYS):

echo "1234:31:1:/tmp/proc.dump" > /proc/chpox/register

Реєстрацiя процесу з усiма його нащадками:

echo "1234:31:9:/tmp/proc.dump" > /proc/chpox/register

Скасування реєстрацiї одного процесу:

echo "1234:0:0:" > /proc/chpox/register

Скасування реєстрацiї всiх процесiв

echo "0:0:0:" > /proc/chpox/register

Пiсля реєстрацiї процесу, його стан може бути зарезервований скiльки завгодно разiв шляхом надсилання процесу сигналу 31:

kill -31 1234

Розширенi можливостi

Файл "/proc/chpox/info" мiстить iнформацiю про всi зареєстрованi процеси у виглядi:

:<сигнал>: [|<кiлькiсть резервувань>] -> [<час останнього резервування>]

Парметр flag може мати наступнi значення:
C - новий запис
S - резервування процесу триває
O - останнiй запит на резервування виконано успiшно
E - Останнiй запит призвiв до помилки

Приклад: 2108:31:9 [O|1] -> /tmp/proc.dump [1040130768.799984]

Файл "/proc/chpox/libs" мiстить iнформацiю про динамiчнi бiблiотеки, зареєстрованi для включення в дамп (див. також програму `chpoxctl'). Ця функцiя необхiдна у випаках, коли є необхiднiсть резервування та вiдновлення процесiв на машинах з рiзними версiями завантажуваних бiблiотек. Новi бiблiотеки можуть бути доданi в список шляхом запису рядка виду: "+" у цей файл:

echo "+/lib/ld-linux.so.2" > /proc/chpox/libs

Для видалення бiблiотеки з списку необхiдно записати рядок "-":

echo "-/lib/ld-linux.so.2" > /proc/chpox/libs

Очистити список бiблiотек можливо шляхом запису рядка "-":

echo "-" > /proc/chpox/libs

Всi манiпуляцiї з списком бiблiотек вимагають прав суперкористувача.
Файл "/proc/chpox/version" містить номер версії системи

Сервiснi програми

Iнший метод керування системою ЧПОКС оснований на використаннi програми `chpoxctl', яка використовує iнтерiейс ioctl. Для бiльш детальної iнформацiї див. результат виконання команди

chpoxctl --help

Приклади:

Реєстрацiя процесу з iдентифiкатором PID 1234 для резервування за допомогою сигналу 31 (SIGSYS):

chpoxctl add 1234 31 1 /tmp/proc.dump

Реєстрацiя процесу з усiма його нащадками:

chpoxctl add 1234 31 9 /tmp/proc.dump

Скасування реєстрацiї одного процесу:

chpoxctl del 1234

скасування реєстрацiї всiх процесiв:

chpoxctl clear

Додавання бiблiотеки до списку:

chpoxctl addlib /lib/ld-linux.so.2

Видалення однiєї бiблiотеки з списку:

chpoxctl dellib /lib/ld-linux.so.2

Видалення всiх бiблiотек з списку:

chpoxctl clearlibs

Виведення списку всiх зареєстрованих бiблiотек:

chpoxctl liblist

ВIДНОВЛЕННЯ ПРОЦЕCIВ

Для вiдновлення зарезервованого процесу необхiдно виконати програму `ld-chpox' при завантаженому модулi системи ЧПОКС:

ld-chpox /tmp/proc.dump

Див. результат виконання команди

ld-chpox --help

для бiльш детальної iнформацiї.

РЕЄСТРАЦІЯ ФОРМАТУ ФАЙЛІВ CHPOX ЯК ВИКОНУВАНОГО

Для використання можливостей, описаних в даному параграфі, необхідно дозволити підтримку довільних (misc) виконуваних форматів в ядрі Linux (опція CONFIG_BINFMT_MISC).
Для запуску файлів дампу як звичайних виконуваних файлів Linux ви можете зареєструвати формат файлів chpox'а як виконуваний.
Якщо ви користуєтесь дистрибутивом Debian, то вам необхідно встановити пакет binfmt-support та виконати наступну команду з правами адміністратора:

update-binfmts --install chpox /usr/local/bin/ld-chpox --magic "CHPOX"

На інших системах реєстрацію можна провести шляхом запису строки ":chpox:M:0:CHPOX::/usr/local/bin/ld-chpox:" в файл "/proc/sys/fs/binfmt_misc/register". В цьому випадку реєстрацію потрібно повторювати після кожного перезавантаження системи.

ОТРИМАННЯ ІНФОРМАЦІЇ ПРО ФАЙЛ ДАМПУ

Для отримання інформації про файл, створений системою chpox, ви можете скористатия програмою file(1). При виконанні команди:

file -m chpox.magic

ви отримаєте наступну інформацію про файл: версію формату, архітектуру, для якої був створений файл, був файл вдало записаний, чи процес резервування завершився помилкою, кількість процесів-нащадків, збережених у файлі.
Файл chpox.magic включений до дистрибутиву системи chpox.

ДЕТАЛI РЕАЛIЗАЦIЇ

Під час реєстрації процесів для резервування відбувається блокування вказаного сигналу для вказаного процесу. Блокування здійснюється шляхом встановлення функції notifier, яка повертає значення 1 і перед поверненням очищує чергу сигналів. Коли вказаний при реєстрації сигнал надсилається процесу, функція notifier виконується в контексті процесу, що резервується. Під час виконання іункції notifier викликаються функції модуля VMA dump, а такоє відбувається резервування відкритих файлів та інших структур. Якщо резервування відбувається в системі openMosix, то перед створенням дампу процес повертається на доманшій вузол кластеру. Процедура роботи системи ЧПОКС аналогічна до відповідної процедури роботи систкми EPCKPT [1]. Система EPCKPT є досить потужним засобом резервування-відновлення процесів, оскільки підтримує більшість ресурсів процесів (за виключенням сокетів), однак ця система реалізована у вигляді патча до ядра і не може без спеціальної переробки працювати з системами openMosix, MOSIX. Інша система CRAK намагається зупиняти прпоцеси перед створенням дампу, а потім працювати з структурами процесів. Такий режим досить зручний для резервування засобів міжпроцесної взаємодії, однак знижує ефективність роботи і вимагає додаткових зусиль для роботи з структкрами процесів, оскільки ця робота виконується не в контекстів "свого" процесу. До того ж дана система не розрахована на роботу з багатопроцесорними системами. Для системи CRAK декларується підтримка мережевих сокетів.

АВТОРИ



Бюро паралельних обчислень,
Інформаційно-обчислювальний центр,
Київський національний універсистет імені Тараса Шевченка

Судаков Олександр Олександрович, к. ф.-м.н
Мещеряков Євгеній Сергійович

Система ЧПОКС базується на наступних розробках:

VMADUMP Erik Hendriks
EPCKPT Eduardo Pinheiro
CRAK Hua Zhong

ВЕРСІЯ

Версія 0.7.2. Систему відтестовано з ядром Лінукс версії 2.4.32.

ПОМИЛКИ

Дана версія не зовсім коректно працює з інтерактивними програмами.
Швидше всього, що ще багато?..

АПАРАТНІ АРХІТЕКТУРИ, ЩО ПІДТРИМУЮТЬСЯ

Дана версія системи ЧПОКС відтестована на машинах з архітектурою i386, PowerPC та s390/s390x.
ЗАУВАЖЕННЯ: підтримка PowerPC та s390/s390x знаходиться в експериментальному стані.
Якщо у Вас є досвід успішного використання системи ЧПОКС на машинах архітектури PPC або s390/s390x, ми дуже просимо повідомити нас про це.
Прохання також повідомити, якщо у Вас виникли складності з компіляцією чи використанням системи ЧПОКС.
Робоча група має доступ лише до машин архітектури i386, таким чином у випадку виникнення проблем з використання системи ЧПОКС з ігшими архітектурами автори зможуть вирішити їх лише в тому випадку, якщо отримають доступ до машини відповідної архітектури.

ПІДТРИМКА СОКЕТІВ

Chpox підтримує з'єднані та серверні(listening) потокові(stream) сокети Unix(також відомі як локальні). Система поки що не підтримує сокети Інтернет.
Chpox не підтримує збереження опцій сокетів.
Підчас відновлення система створює з'єднані сокети за допомогою системного виклику socketpair. Chpox намагається створити серверні сокети з тим ім'ям, яке вони мали підчас резервування. Якщо це неможливо, система намагається замінити останню літеру імені файлу сокета. Інакше сокет буде створений в абстрактному просторі імен.

ПЛАНИ НА МАЙБУТНЄ

Підтримка сокетів Інтернет, пам'яті спільного доступу, засобів міжпроцесної взаємодії System V, багатопотокових процесів.
Краща інтеграція з системою openMosix.

ЗАВАНТАЖИТИ

By downloading chpox-1.0.tar.gz, I state that I know and agree that CHPOX IS PROVIDED IN ITS ``AS IS'' CONDITION, WITH NO WARRANTY WHATSOEVER, THAT NO LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF CHPOX WILL BE ACCEPTED.

ПАКЕТИ DEBIAN

Ви також можете завантажити пакети для системи Debian. Для цього необхідно додати наступні строки в файл /etc/apt/sources.list:

deb http://www.cluster.kiev.ua/support/files/chpox stable main
deb-src http://www.cluster.kiev.ua/support/files/chpox stable main

Також ви можете завантажити пакети звідси. Пакет chpox вміщює програми для роботи з системою, а пакет chpox-source - вихідний код для модуля ядра, який можна скомпілювати за допомогою make-kpkg(1).

ПОСИЛАННЯ

  1. http://www.checkpointing.org/
  2. http://www.mosix.org/
  3. http://www.beowulf.org/
  4. openMosix

ПОСИЛАННЯ щодо системи ЧПОКС

В даному розділі містяться посилання на проекти, що використовують систему ЧПОКС. Якщо в вашому проекті успішно використовується система ЧПОКС, велике прохання повідомити робочу групу.

  1. openMosix Add-Ons and Community Contributions
  2. ClusterKnoppix
  3. The chpox - Checkpointing Utility and How to Use It. by Matt Rechenburg
  4. Головний демон openmosix (gomd)
  5. Дистрибутив Quantain
  6. Checkpointing and Distributed Shared Memory in openMosix by Mulyadi Santosa

ПУБЛІКАЦІЇ

  1. О.О.Судаков, Ю.В.Бойко, О.В.Третяк, Т.П.Короткова,Є.С.Мещеряков. Система резервування та вiдновлення процесiв для Linux. // Математичнi машини i системи, 2003, №2, с.146-153.
 
 
 
Kyiv National Taras Shevchenko University
© Information and Computer Center, 2002-2017