FreeBSD virtual environment management and repository

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: