колышкин Rootconf 2009 Openvz
-
Upload
highload-2009 -
Category
Technology
-
view
317 -
download
1
description
Transcript of колышкин Rootconf 2009 Openvz
Кирилл Колышкин[email protected]://openvz.org/
Управление ресурсамив Linux и OpenVZ
Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• Beancounters и CGroups
• Примеры атак и объяснения
• Вопросы, предложения, комментарии
Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• Beancounters и CGroups
• Примеры атак и объяснения
• Вопросы, предложения, комментарии
Ресурсы: зачем контролировать?• Ресурсы не бесконечны
• Сервер один, задач и пользователей много
• Нужна статистика по использованию
• Нужна защита от DoS атак (лимиты)
• Нужно обеспечить качество сервиса (гарантии)
Ресурсы: что контролировать?• Процессорное время
• Оперативная память и подкачка (swap)
• Дисковое пространство
• Дисковый ввод-вывод (I/O bandwidth)
• Сеть
• Всякое разное
ПроцессорПроцессорное время раздаётся процессам
маленькими временными отрезками
• Приоритеты (веса)
• Ограничения сверху (лимиты)
• Привязка к конкретным процессорам(для многопроцессорных систем)
Память• Память уровня пользователя
– Виртуальная (VM) и физическая (RSS)
• Память ядра– Различные объекты и механизмы выделения
– Особый случай: сетевые буфера
• Пространство подкачки (swap)
Диск• Место
• Пропускная способность ввода-вывода– Чтение и запись
– Отображения памяти (mmap)
– Подкачка (swapin/swapout)
• Основная проблема: ввод-вывод отвязан
Сеть• Тут всё уже решено, говорить не о чем
• TC: traffic control– Шейпинг, шедалинг, политики, ...
• iptables
Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• Beancounters и CGroups
• Примеры атак и объяснения
• Вопросы, предложения, комментарии
Контейнеры — это ...• такая легковесная виртуализация
• много контейнеров поверх единого ядра
• совсем как 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)• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• Beancounters и CGroups
• Примеры атак и объяснения
• Вопросы, предложения, комментарии
Процессор• Каждый процесс имеет 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 много проблем• Далеко не все ресурсы учитываются
• Нельзя посмотреть текущее использование
• Лимиты выставляются в текущем контексте
• Все лимиты выставляются на процесс– кроме NPROC, который на пользователя
• Лимиты на память в основном игнорируются
Повестка дня (aka Agenda)• Зачем и какие ресурсы контролировать?
• Немного про контейнеры
• Существующие механизмы, их недостатки
• Beancounters и CGroups
• Примеры атак и объяснения
• Вопросы, предложения, комментарии
OpenVZ beancounters• Контролирует группы процессов
• 20 различных параметров
• Все можно менять во время выполнения
• Для каждого параметра можно видеть:– Текущее значение, пиковое значение
– Счётчик отказов в выделении ресурса
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