2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !
Внимание! Данные страницы описывают CBSD версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.
Bhyve топология CPU
Команда cpu-topology vm-cpu-topology vm-cpu-topology-tui
% cbsd cpu-topology % cbsd vm-cpu-topology vm-cpu-topology-tui % cbsd vm-cpu-topology-tui
Внимание! CBSD работает с топологией CPU bhyve через новый метод. Убедитесь что ваша система поддерживает его: D9930
Описание:
Конфигурирование и просмотр топологии CPU виртуальной машины bhyve.
Регулировка топологии CPU виртуальных машин может производится для повышения производительности и оптимизации вычислительных операций, так и в различных задачах, связанных с тестированием.
При исполнении виртуальных машин важно понимать, что с точки зрения хостера, виртуальные процессоры виртуальной машины являются обычными процессами (в случае с bhyve, отдельный vcpu является тредом в хостер системе).
Предполагается, что пользователь имеет минимальное представление об устройстве CPU, памяти и NUMA-доменов. Кроме того, для эффективной настройки важно понимать тип деятельности и сервисов ОС конкретного гостя. Наиболее важным является понимание работы L1,L2 и L3 кешей и работа процессора с определенными блоками памяти.
Напомним, что L1,L2 кеш - это кеш для одного ядра, тогда как L3 и выше - это кеш на весь процессор (сокет).
Меняя топологию гостевой операционной системы, вы можете определять различные конфигурации виртуальных процессоров как количество сокетов, количество ядер на сокет и их размещение, а также наличие гипертрединга.
К примеру, имея 8 ядер, вы можете их сконфигурировать как:
- 1 сокет (виртуальный микропроцессор) по 8 ядер, без гипертрединга ( FreeBSD/SMP: 1 package(s) x 8 core(s) )
- 1 сокет по 4 ядра, но с гипертредингом ( FreeBSD/SMP: 1 package(s) x 4 core(s) x 2 hardware threads)
- 2 сокета по 2 ядра и гипертредингом ( FreeBSD/SMP: 2 package(s) x 2 core(s) x 2 hardware threads)
- 4 сокета по 2 ядра каждый ( FreeBSD/SMP: 4 package(s) x 2 core(s) )
- и т.д.
Как таковая конфигурация топологии виртуальной машины никак не сказывается быстродействии самой виртуальной машины:
Данные конфигурации становятся важными, совместно с настройками привязывания ядер виртуальной машины к конкретной группе ядер физического сервера ( set_affinity, cpu-pinning ), о чем будет рассказано отдельно. Цель же данной статьи - рассмотреть возможности bhyve и работа с его конфигурацией через CBSD.
Для просмотра текущей топологии со стороны хостера, служит команда cbsd cpu-topology. Помимо информации о текущей системе, вы сможете увидеть схематическое представление сокетов и ядер, которые обслуживают виртуальные окружения
Если виртуальная машина привязана к конкретному ядру физической машины, вы увидете ее имя напротив данного ядра определенного сокета. Если привязок нет, напротив каждого ядра будут все виртуальные окружения - поскольку у них нет ограничений на использование тех или иных ядер и они могут мигрировать, чем обязаны шедулеру ОС:
Сокет - это непосредственно физический процессор (package) на вашей материнской плате. Если процессор поддерживат гипер-трединг (и он включен), виртуальные ядра будут помечены как THR
Вы можете создать любое количество профилей для топологии. Просмотреть их список можно по команде vm-cpu-topology:
Удалять или добавлять новые вы можете через TUI интерфейс команды vm-cpu-topology-tui
Имена профилей должны быть уникальные и применение той или иной топологии выполняется через команду bset, bconfig. А также, выбор топологий будет доступен при создании виртуальной машины в bconstruct-tui: