Что На Самом Деле Предоставляют Системные Контейнеры? Где Их Следует Использовать?

Системные контейнеры, также известные как контейнеры операционной системы, являются близкими аналогами виртуальных машин.

Самым важным отличием от обычных виртуальных машин является то, что вместо гипервизора они используют пространства имен и инструменты ограничения ресурсов ядра операционной системы (обычно Linux) для виртуализации и изоляции ресурсов.



Что на самом деле предоставляют системные контейнеры? Где их следует использовать?

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

И сегодня, когда контейнерная инфраструктура уже доказала свою пригодность для размещения даже критически важных рабочих нагрузок, имеет смысл поговорить о том, какие приложения могут получить наиболее существенные преимущества от работы в контейнерах.



Контейнеры, виртуальные машины, серверы — кто быстрее?

В рекламных листовках часто утверждается, что контейнеры могут быть «такими же быстрыми, как физические серверы».

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

Однако это одностороннее утверждение – учитывая лишь один фактор из многих.

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

Такие результаты связаны со многими факторами, например с технологиями дедупликации одинаковых участков памяти в контейнерах или виртуальных машинах; лучшая эффективность кэша диска и локальность NUMA (так называемая неоднородная архитектура памяти) — когда виртуализация может привязать контейнер к одному узлу NUMA и в результате получить лучшую производительность.

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

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

Однако речь вообще не идет о реальной ситуации (поскольку запуск одной виртуальной машины на компьютере – это скорее сценарий для настольного компьютера, а не для сервера), и сравнивать производительность виртуальных машин некорректно.

контейнерные и физические рабочие нагрузки таким образом.

Но рассмотренный пример показывает, что производительность виртуальных машин, как и контейнеров, может быть очень близка к производительности «чистого железа» — всё зависит от условий.

Но это, конечно, не означает, что контейнеры и виртуальные машины одинаково хороши для всех задач.

И вот несколько примеров, подтверждающих это.



Реальные условия



Что на самом деле предоставляют системные контейнеры? Где их следует использовать?

Вот график теста производительности, в котором созданы несколько групп виртуальных серверов, на которых выполняется набор приложений, каждое со своей уникальной нагрузкой (так называемый Consolidation Stack Unit (CSU)).

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

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

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

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

Однако когда дело доходит до полной загрузки процессора, различия становятся очевидными.

Если у ЦП не осталось свободных циклов, он не может уделять время обслуживанию гипервизора без ущерба для приложения, и поэтому производительность экосистемы виртуальных машин перестает расти раньше экосистемы контейнеров.

Далее происходит то, что виртуальным машинам сначала не хватает системной памяти.

Дело в том, что виртуальные машины являются «черным ящиком» для гипервизора, тогда как в случае с контейнерами содержимое прозрачно и операционная система может использовать неиспользуемую иначе память, а также удалять дубликаты (копии файлов, загруженные в память несколько раз).

раз).

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

Вот еще один тест, различия еще более очевидны.

Так называемый сценарий «DVD-магазин» по характеру загрузки vConsolidate напоминает, но работает с приложением электронного магазина.



Что на самом деле предоставляют системные контейнеры? Где их следует использовать?

Здесь мы видим еще более заметные различия, которые объясняются особенностями конкретного приложения.

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

Вот еще несколько факторов, благодаря которым контейнеры работают лучше, чем виртуальные машины: Во-первых, контейнеры обеспечивают максимально быстрый запуск системы — буквально за доли секунды.

А это очень важно для микросервисов, которые постоянно запускаются, уничтожаются и пересоздаются.

Этот фактор также положительно влияет на любые гранулированные нагрузки, в рамках которых можно запускать нагрузки для решения небольших задач.

Во-вторых, системные контейнеры ОС Virtuozzo обладают уникальной функцией «pfcache».

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

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

Но не все контейнеры одинаковы.

В частности, согласно тестам, системные контейнеры Virtuozzo 7 демонстрируют максимальную плотность по сравнению с любым другим решением виртуализации Linux — на несколько процентов выше, чем у предыдущей версии (Virtuozzo 6) и примерно в два раза выше, чем у виртуальных машин на базе KVM. Для нас это чрезвычайно важно: производительность платформы — одна из основных причин, по которой наши клиенты выбирают Virtuozzo среди других платформ.

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

Сценарии из реальной жизни

Существует несколько сценариев, в которых использование системных контейнеров, и в частности наших новых контейнеров Virtuozzo 7, может принести максимальную пользу: Сценарий 1. Контейнеры чрезвычайно полезны, когда серверы работают с максимальной нагрузкой, особенно если загрузка не только ресурсов процессора, но и оперативной памяти приближается к 100%.

Фактически, это очень типичный случай при запуске систем анализа данных или пакетной обработки.

А если вы не оставляете резервные мощности для пиковых нагрузок, контейнеры помогут вам максимально эффективно использовать существующее оборудование.

Сценарий 2. Вы используете несколько копий одних и тех же или похожих приложений.

В этом случае pfcache может значительно повысить производительность всей экосистемы за счет освобождения памяти и оптимизации процессов ввода-вывода.

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

Обработка небольших запросов пользователей и переключение процессора на обработку задач от разных ВМ оказывается ресурсоемким и снижает производительность в случае традиционных ВМ.

Сценарий 4. Наличие большого количества мелких задач, работающих одновременно и конкурирующих за ресурсы.

В этом случае каждая виртуальная машина будет создавать свою дополнительную нагрузку на память (для загрузки структур ядра и гипервизора).

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



Курс эффективности

Не во всех случаях контейнеры дают принципиальные преимущества, но в своем спектре задач серьезно превосходят возможности гипервизоров с виртуальными машинами.

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

Более того, мы продолжаем улучшать функции Virtuozzo Containers, и в версии 7 улучшена как плотность контейнеров, так и производительность на том же оборудовании.

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

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

Теги: #Виртуализация #виртуальные машины #виртуальные машины #виртуальные машины #виртуализация контейнеров #виртуализация приложений

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.