Рост популярности контейнеров и их использование в совокупности с контрольными группами выявили серьезную проблему масштабируемости, которая приводит к значительному падению производительности на больших машинах. Проблема в том, что время обхода SLAB-кэшей зависит квадратично от количества контейнеров, а активное потребление больших объемов памяти за короткий период может стать причиной ухода системы в busy loop, потребляющий 100% процессорного времени. Сегодня мне хотелось бы рассказать, как мы решили эту проблему, изменив алгоритм учета использования контрольной группой memcg объектов SLAB-кэшей и оптимизировав функцию shrink_slab().
Рубрика «openvz»
Как и зачем мы оптимизировали алгоритм очистки SLAB-кэшей в ядре Linux
2019-01-10 в 20:29, admin, рубрики: openvz, Блог компании Virtuozzo, виртуализация, коммьюнити, контейнеры, оптимизация ядра, Программирование, Разработка под Linux, хостинг, ядро LinuxVirtuozzo Storage: Реальный опыт эксплуатации, советы по оптимизации и решению проблем
2017-11-07 в 5:13, admin, рубрики: cluster, high availability, highload, linux, openvz, virtualization, virtuozzo, virtuozzo storage, высокая производительность, Настройка Linux, Серверное администрирование, системное администрированиеДанная статья посвящена реальному опыту эксплуатации кластеров на базе Virtuozzo Storage.
За год активного внедрения и использования платформы на серверах нашего хостинга, а также при создании кластеров для наших клиентов, у нас собралось достаточно много советов, замечаний и рекомендаций. Если вы задумались о внедрении этой платформы, вы сможете учесть наш опыт при проектировании своего кластера.
Читать полностью »
Производительность Bitrix Старт на Proxmox и Virtuozzo 7 & Virtuozzo Storage
2017-01-16 в 6:12, admin, рубрики: Apache, bitrix, CentOS, lxc, mariadb, mysql, nginx, openvz, parallels cloud storage, php, php 5.6, PHP 7, php-fpm, php5, php7, proxmox, redis, selectel, virtuozzo, virtuozzo storage, zfs, битрикс, виртуализация, Настройка Linux, Серверная оптимизация, Серверное администрирование, системное администрирование
Тестирование производительности Bitrix Старт на двух принципиально разных платформах.
Замерять будем при помощи встроенной панели производительности Bitrix.
C одной стороны, бесплатная версия Proxmox 4.4, LXC контейнеры с использованием файловой системы ZFS на SSD дисках.
С другой стороны, лицензионная Virtuozzo 7 CT + Virtuozzo Storage. В этом варианте мы используем обычные SATA диски + SSD для кеша записи и чтения.
Мы учитываем, что Virtuozzo 7 является коммерческой системой, требующей обязательного лицензирования, а Proxmox 4 можно использовать бесплатно, но без технической поддержки.
По этой причине, полноценно сравнивать две платформы конечно не корректно, но если
интересно узнать как можно увеличить производительность сайта используя одно и тоже железо, одинаковую конфигурацию виртуальных машин и ее сервисов, то данная статья может быть вам полезна.
Читать полностью »
Как обновить ядро в системе без перезапуска сервисов (пошаговая инструкция)
2016-12-27 в 6:11, admin, рубрики: checkpoint, containers, CRIU, docker, kernel, kexec, linux, open source, openvz, systemd, travis, travis-ci, Ubuntu, virtuozzo, vz, Блог компании Virtuozzo, Разработка под Linux, системное программированиеКак вы думаете на сколько реально зайти на машину по ssh, обновить систему, загрузить новое ядро и при этом оставаться в той же ssh сессии. Сейчас есть модное движения по обновлению ядра на лету (ksplice, KernelCare, ReadyKernel, etc), но у этого способа есть много ограничений. Во-первых, он не позволяет применять изменения, которые меняют структуру данных. Во-вторых, объекты в памяти могут уже содержать неверные данные, которые могут вызвать проблемы в дальнейшем. Здесь будет описан более «честный» способ обновить ядро. На самом деле, сам способ уже давно известен [1], а ценность этой статьи в том, что мы разберем все в деталях на реальном примере, поймем на сколько это просто или сложно, и чего стоит ждать от подобных экспериментов.
Читать полностью »
Shared Folders в OpenVZ 7.0
2016-09-12 в 10:03, admin, рубрики: linux, openvz, shared folders, systemd, виртуализация, контейнерНовый OpenVZ 7.0 является гибридом старого доброго OpenVZ и коммерческого Virtuozzo. Хотелось бы думать, что он взял лучшее от обоих родителей, но это не так. В данном случае под нож попал функционал Shared Folders.
Ранее в OpenVZ данная задача решалась .mount-файлами (подробнее тут). Но теперь контейнеры называются как-нибудь так «600adc12-0e39-41b3-bf05-c59b7d26dd73» и создание файла 600adc12-0e39-41b3-bf05-c59b7d26dd73.mount проблему не решает, он просто игнорируется при запуске. Конечно, наличие папки /vz/private/600adc12-0e39-41b3-bf05-c59b7d26dd73/scripts намекает, что возможен запуск каких-то скриптов, но найти документацию об этом не удалось.
В Virtuozzo Shared Folders были реализованы через prlctl set, но в OpenVZ этот функционал портирован не был. Не верите — проверка под катом.
Читать полностью »
Java и ограничения памяти в контейнерах: LXC, Docker и OpenVZ
2016-07-27 в 8:20, admin, рубрики: containers, docker, java, jelastic, lxc, openvz, Блог компании Jelastic, докер, контейнеры, памятьНедавно была опубликована информативная статья Мэтта Уильямса о Java в Docker и существующих ограничениях памяти. Автор поднимает интересную тему о скрытой проблеме ограничения памяти, с которой пользователи могут столкнуться во время работы с контейнерами.
Большое количество репостов и лайков показывает, что данная тема довольно популярна среди Java-разработчиков.
Поэтому хотелось бы более подробно проанализировать данную проблему и определить возможные пути ее решения.
Проблема
Мэтт описывает свое ночное «путешествие» в контейнере Docker со стандартным поведением памяти JVM. Он обнаружил, что ограничения RAM отображаются некорректно внутри контейнера. В результате, приложение Java, или любое другое, видит общий объем ресурсов оперативной памяти, выделенной для всей хост-машины, а JVM не может указать, сколько ресурсов было предоставлено родительскому контейнеру для работы. Это приводит к ошибке OutOfMemoryError, вызванной неправильным поведением динамической памяти JVM в контейнере.
Фабио Кунг, из Heroku, подробно описал основные причины возникновения этой проблемы в своей недавней статье "Память внутри контейнеров Linux. Или почему в контейнере Linux не работает free и top?"
Большинство инструментов Linux, предоставляющих метрики ресурсов системы, были созданы в то время, когда cgroups еще не существовали (например: free и top, как у procps). Они обычно читают метрики памяти из файловой системы proc: /proc/meminfo, /proc/vmstat, /proc/PID/smaps и других.
Читать полностью »
Новая версия OpenVZ
2016-07-26 в 15:03, admin, рубрики: CRIU, open source, openvz, virtuozzo, Блог компании Virtuozzo, контейнервкаждыйдом, системное программированиеВесной прошлого года мы рассказали почему Virtuozzo переходит на открытую модель разработки и какой смысл открывать исходный код коммерческого продукта. Вчера мы анонсировали выпуск финальной версии OpenVZ 7.0, образованного в результате слияния кодовых баз открытой системы контейнерной виртуализации OpenVZ и коммерческого продукта Virtuozzo (Parallels Cloud Server). Новый выпуск OpenVZ содержит множество изменений и мы по порядку расскажем о каждом из них.
Читать полностью »
Проблемы после миграции с openvz на lxc в Proxmox 4.x
2016-03-09 в 13:02, admin, рубрики: lxc, openvz, proxmox, виртуализация, Настройка Linux
К сожалению, развитие openvz зашло в определенный тупик, платный вариант virtuozo сильно ушел по кодовой базе в бок и в какой-то момент оказалось, что openvz работает только на старом ядре версии 2.6.32, а работы по слиянию openvz и virtuozo7 идут, сказать честно, не быстро.
Собственно это подтолкнуло команду proxmox в версии 4.0 отказаться от openvz в пользу lxc и ядра версии 4.2.6. К сожалению, команда proxmox совершенно не уделила внимания тестированию lxc в proxmox, всем, кто хочет хочет мигрировать с openvz, я настоятельно рекомендую воздержаться.
Ниже я расскажу о всех трудностях и проблемах после миграции на lxc.Читать полностью »