SlideShare a Scribd company logo
1 of 37
Download to read offline
Кирилл Колышкин
kir@openvz.org
http://openvz.org/
Управление ресурсами
в Linux и OpenVZ
Повестка дня (aka Agenda)
• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• OpenVZ user beancounters, эксплойты
• CGroups и memory controller
• TODO
Повестка дня (aka Agenda)
• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• OpenVZ user beancounters, эксплойты
• CGroups и memory controller
• TODO
Ресурсы: зачем контролировать?
• Ресурсы не бесконечны
• Сервер один, задач и пользователей много
• Нужна статистика по использованию
• Нужна защита от DoS атак
• Нужно обеспечить качество сервиса
– не только лимиты, но и гарантии
Ресурсы: что контролировать?
• Процессор
• Оперативная память и подкачка (swap)
• Дисковое пространство
• Дисковый ввод-вывод (I/O bandwidth)
• Сеть (сокеты, буфера, bandwidth и т.п.)
• Прочее
Процессор
Процессорное время раздаётся процессам
маленькими временными отрезками
• Приоритеты (веса)
• Ограничения сверху (лимиты)
• Привязка к конкретным процессорам
(для многопроцессорных систем)
Оперативная память
• Память уровня пользователя
– Виртуальная (VM) и физическая (RSS)
– page cache
• Память ядра
– Различные объекты / механизмы выделения
– Особый случай: сетевые буфера
• Пространство подкачки (swap)
Диск
• Место
• Пропускная способность ввода-вывода
– Чтение и запись
– Отображения памяти (mmap)
– Подкачка (swapin/swapout)
• Статистика ввода-вывода
Сеть
• Тут всё уже решено, говорить не о чем
– ...более или менее
• TC: traffic control
– Шейпинг, шедалинг, политики, ...
• iptables
Повестка дня (aka Agenda)
• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• OpenVZ user beancounters, эксплойты
• CGroups и memory controller
• TODO
Контейнеры — это ...
• такая легковесная виртуализация
• много контейнеров поверх единого ядра
• совсем как VM, только
– одна ОС (хотя м.б. разные дистрибутивы)
– «родная» производительность
– высокая плотность размещения
– динамическое управление ресурсами
Примеры контейнеров
• OpenVZ
• Parallels Virtuozzo Containers
• FreeBSD jails
• Linux-VServer
• Solaris Containers/Zones
• IBM AIX6 WPARs (Workload Partitions)
HP labs: OpenVZ vs Xen
• Накладные расходы Xen больше
• Накладными расходами OpenVZ
зачастую можно пренебречь
• Под Xen работало 4 копии интернет-
магазина и сервер уже был перегружен,
под OpenVZ заработало 6 без перегрузки
Контейнеры: шаг в эволюции ОС
• Многозадачные ОС
• Многопользовательские ОС
• Многоконтейнерные ОС
Контейнеры
и управление ресурсами
• Обеспечить мирное сосуществование
множества контейнеров
• С точки зрения управления ресурсами,
контейнеры — это просто группы
процессов!
Повестка дня (aka Agenda)
• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• OpenVZ user beancounters, эксплойты
• CGroups и memory controller
• TODO
Процессор
• Каждый процесс имеет nice value,
можно менять «по дороге» (nice/renice)
• Есть приоритет реального времени и
отдельная очередь процессов для него
• Жёсткий лимит на процессорное время
процесса (ulimit -c)
Место на диске
• Стандартные UNIX квоты очень хороши
– квоты на точку монтирования
– для пользователей и для групп
– мягкие и жёсткие лимиты, грейс-период
– можно узнать текущие значения
– можно менять лимиты «по дороге»
– приложения ожидают отказов (или должны)
Всё остальное: ulimit
• Реализован системными вызовами
setrlimit() и getrlimit()
• Контролирует 16 разных параметров:
core file size, data segment size, scheduling priority, file size, pending signals,
max locked memory, max memory size, number of open files, pipe size,
POSIX message queues, real-time priority, stack size, cpu time, max user processes,
virtual memory, file locks
• Есть «мягкие» и «жёсткие» лимиты
ulimit
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 38400
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
У ulimit много проблем
• Далеко не все ресурсы учитываются
• Нельзя посмотреть текущее использование
• Лимиты выставляются в текущем контексте
• Все лимиты выставляются на процесс
– кроме NPROC, который на пользователя
• Лимиты на память в основном игнорируются
Повестка дня (aka Agenda)
• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• OpenVZ user beancounters, эксплойты
• CGroups и memory controller
• TODO
OpenVZ beancounters
• Контролирует группы процессов
• 20 различных параметров
• Все можно менять во время выполнения
• Для каждого параметра можно видеть:
– Текущее значение, пиковое значение
– Счётчик отказов в выделении ресурса
UBC DEMO
cat /proc/user_beancounters
uid resource held maxheld barrier limit failcnt
123: kmemsize 1736835 5504975 5505024 5872024 43
lockedpages 0 0 32 32 0
privvmpages 7550 29061 256000 270000 0
shmpages 45 45 8192 8192 0
dummy 0 0 0 0 0
numproc 27 28 75 75 0
physpages 4167 5318 0 2147483647 0
vmguarpages 0 0 6144 2147483647 0
oomguarpages 4167 5318 6144 2147483647 0
numtcpsock 4 5 80 80 0
numflock 3 4 100 110 0
numpty 2 2 16 16 0
numsiginfo 0 2 256 256 0
tcpsndbuf 0 29212 319488 524288 0
tcprcvbuf 0 8552 319488 524288 0
othersockbuf 26736 74712 15000000 16000000 0
dgramrcvbuf 0 0 132096 132096 0
numothersock 22 24 80 80 0
dcachesize 130340 2097676 2097152 2195456 1
numfile 616 656 4096 4096 0
numiptent 0 0 128 128 0
Exploit 1: dcache eater
while(1) {
mkdir(“somedir”, S_IRWXU);
cd(“somedir”);
}
Exploit 2: vmarea eater
prot = PROT_READ;
for (start = 0; start < 10000; start +=
4096) {
mmap((void *)start, 4096, prot,
MAP_PRIVATE | MAP_ANON, 0, 0);
prot = (prot == PROT_READ)?
PROT_WRITE : PROT_READ;
}
for (i=1; i < 1024; i++)
fork();
Другие механизмы OpenVZ
• “Честный” планировщик процессов
– веса (приоритеты) и жёсткие лимиты
• Двухуровневая дисковая квота
–I уровень: квоты на контейнер
–II уровень: квоты внутри контейнера
• Приоритет дискового ввода-вывода
Повестка дня (aka Agenda)
• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• OpenVZ user beancounters, эксплойты
• CGroups и memory controller
• TODO
Control Groups aka CGroups
• Универсальный механизм для группировки
процессов в иехархические группы
• Различные контроллеры ресурсов
• Можно иметь разные группы для разных
контроллеров
• Управляется через файловую систему
Control Groups: управление
mkdir /dev/cgroup
mount -t cgroup none /dev/cgroup
mkdir /dev/cgroup/0
cd /dev/cgroup/0
echo $$ > tasks
cat /proc/self/cgroup
/etc/init.d/httpd start
Control Groups: история
• Вначале были cpusets от Bull/SGI
– Для привязки групп задач к NUMA узлам
• Paul Menage из Google разделил cpusets
на инфраструктуру (группировки) и
контроллеры
– сpusets теперь просто один из контроллеров
– можно добавлять другие
Memory Controller
• Контролирует память пользователя и page
cache
• Reclamation (утилизация? Переработка?)
– как в try_to_free_pages()
• Out-of-memory killer
MemCtrl: интерфейс
# echo 4M > memory.limit_in_bytes
# cat memory.limit_in_bytes
4194304
# cat memory.usage_in_bytes
172032
# cat memory.max_usage_in_bytes
294912
# cat memory.failcnt
0
# cat memory.stat
....
Память пользователя
Возвраща-
емые VMA
(mmap'ed
files)
Неисполь-
зуемые
страницы
Исполь-
зуемые
страницы
Невозвра-
щаемые
VMA
(private and
anon)
Длина маппингов
RSS
Адресное пространство процесса
Повестка дня (aka Agenda)
• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• OpenVZ user beancounters, эксплойты
• CGroups и memory controller
• TODO
Светлое будущее (TODO)
• Kernel memory controller (уже в -mm)
• Учёт длины маппингов
• «Честный» учёт разделяемых страниц
• Чекпоинтинг
• I/O controller
• Всё, что есть в OpenVZ, портировать в Linux
Вопросы?
kir@openvz.org
http://wiki.openvz.org/UBC
containers@linux-foundation.org

More Related Content

What's hot

ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущегоAlex Chistyakov
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Ontico
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Ontico
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Ontico
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел ЕмельяновЖивая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел ЕмельяновOpenVZ
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Ontico
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Пространства имен Linux (linux namespaces)
Пространства имен Linux (linux namespaces)Пространства имен Linux (linux namespaces)
Пространства имен Linux (linux namespaces)OSLL
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFSOSLL
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDAlex Chistyakov
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаКонстантин Никифоров
 

What's hot (20)

ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел ЕмельяновЖивая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Пространства имен Linux (linux namespaces)
Пространства имен Linux (linux namespaces)Пространства имен Linux (linux namespaces)
Пространства имен Linux (linux namespaces)
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFS
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 

Viewers also liked

C artilla mastitis montaje ok1 MSD Salud Animal Salud Lechera
C artilla mastitis montaje ok1 MSD Salud Animal Salud LecheraC artilla mastitis montaje ok1 MSD Salud Animal Salud Lechera
C artilla mastitis montaje ok1 MSD Salud Animal Salud LecheraMSD Salud Animal
 
CFA Level II Results
CFA Level II ResultsCFA Level II Results
CFA Level II ResultsXiang Qiu
 
letter of apperication
letter of appericationletter of apperication
letter of appericationJohn K.
 
Alison Diploma.PDF
Alison Diploma.PDFAlison Diploma.PDF
Alison Diploma.PDFMohamed Emam
 
Apresentação AeA Eventos 2011
Apresentação AeA Eventos 2011Apresentação AeA Eventos 2011
Apresentação AeA Eventos 2011Marcos Brasil
 
Mapas Conceptuales
Mapas ConceptualesMapas Conceptuales
Mapas ConceptualesJordi Guim
 
Ead antes e depois da cibercultura
Ead antes e depois da ciberculturaEad antes e depois da cibercultura
Ead antes e depois da ciberculturaEunice_Mirian
 
2 Ingreso 2010
2 Ingreso 20102 Ingreso 2010
2 Ingreso 2010f.equitas
 
Seminrio ciber
Seminrio ciberSeminrio ciber
Seminrio ciberlauzemir
 
Presentacion Practs Pedagogs Fesad
Presentacion Practs Pedagogs FesadPresentacion Practs Pedagogs Fesad
Presentacion Practs Pedagogs Fesadjaimeatorres
 
Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...
Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...
Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...RRI Tools
 

Viewers also liked (20)

C artilla mastitis montaje ok1 MSD Salud Animal Salud Lechera
C artilla mastitis montaje ok1 MSD Salud Animal Salud LecheraC artilla mastitis montaje ok1 MSD Salud Animal Salud Lechera
C artilla mastitis montaje ok1 MSD Salud Animal Salud Lechera
 
CFA Level II Results
CFA Level II ResultsCFA Level II Results
CFA Level II Results
 
letter of apperication
letter of appericationletter of apperication
letter of apperication
 
Alison Diploma.PDF
Alison Diploma.PDFAlison Diploma.PDF
Alison Diploma.PDF
 
Apresentação AeA Eventos 2011
Apresentação AeA Eventos 2011Apresentação AeA Eventos 2011
Apresentação AeA Eventos 2011
 
Mgst apresentação 1
Mgst   apresentação 1Mgst   apresentação 1
Mgst apresentação 1
 
Mapas Conceptuales
Mapas ConceptualesMapas Conceptuales
Mapas Conceptuales
 
Walkto afagnand back
Walkto afagnand backWalkto afagnand back
Walkto afagnand back
 
Ead antes e depois da cibercultura
Ead antes e depois da ciberculturaEad antes e depois da cibercultura
Ead antes e depois da cibercultura
 
Napoleon Arap
Napoleon  ArapNapoleon  Arap
Napoleon Arap
 
Kill phone-number-v.0.9
Kill phone-number-v.0.9Kill phone-number-v.0.9
Kill phone-number-v.0.9
 
CV
CVCV
CV
 
2 Ingreso 2010
2 Ingreso 20102 Ingreso 2010
2 Ingreso 2010
 
Guida
GuidaGuida
Guida
 
