SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Checkpoint-restore in userspace.
Готово или нет?
Павел Емельянов, Кир Колышкин
Yet another conference
1 октября 2012
Confidential
2
Что такое C/R и зачем оно нужно?
C/R – это возможность сохранить полное состояние приложения и
восстановить из него это приложение потом.
Зачем:
– Живая миграция
– Ускорение старта тяжелых приложений
– Обновление ядра “без перезагрузки”
– Снимки состояний рабочей среды
– Балансирование нагрузки в распределенной вычислительной системе
– ...
3
И что, можно все эти замечательные вещи делать уже сейчас?
Да!
Почти.
Мы близки к этому как никогда!
Из доклада вы узнаете:
✔
Как же все-таки это сделать?
✔
Долго ли еще ждать?
✔
Что было сделано, чтобы это стало возможным?
4
Исторический экскурс
2005 2008 2010 2011
Jan
Появился проект OpenVZ
С фичей “живая миграция контейнеров”
Фича – вся в ядре
Первая совместная попытка
заполучить миграцию в mainstream
Первая версия для включения в ядро
(ок. 100 патчей)
Первая попытка сделать все в
контексте приложения (CRIU)
Линус решил, что у проекта есть
шансы и влил первые изменения
CRIU v0.1
CRIU v0.2
+ Поддержка LXC
Jul Sep
2012
5
Заветная цель проекта
APP FS
MMCreds
Timers
...
APP
APP
share
dump
Image
0011011001
0010101110
1101011001
1011100111
0001011011
0101011100
1011010110
...
restore
APP
APP
APP
IPC
...
Network
IPC
...
Network
6
Основополагающий принцип
kernel
APP
FD
open
CRIU
tool
What files are opened?
~APP open
FD
dump
restore
7
Какие интерфейсы есть у ядра
Proc
System calls
Про себя Про кого угодно
dump
restore
Netlink
kernel
8
Как растет CRIU
kernel
APP
VM
mmap
CRIU
tool
What is mapped?
?
/proc/<pid>/map_files/
dump
9
Как растет CRIU (продолж.)
kernel
APP
VM
execve
CRIU
tool
What is VM layout?
Prctl extensions
dump
~APP Reset VM layout
VMrestore
X
10
Видение проекта Линусом
... this is a project by various mad Russians to perform c/r mainly from
userspace, with various oddball helper code added into the kernel
where the need is demonstrated.
So rather than some large central lump of code, what we have is little bits
and pieces popping up in various places which either expose
something new or which permit something which is normally kernel-
private to be modified...
11
Что уже умеет CRIU
IPC
...
Network
X86_64 архитектура
Произвольное поддерево процессов
Многопоточные приложения
Разделяемые файловые дескрипторы
Живущие TCP соединения
Сокеты UNIX
Контейнеры LXC
Любые участки виртуальной памяти
Открытые файлы (удаленные тоже)
Kernel V3.5
12
Что изменилось в ядре
~100 патчей влито ~15 патчей на подходе
9 новых фич
(1 C/R-only)
2 фичи скоро будут
13
Обзор новых фич в ядре (core)
Parasite code injection
– Read task states, that are currently retrieved by a task only about
himself
Proc map_files directory
– Find out what exact file is mapped
– Mappings sharing info
The kcmp system call
– Helps checking which kernel objects are shared between processes
14
Обзор новых фич в ядре (net)
TCP repair mode
– Read intimate state of a TCP connection
and reconstructs it from scratch on a freshly created socket
Sockets information dumping via netlink (sock_diag)
– Extendable sockets state retrieving engine
Virtual net devices indices
– Allows to restore network devices in a namespace
Socket peeking offset
– Allows peeking sockets queues
(reading without removing data from queue)
15
Обзор новых фич в ядре (misc)
Last-pid sysctl
– Restore task with desired PID value
A bunch of prctl extensions
– Set various private stuff on task/mm objects (c/r-only feature)
16
Как этим пользоваться
# ps axf
...
42 my_app
43 `- my_app_kid
...
# crtools dump -t 42 -D dump/
# ls dump/
pstree.img core-42.img fdinfo-42.img reg-files.img
...
# crtools show -f dump/pstree.img
Pid: 42 ppid: 0
Pid: 43 ppid: 42
# crtools restore -t 42 -D dump/ -d
# ps axf
...
42 my_app
42 `- my_app_kid
...
17
Как тестируется

ZDTM – набор атомарных тестов

Real-life приложения

Apache

MySQL

make & gcc

tar & gzip

sshd с открытыми удалёнными сессиями

screen с внутренностями

Java

VNC сервер + Xscreensaver с клиентской сессией
18
Главные планы на ближайшее будущее

Стабилизировать

Довливать патчи, которые еще не влиты
Чтобы все работало на mainstream linux

Интегрировать CRIU в OpenVZ и LXC

Автоматизировать живую миграцию

Оптимизировать миграцию памяти приложений
19
Ресурсы проекта
http://criu.org – новости и документация
http://git.criu.org – git с исходниками утилиты
https://github.com/cyrillos/linux-2.6/ – ядро с еще не влитыми патчами
criu@openvz.org – список рассылки
20
Павел Емельянов
xemul@parallels.com
Кир Колышкин
kir@openvz.org

Mais conteúdo relacionado

Mais procurados

Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
Badoo Development
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
Badoo Development
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
Anton Turetsky
 
Docker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутомDocker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутом
Anton Turetsky
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
Ontico
 

Mais procurados (20)

Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanes
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверами
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Developing high load systems using C++
Developing high load systems using C++Developing high load systems using C++
Developing high load systems using C++
 
Управление памятью в CPython
Управление памятью в CPythonУправление памятью в CPython
Управление памятью в CPython
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Docker networking
Docker networkingDocker networking
Docker networking
 
Docker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутомDocker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутом
 
Тестирование QoS на экспериментальном стенде
Тестирование QoS на экспериментальном стендеТестирование QoS на экспериментальном стенде
Тестирование QoS на экспериментальном стенде
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей Акиньшин
 
Test IBM Storwize V7000 with Easy Tier Rus
Test IBM Storwize V7000 with Easy Tier RusTest IBM Storwize V7000 with Easy Tier Rus
Test IBM Storwize V7000 with Easy Tier Rus
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй Docker
 
Инкапсуляция сетевой топологии при помощи ПКС
Инкапсуляция сетевой топологии при помощи ПКСИнкапсуляция сетевой топологии при помощи ПКС
Инкапсуляция сетевой топологии при помощи ПКС
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
 

Destaque

Folha Dominical - 30.09.12 Nº 442
Folha Dominical - 30.09.12 Nº 442Folha Dominical - 30.09.12 Nº 442
Folha Dominical - 30.09.12 Nº 442
Comunidades Vivas
 
JobScout Release 1 23-2012 iCALIFORNIA
JobScout Release 1 23-2012 iCALIFORNIAJobScout Release 1 23-2012 iCALIFORNIA
JobScout Release 1 23-2012 iCALIFORNIA
MyJobScout
 
Folha Dominical - 03.06.2012 Nº 427
Folha Dominical - 03.06.2012 Nº 427Folha Dominical - 03.06.2012 Nº 427
Folha Dominical - 03.06.2012 Nº 427
Comunidades Vivas
 
PipelineProject
PipelineProjectPipelineProject
PipelineProject
Mark Short
 
_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked
_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked
_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked
Angela Browne, PhD
 

Destaque (17)

Doc1
Doc1Doc1
Doc1
 
Folha Dominical - 30.09.12 Nº 442
Folha Dominical - 30.09.12 Nº 442Folha Dominical - 30.09.12 Nº 442
Folha Dominical - 30.09.12 Nº 442
 
Anatomía del higado
Anatomía del higadoAnatomía del higado
Anatomía del higado
 
Tarea v
Tarea vTarea v
Tarea v
 
JobScout Release 1 23-2012 iCALIFORNIA
JobScout Release 1 23-2012 iCALIFORNIAJobScout Release 1 23-2012 iCALIFORNIA
JobScout Release 1 23-2012 iCALIFORNIA
 
Folha Dominical - 03.06.2012 Nº 427
Folha Dominical - 03.06.2012 Nº 427Folha Dominical - 03.06.2012 Nº 427
Folha Dominical - 03.06.2012 Nº 427
 
The olympians
The olympiansThe olympians
The olympians
 
Count
CountCount
Count
 
PipelineProject
PipelineProjectPipelineProject
PipelineProject
 
Practica n 1
Practica n 1Practica n 1
Practica n 1
 
200, 2000 рублевые купюры
200, 2000 рублевые купюры200, 2000 рублевые купюры
200, 2000 рублевые купюры
 
Lean Sigma Award
Lean Sigma AwardLean Sigma Award
Lean Sigma Award
 
_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked
_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked
_A Browne_Segregation-Restrictive Housing Ppt_October 2016 locked
 
DebianでFirefoxをカスタマイズするには
DebianでFirefoxをカスタマイズするにはDebianでFirefoxをカスタマイズするには
DebianでFirefoxをカスタマイズするには
 
Ocular Biology
Ocular BiologyOcular Biology
Ocular Biology
 
Authentication and Policy Enforcement for Docker
Authentication and Policy Enforcement for DockerAuthentication and Policy Enforcement for Docker
Authentication and Policy Enforcement for Docker
 
DockerCon EU 2015: Nesting Containers: Real Life Observations
DockerCon EU 2015: Nesting Containers: Real Life ObservationsDockerCon EU 2015: Nesting Containers: Real Life Observations
DockerCon EU 2015: Nesting Containers: Real Life Observations
 

Semelhante a Checkpoint and Restore In Userspace: Готово или нет?

Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
OpenVZ
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Mikhail Kurnosov
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...
Mikhail Kurnosov
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray Chapel
Mikhail Kurnosov
 
Операционные системы
Операционные системыОперационные системы
Операционные системы
yaevents
 
Hpc Visualization with WebGL
Hpc Visualization with WebGLHpc Visualization with WebGL
Hpc Visualization with WebGL
Michael Karpov
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
qasib
 

Semelhante a Checkpoint and Restore In Userspace: Готово или нет? (20)

Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...
 
Работа высоконагруженного DNS-сервера
Работа высоконагруженного DNS-сервераРабота высоконагруженного DNS-сервера
Работа высоконагруженного DNS-сервера
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray Chapel
 
DC/OS more than PAAS
DC/OS more than PAASDC/OS more than PAAS
DC/OS more than PAAS
 
Операционные системы
Операционные системыОперационные системы
Операционные системы
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
 
Петр Леменков - Как облачные технологии меняют Linux-дистрибутивы
Петр Леменков - Как облачные технологии меняют Linux-дистрибутивы Петр Леменков - Как облачные технологии меняют Linux-дистрибутивы
Петр Леменков - Как облачные технологии меняют Linux-дистрибутивы
 
Hpc Visualization with WebGL
Hpc Visualization with WebGLHpc Visualization with WebGL
Hpc Visualization with WebGL
 
GRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network InitiativeGRANIT — Global Russian Advanced Network Initiative
GRANIT — Global Russian Advanced Network Initiative
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программирование
 
Операционные системы и среды
Операционные системы и средыОперационные системы и среды
Операционные системы и среды
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 

Mais de OpenVZ

Speeding up ps and top
Speeding up ps and topSpeeding up ps and top
Speeding up ps and top
OpenVZ
 
Live migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel EmelyanovLive migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel Emelyanov
OpenVZ
 

Mais de OpenVZ (20)

PFcache - LinuxCon 2015
PFcache - LinuxCon 2015PFcache - LinuxCon 2015
PFcache - LinuxCon 2015
 
Speeding up ps and top
Speeding up ps and topSpeeding up ps and top
Speeding up ps and top
 
Live migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel EmelyanovLive migration: pros, cons and gotchas -- Pavel Emelyanov
Live migration: pros, cons and gotchas -- Pavel Emelyanov
 
Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov
Live migrating a container: pros, cons and gotchas -- Pavel EmelyanovLive migrating a container: pros, cons and gotchas -- Pavel Emelyanov
Live migrating a container: pros, cons and gotchas -- Pavel Emelyanov
 
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
CRIU: time and space travel for Linux containers -- Kir KolyshkinCRIU: time and space travel for Linux containers -- Kir Kolyshkin
CRIU: time and space travel for Linux containers -- Kir Kolyshkin
 
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015
 
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел ЕмельяновЖивая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
 
What's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey BronnikovWhat's missing from upstream kernel containers? - Sergey Bronnikov
What's missing from upstream kernel containers? - Sergey Bronnikov
 
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий МонаховПроблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 
LibCT и контейнеры на уровне приложений -- Александр Бурлука
	LibCT и контейнеры на уровне приложений -- Александр Бурлука	LibCT и контейнеры на уровне приложений -- Александр Бурлука
LibCT и контейнеры на уровне приложений -- Александр Бурлука
 
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир ДавыдовУправление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
Управление памятью контейнеров в проекте OpenVZ -- Владимир Давыдов
 
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел ЕмельяновЖивая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
 
LibCT: one lib to rule them all -- Andrey Vagin
LibCT: one lib to rule them all -- Andrey VaginLibCT: one lib to rule them all -- Andrey Vagin
LibCT: one lib to rule them all -- Andrey Vagin
 
Denser containers with PF cache - Pavel Emelyanov
Denser containers with PF cache - Pavel EmelyanovDenser containers with PF cache - Pavel Emelyanov
Denser containers with PF cache - Pavel Emelyanov
 
CGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel EmelyanovCGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel Emelyanov
 
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
What's missing from upstream kernel containers? - Kir Kolyshkin, Sergey Bronn...
 
Not so brief history of Linux Containers - Kir Kolyshkin
Not so brief history of Linux Containers - Kir KolyshkinNot so brief history of Linux Containers - Kir Kolyshkin
Not so brief history of Linux Containers - Kir Kolyshkin
 
Openvz booth
Openvz boothOpenvz booth
Openvz booth
 

Checkpoint and Restore In Userspace: Готово или нет?

  • 1. Checkpoint-restore in userspace. Готово или нет? Павел Емельянов, Кир Колышкин Yet another conference 1 октября 2012 Confidential
  • 2. 2 Что такое C/R и зачем оно нужно? C/R – это возможность сохранить полное состояние приложения и восстановить из него это приложение потом. Зачем: – Живая миграция – Ускорение старта тяжелых приложений – Обновление ядра “без перезагрузки” – Снимки состояний рабочей среды – Балансирование нагрузки в распределенной вычислительной системе – ...
  • 3. 3 И что, можно все эти замечательные вещи делать уже сейчас? Да! Почти. Мы близки к этому как никогда! Из доклада вы узнаете: ✔ Как же все-таки это сделать? ✔ Долго ли еще ждать? ✔ Что было сделано, чтобы это стало возможным?
  • 4. 4 Исторический экскурс 2005 2008 2010 2011 Jan Появился проект OpenVZ С фичей “живая миграция контейнеров” Фича – вся в ядре Первая совместная попытка заполучить миграцию в mainstream Первая версия для включения в ядро (ок. 100 патчей) Первая попытка сделать все в контексте приложения (CRIU) Линус решил, что у проекта есть шансы и влил первые изменения CRIU v0.1 CRIU v0.2 + Поддержка LXC Jul Sep 2012
  • 5. 5 Заветная цель проекта APP FS MMCreds Timers ... APP APP share dump Image 0011011001 0010101110 1101011001 1011100111 0001011011 0101011100 1011010110 ... restore APP APP APP IPC ... Network IPC ... Network
  • 7. 7 Какие интерфейсы есть у ядра Proc System calls Про себя Про кого угодно dump restore Netlink kernel
  • 8. 8 Как растет CRIU kernel APP VM mmap CRIU tool What is mapped? ? /proc/<pid>/map_files/ dump
  • 9. 9 Как растет CRIU (продолж.) kernel APP VM execve CRIU tool What is VM layout? Prctl extensions dump ~APP Reset VM layout VMrestore X
  • 10. 10 Видение проекта Линусом ... this is a project by various mad Russians to perform c/r mainly from userspace, with various oddball helper code added into the kernel where the need is demonstrated. So rather than some large central lump of code, what we have is little bits and pieces popping up in various places which either expose something new or which permit something which is normally kernel- private to be modified...
  • 11. 11 Что уже умеет CRIU IPC ... Network X86_64 архитектура Произвольное поддерево процессов Многопоточные приложения Разделяемые файловые дескрипторы Живущие TCP соединения Сокеты UNIX Контейнеры LXC Любые участки виртуальной памяти Открытые файлы (удаленные тоже) Kernel V3.5
  • 12. 12 Что изменилось в ядре ~100 патчей влито ~15 патчей на подходе 9 новых фич (1 C/R-only) 2 фичи скоро будут
  • 13. 13 Обзор новых фич в ядре (core) Parasite code injection – Read task states, that are currently retrieved by a task only about himself Proc map_files directory – Find out what exact file is mapped – Mappings sharing info The kcmp system call – Helps checking which kernel objects are shared between processes
  • 14. 14 Обзор новых фич в ядре (net) TCP repair mode – Read intimate state of a TCP connection and reconstructs it from scratch on a freshly created socket Sockets information dumping via netlink (sock_diag) – Extendable sockets state retrieving engine Virtual net devices indices – Allows to restore network devices in a namespace Socket peeking offset – Allows peeking sockets queues (reading without removing data from queue)
  • 15. 15 Обзор новых фич в ядре (misc) Last-pid sysctl – Restore task with desired PID value A bunch of prctl extensions – Set various private stuff on task/mm objects (c/r-only feature)
  • 16. 16 Как этим пользоваться # ps axf ... 42 my_app 43 `- my_app_kid ... # crtools dump -t 42 -D dump/ # ls dump/ pstree.img core-42.img fdinfo-42.img reg-files.img ... # crtools show -f dump/pstree.img Pid: 42 ppid: 0 Pid: 43 ppid: 42 # crtools restore -t 42 -D dump/ -d # ps axf ... 42 my_app 42 `- my_app_kid ...
  • 17. 17 Как тестируется  ZDTM – набор атомарных тестов  Real-life приложения  Apache  MySQL  make & gcc  tar & gzip  sshd с открытыми удалёнными сессиями  screen с внутренностями  Java  VNC сервер + Xscreensaver с клиентской сессией
  • 18. 18 Главные планы на ближайшее будущее  Стабилизировать  Довливать патчи, которые еще не влиты Чтобы все работало на mainstream linux  Интегрировать CRIU в OpenVZ и LXC  Автоматизировать живую миграцию  Оптимизировать миграцию памяти приложений
  • 19. 19 Ресурсы проекта http://criu.org – новости и документация http://git.criu.org – git с исходниками утилиты https://github.com/cyrillos/linux-2.6/ – ядро с еще не влитыми патчами criu@openvz.org – список рассылки