Article ID: 112740, created on Nov 8, 2012, last review on Sep 15, 2014

  • Applies to:
  • Virtuozzo
  • Virtuozzo containers for Linux
  • Virtuozzo hypervisor

Общая информация

В Parallels Virtuozzo Containers для Linux (PVC ), Parallels Server Bare Metal (PSMB) и Parallels Cloud Server (PCS) существует несколько схем управления ресурсами. Эта статья поможет вам понять суть каждой из этих схем и выбрать наиболее подходящую версию продукта для решения ваших задач.

Перед прочтением этой статьи рекомендуем ознакомиться со следующими терминами:

Выделение памяти - резервирование виртуальной памяти с помощью стандартных инструментов, например malloc(3).

Потребление памяти (или использование) - процесс хранения данных в ранее выделенной памяти.

Обычно используется не весь объем выделенной памяти, поэтому вы можете выделить намного больше памяти, чем доступно на компьютере.

Parallels Virtuozzo Containers для Linux, Parallels Server Bare Metal и Parallels Cloud Server позволяют управлять как выделением, так и потреблением памяти.

Ситуация, когда ограничение на общее потребление памяти для всех контейнеров превышает физически доступный объем памяти (оперативная память + подкачка), называется "перепродажа" (или овербукинг, превышение ресурсов и т.д.).

Мы рекомендуем установить такое ограничение на потребление памяти, при котором общее потребление памяти не превышает физически доступный объем памяти.

В Parallels Virtuozzo Containers 4.7 для Linux, Parallels Server 5 Bare Metal и Parallels Cloud Server был добавлен параметр VM_OVERCOMMIT, который показывает реальную разницу между объемом памяти, разрешенным для выделения, и объемом памяти, разрешенным для потребления.

В предыдущих версиях не было такого быстрого способа измерить ограничения на выделение и потребление памяти.

Итак, далее в этой статье термин превышение ресурсов будет означать разницу между ограничением на выделение памяти и ограничением на потребление памяти.

Схемы управления памятью

  • User Beancounters (UBC).

    Это изначальная система управления ресурсами, применявшаяся в Parallels Virtuozzo Containers и OpenVZ. Она позволяет устанавливать ограничения на выделение и потребление ресурсов индивидуально для каждого контейнера.

    Главное преимущество этой системы - возможность индивидуальной настройки того или иного контейнера в соответствии с требованиями конкретного набора установленных на нем приложений.

    Главным же ее недостатком является то, что она ориентирована на Linux и не интуитивна для пользователя. Кроме того, чтобы контролировать параметры выделения и потребления памяти и других ресурсов, ограничения необходимо устанавливать очень осторожно.

    Описание всех параметров UBC можно найти в следующей статье:

    112807 Ресурсы UBC в Parallels Virtuozzo Containers для Linux.

  • Service Level Management (SLM).

    Система SLM была введена в Parallels Virtuozzo Containers для Linux 3.0 (также доступна в Parallels Server 4 Bare Metal) и перестала использоваться начиная с Parallels Virtuozzo Containers 4.7, Parallels Server 5 Bare Metal и Parallels Cloud Server 6.0. Она была разработана для того, чтобы упростить управление ресурсами по сравнению с UBC за счет перехода к единому параметру - slmmemorylimit. Основное различие между SLM и UBC состоит в том, что в SLM используется только одно ограничение - slmmemorylimit, благодаря чему ресурсы памяти на контейнере можно настроить намного быстрее. Этот параметр имеет ограничения average и instant, которые работают совершенно по-другому, нежели ограничения barrier и limit в UBC.

    Параметр average определяет допустимое потребление памяти для контейнера аналогично (но не идентично) параметру oomguarpages в UBC.

    Параметр instant определяет максимально допустимое потребление памяти для контейнера. Контейнер не может использовать память сверх этого ограничения (но может превысить его при выделении памяти).

    SLM проверяет конфигурацию памяти на сервере каждые 15 секунд -- с помощью "tick" -- и выполняет заданные действия в зависимости от общего текущего состояния сервера. Если текущее использование памяти превышает ограничение average, определенное на основе предыдущих показателей, процессы соответствующего контейнера будут завершены, как это происходит в реальной системе, когда ядру необходимо освободить немного места для своих нужд. Алгоритм выбора таких процессов такой же, как у внутреннего механизма Linux OOM killer.

    Контейнер не может использовать выделенную память сверх ограничения instant -- как только использование достигнет этого ограничения и произойдет запрос на увеличение памяти, SLM завершит часть процессов, чтобы удержать объем использования ниже ограничения average.

    Мы настоятельно рекомендуем установить одинаковые значения параметров average и instant, чтобы избежать частого завершения процессов, особенно для контейнеров с долговечными службами, такими как базы данных

    К основным преимуществам системы SLM относятся простота ограничения ресурсов и способность работать с ресурсами UBC для тонкой настройки контейнера.

    Основными недостатками SLM являются сложное для интерпретации поведение ограничений average и instant и непредсказуемое поведение в случае нехватки физических ресурсов.

  • vSwap.

    Приняв во внимание сильные и слабые стороны SLM и UBC, мы разработали новую схему - vSwap, которая используется начиная с Parallels Virtuozzo Containers 4.7 для Linux, Parallels Server 5 Bare Metal и Parallels Cloud Server 6.0.

    Замена схемы SLM на схему vSwap происходит в процессе обновления с предыдущих версий PVCfL.

    Ограничения SLM и UBC считываются и преобразуются во внутренние ограничения vSwap во время запуска контейнеров; при этом в конфигурационные файлы не вносится никаких изменений, если это не было указано вручную в настройках vSwap.

    Схема vSwap позволяет быстро установить для контейнера ограничения на оперативную память и файл подкачки, а также настроить превышение памяти, в то время как остальные параметры рассчитываются Parallels Virtuozzo Containers для Linux на лету.

    Однако если вам необходима более точечная регулировка, вы можете индивидуально настроить и другие параметры UBC. Конфигурационные параметры контейнера будут "пересиливать" те, которые рассчитываются на лету.

Дополнительная информация

Более подробную информацию смотрите, пожалуйста, в следующих источниках:

1354 Что такое User Beancounters?

112807 Ресурсы UBC в Parallels Virtuozzo Containers для Linux.

Руководство пользователя Parallels Virtuozzo Containers 4.7 для Linux

Руководство администратора по управлению ресурсами UBC

Руководство пользователя Parallels Virtuozzo Containers 4.6 для Linux

OpenVZ Wiki

0dd5b9380c7d4884d77587f3eb0fa8ef 2897d76d56d2010f4e3a28f864d69223 e8e50b42231236b82df27684e7ec0beb d02f9caf3e11b191a38179103495106f a26b38f94253cdfbf1028d72cf3a498b

Email subscription for changes to this article
Save as PDF