Seminrio ciber
Seminrio ciberSeminrio ciber
Seminrio ciber
 
Presentacion Practs Pedagogs Fesad
Presentacion Practs Pedagogs FesadPresentacion Practs Pedagogs Fesad
Presentacion Practs Pedagogs Fesad
 
Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...
Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...
Accés Obert, Igualtat de Gènere i Recerca Responsable: aspectes clau a Horitz...
 
Marketing digital
Marketing digitalMarketing digital
Marketing digital
 
Kablelink Testimonial
Kablelink TestimonialKablelink Testimonial
Kablelink Testimonial
 
Guerra dos Colossos
Guerra dos ColossosGuerra dos Colossos
Guerra dos Colossos
 

Similar to Управление ресурсами в Linux и OpenVZ

Containers in real world презентация
Containers in real world презентацияContainers in real world презентация
Containers in real world презентацияPavel Odintsov
 
Использование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаИспользование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаYandex
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Computer Science Club
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...Mail.ru Group
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101Nadzeya Pus
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условияхOpenVZ
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Yandex
 
Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1Aleksey Bragin
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Ontico
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting Yandex
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Ontico
 
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise LinuxКорпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise LinuxSkillFactory
 

Similar to Управление ресурсами в Linux и OpenVZ (20)

Containers in real world презентация
Containers in real world презентацияContainers in real world презентация
Containers in real world презентация
 
Использование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаИспользование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостинга
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
 
Sivko
SivkoSivko
Sivko
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
 
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise LinuxКорпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
 

More from OpenVZ

PFcache - LinuxCon 2015
PFcache - LinuxCon 2015PFcache - LinuxCon 2015
PFcache - LinuxCon 2015OpenVZ
 
Speeding up ps and top
Speeding up ps and topSpeeding up ps and top
Speeding up ps and topOpenVZ
 
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 EmelyanovOpenVZ
 
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 EmelyanovOpenVZ
 
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 KolyshkinOpenVZ
 
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015
Тестирование ПО, основанного на сторонних компонентах - Денис Силаков, SECR 2015OpenVZ
 
Живая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел ЕмельяновЖивая миграция: плюсы, минусы и подводные камни - Павел Емельянов
Живая миграция: плюсы, минусы и подводные камни - Павел ЕмельяновOpenVZ
 
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 BronnikovOpenVZ
 
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий МонаховПроблема фрагментации виртуальных дисков и способы её решения -- Дмитрий Монахов
Проблема фрагментации виртуальных дисков и способы её решения -- Дмитрий МонаховOpenVZ
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировOpenVZ
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан КупреевOpenVZ
 
LibCT и контейнеры на уровне приложений -- Александр Бурлука
	LibCT и контейнеры на уровне приложений -- Александр Бурлука	LibCT и контейнеры на уровне приложений -- Александр Бурлука
LibCT и контейнеры на уровне приложений -- Александр Бурлука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 VaginOpenVZ
 
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 EmelyanovOpenVZ
 
CGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel EmelyanovCGroups kernel memory controller -- Pavel Emelyanov
CGroups kernel memory controller -- Pavel EmelyanovOpenVZ
 
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...OpenVZ
 
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 KolyshkinOpenVZ
 
Openvz booth
Openvz boothOpenvz booth
Openvz boothOpenVZ
 
Containers in a file
Containers in a fileContainers in a file
Containers in a fileOpenVZ
 
Optimizing FUSE for Cloud Storage
Optimizing FUSE for Cloud StorageOptimizing FUSE for Cloud Storage
Optimizing FUSE for Cloud StorageOpenVZ
 

More from 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 и контейнеры на уровне приложений -- Александр Бурлука
 
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
 
Containers in a file
Containers in a fileContainers in a file
Containers in a file
 
Optimizing FUSE for Cloud Storage
Optimizing FUSE for Cloud StorageOptimizing FUSE for Cloud Storage
Optimizing FUSE for Cloud Storage
 

Управление ресурсами в Linux и OpenVZ

  • 2. Повестка дня (aka Agenda) • Зачем и какие ресурсы контролировать? • Немного про контейнеры • Существующие механизмы, их недостатки • OpenVZ user beancounters, эксплойты • CGroups и memory controller • TODO
  • 3. Повестка дня (aka Agenda) • Зачем и какие ресурсы контролировать? • Немного про контейнеры • Существующие механизмы, их недостатки • OpenVZ user beancounters, эксплойты • CGroups и memory controller • TODO
  • 4. Ресурсы: зачем контролировать? • Ресурсы не бесконечны • Сервер один, задач и пользователей много • Нужна статистика по использованию • Нужна защита от DoS атак • Нужно обеспечить качество сервиса – не только лимиты, но и гарантии
  • 5. Ресурсы: что контролировать? • Процессор • Оперативная память и подкачка (swap) • Дисковое пространство • Дисковый ввод-вывод (I/O bandwidth) • Сеть (сокеты, буфера, bandwidth и т.п.) • Прочее
  • 6. Процессор Процессорное время раздаётся процессам маленькими временными отрезками • Приоритеты (веса) • Ограничения сверху (лимиты) • Привязка к конкретным процессорам (для многопроцессорных систем)
  • 7. Оперативная память • Память уровня пользователя – Виртуальная (VM) и физическая (RSS) – page cache • Память ядра – Различные объекты / механизмы выделения – Особый случай: сетевые буфера • Пространство подкачки (swap)
  • 8. Диск • Место • Пропускная способность ввода-вывода – Чтение и запись – Отображения памяти (mmap) – Подкачка (swapin/swapout) • Статистика ввода-вывода
  • 9. Сеть • Тут всё уже решено, говорить не о чем – ...более или менее • TC: traffic control – Шейпинг, шедалинг, политики, ... • iptables
  • 10. Повестка дня (aka Agenda) • Зачем и какие ресурсы контролировать? • Немного про контейнеры • Существующие механизмы, их недостатки • OpenVZ user beancounters, эксплойты • CGroups и memory controller • TODO
  • 11. Контейнеры — это ... • такая легковесная виртуализация • много контейнеров поверх единого ядра • совсем как VM, только – одна ОС (хотя м.б. разные дистрибутивы) – «родная» производительность – высокая плотность размещения – динамическое управление ресурсами
  • 12. Примеры контейнеров • OpenVZ • Parallels Virtuozzo Containers • FreeBSD jails • Linux-VServer • Solaris Containers/Zones • IBM AIX6 WPARs (Workload Partitions)
  • 13. HP labs: OpenVZ vs Xen • Накладные расходы Xen больше • Накладными расходами OpenVZ зачастую можно пренебречь • Под Xen работало 4 копии интернет- магазина и сервер уже был перегружен, под OpenVZ заработало 6 без перегрузки
  • 14. Контейнеры: шаг в эволюции ОС • Многозадачные ОС • Многопользовательские ОС • Многоконтейнерные ОС
  • 15. Контейнеры и управление ресурсами • Обеспечить мирное сосуществование множества контейнеров • С точки зрения управления ресурсами, контейнеры — это просто группы процессов!
  • 16. Повестка дня (aka Agenda) • Зачем и какие ресурсы контролировать? • Немного про контейнеры • Существующие механизмы, их недостатки • OpenVZ user beancounters, эксплойты • CGroups и memory controller • TODO
  • 17. Процессор • Каждый процесс имеет nice value, можно менять «по дороге» (nice/renice) • Есть приоритет реального времени и отдельная очередь процессов для него • Жёсткий лимит на процессорное время процесса (ulimit -c)
  • 18. Место на диске • Стандартные UNIX квоты очень хороши – квоты на точку монтирования – для пользователей и для групп – мягкие и жёсткие лимиты, грейс-период – можно узнать текущие значения – можно менять лимиты «по дороге» – приложения ожидают отказов (или должны)
  • 19. Всё остальное: ulimit • Реализован системными вызовами setrlimit() и getrlimit() • Контролирует 16 разных параметров: core file size, data segment size, scheduling priority, file size, pending signals, max locked memory, max memory size, number of open files, pipe size, POSIX message queues, real-time priority, stack size, cpu time, max user processes, virtual memory, file locks • Есть «мягкие» и «жёсткие» лимиты
  • 20. ulimit $ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 38400 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
  • 21. У ulimit много проблем • Далеко не все ресурсы учитываются • Нельзя посмотреть текущее использование • Лимиты выставляются в текущем контексте • Все лимиты выставляются на процесс – кроме NPROC, который на пользователя • Лимиты на память в основном игнорируются
  • 22. Повестка дня (aka Agenda) • Зачем и какие ресурсы контролировать? • Немного про контейнеры • Существующие механизмы, их недостатки • OpenVZ user beancounters, эксплойты • CGroups и memory controller • TODO
  • 23. OpenVZ beancounters • Контролирует группы процессов • 20 различных параметров • Все можно менять во время выполнения • Для каждого параметра можно видеть: – Текущее значение, пиковое значение – Счётчик отказов в выделении ресурса
  • 24. UBC DEMO cat /proc/user_beancounters uid resource held maxheld barrier limit failcnt 123: kmemsize 1736835 5504975 5505024 5872024 43 lockedpages 0 0 32 32 0 privvmpages 7550 29061 256000 270000 0 shmpages 45 45 8192 8192 0 dummy 0 0 0 0 0 numproc 27 28 75 75 0 physpages 4167 5318 0 2147483647 0 vmguarpages 0 0 6144 2147483647 0 oomguarpages 4167 5318 6144 2147483647 0 numtcpsock 4 5 80 80 0 numflock 3 4 100 110 0 numpty 2 2 16 16 0 numsiginfo 0 2 256 256 0 tcpsndbuf 0 29212 319488 524288 0 tcprcvbuf 0 8552 319488 524288 0 othersockbuf 26736 74712 15000000 16000000 0 dgramrcvbuf 0 0 132096 132096 0 numothersock 22 24 80 80 0 dcachesize 130340 2097676 2097152 2195456 1 numfile 616 656 4096 4096 0 numiptent 0 0 128 128 0
  • 25. Exploit 1: dcache eater while(1) { mkdir(“somedir”, S_IRWXU); cd(“somedir”); }
  • 26. Exploit 2: vmarea eater prot = PROT_READ; for (start = 0; start < 10000; start += 4096) { mmap((void *)start, 4096, prot, MAP_PRIVATE | MAP_ANON, 0, 0); prot = (prot == PROT_READ)? PROT_WRITE : PROT_READ; } for (i=1; i < 1024; i++) fork();
  • 27. Другие механизмы OpenVZ • “Честный” планировщик процессов – веса (приоритеты) и жёсткие лимиты • Двухуровневая дисковая квота –I уровень: квоты на контейнер –II уровень: квоты внутри контейнера • Приоритет дискового ввода-вывода
  • 28. Повестка дня (aka Agenda) • Зачем и какие ресурсы контролировать? • Немного про контейнеры • Существующие механизмы, их недостатки • OpenVZ user beancounters, эксплойты • CGroups и memory controller • TODO
  • 29. Control Groups aka CGroups • Универсальный механизм для группировки процессов в иехархические группы • Различные контроллеры ресурсов • Можно иметь разные группы для разных контроллеров • Управляется через файловую систему
  • 30. Control Groups: управление mkdir /dev/cgroup mount -t cgroup none /dev/cgroup mkdir /dev/cgroup/0 cd /dev/cgroup/0 echo $$ > tasks cat /proc/self/cgroup /etc/init.d/httpd start
  • 31. Control Groups: история • Вначале были cpusets от Bull/SGI – Для привязки групп задач к NUMA узлам • Paul Menage из Google разделил cpusets на инфраструктуру (группировки) и контроллеры – сpusets теперь просто один из контроллеров – можно добавлять другие
  • 32. Memory Controller • Контролирует память пользователя и page cache • Reclamation (утилизация? Переработка?) – как в try_to_free_pages() • Out-of-memory killer
  • 33. MemCtrl: интерфейс # echo 4M > memory.limit_in_bytes # cat memory.limit_in_bytes 4194304 # cat memory.usage_in_bytes 172032 # cat memory.max_usage_in_bytes 294912 # cat memory.failcnt 0 # cat memory.stat ....
  • 35. Повестка дня (aka Agenda) • Зачем и какие ресурсы контролировать? • Немного про контейнеры • Существующие механизмы, их недостатки • OpenVZ user beancounters, эксплойты • CGroups и memory controller • TODO
  • 36. Светлое будущее (TODO) • Kernel memory controller (уже в -mm) • Учёт длины маппингов • «Честный» учёт разделяемых страниц • Чекпоинтинг • I/O controller • Всё, что есть в OpenVZ, портировать в Linux