32
Кирилл Колышкин [email protected] http://openvz.org/ Управление ресурсами в Linux и OpenVZ

колышкин Rootconf 2009 Openvz

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: колышкин Rootconf 2009 Openvz

Кирилл Колышкин[email protected]://openvz.org/

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

Page 2: колышкин Rootconf 2009 Openvz

Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?

• Немного про контейнеры

• Существующие механизмы, их недостатки

• Beancounters и CGroups

• Примеры атак и объяснения

• Вопросы, предложения, комментарии

Page 3: колышкин Rootconf 2009 Openvz

Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?

• Немного про контейнеры

• Существующие механизмы, их недостатки

• Beancounters и CGroups

• Примеры атак и объяснения

• Вопросы, предложения, комментарии

Page 4: колышкин Rootconf 2009 Openvz

Ресурсы: зачем контролировать?• Ресурсы не бесконечны

• Сервер один, задач и пользователей много

• Нужна статистика по использованию

• Нужна защита от DoS атак (лимиты)

• Нужно обеспечить качество сервиса (гарантии)

Page 5: колышкин Rootconf 2009 Openvz

Ресурсы: что контролировать?• Процессорное время

• Оперативная память и подкачка (swap)

• Дисковое пространство

• Дисковый ввод-вывод (I/O bandwidth)

• Сеть

• Всякое разное

Page 6: колышкин Rootconf 2009 Openvz

ПроцессорПроцессорное время раздаётся процессам

маленькими временными отрезками

• Приоритеты (веса)

• Ограничения сверху (лимиты)

• Привязка к конкретным процессорам(для многопроцессорных систем)

Page 7: колышкин Rootconf 2009 Openvz

Память• Память уровня пользователя

– Виртуальная (VM) и физическая (RSS)

• Память ядра– Различные объекты и механизмы выделения

– Особый случай: сетевые буфера

• Пространство подкачки (swap)

Page 8: колышкин Rootconf 2009 Openvz

Диск• Место

• Пропускная способность ввода-вывода– Чтение и запись

– Отображения памяти (mmap)

– Подкачка (swapin/swapout)

• Основная проблема: ввод-вывод отвязан

Page 9: колышкин Rootconf 2009 Openvz

Сеть• Тут всё уже решено, говорить не о чем

• TC: traffic control– Шейпинг, шедалинг, политики, ...

• iptables

Page 10: колышкин Rootconf 2009 Openvz

Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?

• Немного про контейнеры

• Существующие механизмы, их недостатки

• Beancounters и CGroups

• Примеры атак и объяснения

• Вопросы, предложения, комментарии

Page 11: колышкин Rootconf 2009 Openvz

Контейнеры — это ...• такая легковесная виртуализация

• много контейнеров поверх единого ядра

• совсем как VM, только– «родная» производительность

– высокая плотность размещения

– динамическое управление ресурсами

Page 12: колышкин Rootconf 2009 Openvz

Примеры контейнеров• OpenVZ

• Parallels Virtuozzo Containers

• FreeBSD jails

• Linux-VServer

• Solaris Containers/Zones

• IBM AIX6 WPARs (Workload Partitions)

Page 13: колышкин Rootconf 2009 Openvz

HP labs: OpenVZ vs Xen• Накладные расходы Xen больше

• Накладными расходами OpenVZзачастую можно пренебречь

• Под Xen работало 4 копии интернет-магазина и сервер уже был перегружен,под OpenVZ заработало 6 без перегрузки

Page 14: колышкин Rootconf 2009 Openvz

Контейнеры: шаг в эволюции ОС• Многозадачные ОС

• Многопользовательские ОС

• Многоконтейнерные ОС

Page 15: колышкин Rootconf 2009 Openvz

Контейнерыи управление ресурсами

• Обеспечить мирное сосуществование множества контейнеров

• С точки зрения управления ресурсами, контейнеры — это просто группы процессов!

Page 16: колышкин Rootconf 2009 Openvz

Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?

• Немного про контейнеры

• Существующие механизмы, их недостатки

• Beancounters и CGroups

• Примеры атак и объяснения

• Вопросы, предложения, комментарии

Page 17: колышкин Rootconf 2009 Openvz

Процессор• Каждый процесс имеет nice value,

можно менять «по дороге» (nice/renice)

• Есть приоритет реального времени и отдельная очередь процессов для него

• Жёсткий лимит на процессорное время(ulimit -c)

Page 18: колышкин Rootconf 2009 Openvz

Место на диске• Стандартные UNIX квоты очень хороши

– квоты на точку монтирования

– для пользователей и для групп

– мягкие и жёсткие лимиты, грейс-период

– можно узнать текущие значения

– можно менять лимиты «по дороге»

– приложения ожидают отказов (или должны)

Page 19: колышкин Rootconf 2009 Openvz

Всё остальное: 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

• Имеются «мягкие» и «жёсткие» лимиты

Page 20: колышкин Rootconf 2009 Openvz

У ulimit много проблем• Далеко не все ресурсы учитываются

• Нельзя посмотреть текущее использование

• Лимиты выставляются в текущем контексте

• Все лимиты выставляются на процесс– кроме NPROC, который на пользователя

• Лимиты на память в основном игнорируются

Page 21: колышкин Rootconf 2009 Openvz

Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?

• Немного про контейнеры

• Существующие механизмы, их недостатки

• Beancounters и CGroups

• Примеры атак и объяснения

• Вопросы, предложения, комментарии

Page 22: колышкин Rootconf 2009 Openvz

OpenVZ beancounters• Контролирует группы процессов

• 20 различных параметров

• Все можно менять во время выполнения

• Для каждого параметра можно видеть:– Текущее значение, пиковое значение

– Счётчик отказов в выделении ресурса

Page 23: колышкин Rootconf 2009 Openvz
Page 24: колышкин Rootconf 2009 Openvz
Page 25: колышкин Rootconf 2009 Openvz
Page 26: колышкин Rootconf 2009 Openvz
Page 27: колышкин Rootconf 2009 Openvz
Page 28: колышкин Rootconf 2009 Openvz
Page 29: колышкин Rootconf 2009 Openvz
Page 30: колышкин Rootconf 2009 Openvz
Page 31: колышкин Rootconf 2009 Openvz
Page 32: колышкин Rootconf 2009 Openvz

ulimit$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 38400max locked memory (kbytes, -l) 32max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 1024virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited