Не забывайте развиваться профессионально и лично!
30 июля 2021 г.
SysAdminDay - 2021
Не забывайте развиваться профессионально и лично!
26 июля 2021 г.
VMware и NUMA: результаты оптимизации конфигурации памяти VM
В прошлый раз в посте "VMware и NUMA: выбор правильного размера памяти VM" я рассказал о NUMA архитектуре, NUMA узлах (NUMA nodes) и о том, как оптимально сконфигурировать размер памяти виртуальной машины с учётом этих особенностей. Показал на своём примере, что можно создать не оптимально работающую виртуальную машину. При работе такой виртуальной машины процессор, обращаясь к оперативной памяти, не всегда может попадать в локальный NUMA узел. Это увеличивает задержки при обращении к памяти и снижает производительность виртуальной машины и приложений, работающих на ней.
После публикации поста мне удалось изменить конфигурацию одной из не оптимально настроенных виртуальных машин. И сегодня я хочу рассказать о результатах.
Итак, я говорю про виртуальную машину из прошлого поста с 8 vCPU и 96 Гб памяти, которая работает на сервере с NUMA узлом = 16 ядер (с учётом HT) + 96 Гб. Как вы помните, по статистике из команды esxtop при работе данной виртуальной машины только в 92% случаях процессор попадал в локальный NUMA узел (рис. 1).
![]() |
Рис. 1. Статистика по NUMA виртуальной машины 8 vCPU + 96 Гб до оптимизации. |
Проанализировав требования к оперативной памяти со стороны приложений, я понял, что спокойно могу снизить количество оперативной памяти виртуальной машины. Изменил настройки, уменьшив оперативную память VM с 96 Гб до 80 Гб (рис. 2).
![]() |
Рис. 2. Количество оперативной памяти сервера после изменения конфигурации. |
![]() |
Рис. 3. Статистика по NUMA виртуальной машины 8 vCPU + 96 Гб после оптимизации. |
Автор: Шиболов Вячеслав Анатольевич
16 июля 2021 г.
Пятница, танцуем
I got that Chameleon in my pocket, Got that Penguin at my feet...
Автор: Шиболов Вячеслав Анатольевич
13 июля 2021 г.
VMware и NUMA: выбор правильного размера памяти VM
Современные серверные решения на базе архитектуры x86, которые сейчас используются почти во всех программно-аппаратных комплексах, имеют некоторые нюансы. Многопроцессорные сервера, имеющие на материнской плате 2, 4 или даже 8 процессорных сокетов, являются по сути NUMA-архитектурой. NUMA (Non-Uniform Memory Architecture) означает, что каждый процессорный сокет имеет свой пул локальных модулей оперативной памяти и такая связка называется узлом NUMA (рис. 1).
![]() |
Рис. 1. UMA и NUMA архитектуры. |
Все процессорные ядра и вся оперативная память объединены в одну систему, но обращение процессора к своим (локальным) модулям памяти происходит с большей скоростью (или меньшими задержками), чем к памяти соседнего процессора.
Все современные операционные системы и программные решения более высокого уровня (например, виртуальный гипервизор или СУБД) понимают особенности этой архитектуры. В идеале, это понимание позволяет большинство операций выполнять с памятью локального процессора, не ходя в "дальние края" за памятью соседа.
vSphere от VMware тоже прекрасно разбирается в NUMA. При конфигурировании виртуальной машины (если вы не активируете опцию "Enable CPU Hot Add") и при её работе гипервизор будет размещать виртуальные процессорные ядра (vCPU) и память виртуальной машины в один узел NUMA. Причём, эта функция работает по умолчанию, ничего отдельно настраивать не надо.
Это всё прекрасно работает для небольших виртуальных машин, которые занимают гораздо меньше памяти, чем имеется в одном узле NUMA. Для работы большого количества таких относительно небольших виртуальных машин на одном сервере решения виртуализации и были прежде всего разработаны. Но у нас немного другой профиль - SAP системы, которые обычно требуют много ресурсов процессора и памяти.
Хочу на своём примере показать недостаточно корректную настройку размера виртуальных машин, с учётом NUMA архитектуры. На проекте, про который хочу рассказать, были сервера двух типов:
- 4-х сокетный сервер (8 ядер/16 потоков в каждом процессоре) и 384 Гб оперативной памяти,
- 2-х сокетный сервер (8 ядер/16 потоков в каждом процессоре) и 256 Гб оперативной памяти.
Понимая, всю ситуацию с NUMA архитектурой я разместил на серверах первого типа виртуальные машины с характеристиками:
- 16 vCPU + 192 Гб памяти,
- 8 vCPU + 96 Гб памяти.
- 8 vCPU + 96 Гб памяти.
Но после прокачки своих знаний по VMware, мне открылось, что я совершил ошибку при конфигурации объёмов памяти.
Для мониторинга работы виртуальных машин на узлах ESXi есть команда esxtop (аналог команды top в Linux) (рис. 2). Так вот, для мониторинга работы с памятью и NUMA диагностики, необходимо запустить команду esxtop, нажать "m", перейдя в мониторинг памяти. После этого нажать "f" и добавить к формату вывод статистику по NUMA (рис. 3).
![]() |
Рис. 2. Основной экран утилиты esxtop. |
![]() |
Рис. 3. Активация просмотра статистики по NUMA узлам. |
После этого на экране появится несколько важных полей:
- NHN - текущий домашний узел для виртуальной машины,
- NMIG - количество NUMA миграций с узла на узел,
- NRMEM (MB) - текущее количество "дальней памяти" (из соседней NUMA), используемой виртуальной машиной,
- NLMEM (MB) - текущее количество локальной памяти, используемой виртуальной машиной,
- N%L - текущий процент запрошенной виртуальной машиной памяти, являющейся локальной.
Последний параметр помогает проанализировать итог работы виртуальной машины на NUMA узлах. Если он равен 100%, значит производительность оптимальна. Если же ниже 100%, значит не всегда в процессе работы на реальных процессорных ядрах для текущей виртуальной машины идёт попадание в память локального узла NUMA.
По моей ситуации. Первые две большие виртуальные машины не всегда попадают в память локального NUMA узла (рис. 4 и 5). Напомню, что обе машины работают на серверах с размером узла NUMA = 16 ядер (с учётом HT) + 96 Гб.
![]() |
Рис. 4. Статистика по NUMA виртуальной машины 8 vCPU + 96 Гб. |
![]() |
Рис. 5. Статистика по NUMA виртуальной машины 16 vCPU + 192 Гб. |
"Небольшие" виртуальные машины, работающие на серверах второго типа (с размером узла NUMA = 16 ядер (с учётом HT) + 128 Гб памяти), отлично умещаются в локальных NUMA узлах (рис. 6). Забора "чужой" памяти нет, всё работает оптимально.
![]() |
Рис. 6. Статистика по NUMA виртуальной машины, работающей на сервере второго типа. |
Максим Мошков рекомендует пользоваться правилом при конфигурировании любых ресурсов в среде VMware - 80% ресурсов можно использовать, а 20% всегда оставлять на запас, накладные расходы и тому подобное.
Если у меня будет возможность, то я переконфигурирую данные виртуальные машины, которые не оптимально попадают в узлы NUMA. И потом поделюсь с вами результатами статистики.
Update: результаты оптимизации можно найти в этом посте.
Автор: Шиболов Вячеслав Анатольевич
8 июля 2021 г.
Сдача экзамена на сертификат VMware VCP-DCV 2021
- необходимо закрыть все приложения, кроме защищённого и открытого на весь экран приложения для сдачи,
- потребовали снять простые часы,
- проктор во время сдачи просил убрать руки от лица и так далее.
![]() |
Рис. 1. Сертификат VCP-DCV 2021. |
5 июля 2021 г.
В помощь системному администратору: MTPuTTY
На обучении по VMware, которое я проходил в конце мая, открыл для себя новую программу. Наверное, многие из вас знают и пользуются программой для доступа к Unix операционным системам - Putty? Это небольшая, компактная программа позволяет открывать терминалы по протоколам SSH и Telnet и выполнять административные задачи на серверах. Я упоминал о ней в своём посте "Программное обеспечение для администратора". Программа имеет аскетичный интерфейс: у программы одно основное окно, где можно выполнять настройки и вести список сохранённых сессий. Терминалы открываются в отдельных окнах (рис. 1).
![]() |
Рис. 1. Основное окно программы Putty и открытый терминал. |
Сохранённые сессии никак не организуются, хранятся в едином списке. Если хотите их сохранить и/или перенести на другой компьютер, то найти их можно в системном реестре Windows (рис. 2).
![]() |
Рис. 2. Ветка системного реестра с сохранёнными сессиями Putty. |
Программа, о которой я упоминал в начале поста - это MTPuTTY. Устанавливаются совместно с Putty и представляет собой надстройку над ней. То есть для работы терминалов используется стандартная, проверенная Putty. А данная утилита позволяет открывать все сессии во вкладках одного окна. Дополнительно возможна организация списка сохранённых сессий в древовидной структуре. Плюс есть возможность отправки скрипта (списка из команд) нескольким открытым сессиям. Утилита поддерживает сохранённые сессии из оригинального Putty, но переносить их в список этой программы и редактировать нельзя (рис. 3 - 1). Списки же самой MTPuTTY могут быть организованы гораздо удобнее (рис. 3 - 2).
![]() |
Рис. 3. Основное окно программы MTPuTTY. |
Второе отличие списков - хранит их программа не в системном реестре, а в xml-файле. Плюс есть функциональность для экспорта и импорта дерева сохранённых сессий во внешний xml-файл.
Сайт программы, откуда её можно скачать - тут. Так же там есть небольшая онлайн-справка в виде FAQ.
Мне программа понравилась, добавил её к своим инструментам администратора.
У кого есть свои открытия в плане программ-утилит в помощь системным администраторам, прошу делиться в комментариях.
Автор: Шиболов Вячеслав Анатольевич