Linux ядро для KVM

Материал из support.qbpro.ru

ДЕРНАЯ ОПТИМИЗАЦИЯ ДЛЯ KVM ХОСТ-СИСТЕМ

источник

Приведу необходимые и прочие полезные опции ядра Linux для работы KVM хост-систем . Статья подразумевает что Вы умеете конфигурировать и выполнять сборку и установку ядер. Способы оптимизации ядра для вирутальных или хост-систем.

Обязательные опции для хост-систем:

  • VIRTUALIZATION (находится в основном меню) -основная опция, для использования виртуализации
  • KVM (находится в Virtualization) - поддержка виртуализованных окружений на основе аппаратной виртуализации
  • KVM_INTEL (находится в Virtualization) - Поддержка виртуализации на процессорах Intel с VT-x расширением (Vanderpool)
  • KVM_AMD (находится в Virtualization) - Поддержка виртуализации на процессорах AMD с AMD-V расширением (Pacifica)

Полезные опции для хост-систем:

  • VHOST_NET (находится в Virtualization) - Драйвер ядра для ускорения сетевой подсистемы гостевых окружений посредством virtio_net
  • HIGH_RES_TIMER (находится в Processor type and features) -Поддержка таймера высокой точности
  • HPET (находится в Device Drivers -> Character devices) - Поддержка таймера событий высокой точности, используется для генерации высокоточных прерываний
  • COMPACTION (находится в Processor type and features) - Позволяет использовать компоновку памяти для выделения больших страниц
  • MIGRATION (находится в Processor type and features) - позволяет выполнять миграцию страниц памяти в физическом пространстве при неизменном виртуальном пространстве. Это может быть полезно в двух случаях:
  • в NUMA системах страницы размещаются в памяти доступной ближайшему процессору.
  • При выделении больших страниц, миграция страниц принадлежащих процессам более предпочтительна чем их возврат операционной системе.
  • KSM (находится в Processor type and features) -Разрешает использование KSM. Модуль ядра занимающийся поиском и объединением дублирующихся страниц в памяти, с целью экономии памяти.
  • TRANSPARENT_HUGEPAGE (находится в Processor type and features) - Включает возможность прозрачного использования Hugepages и HugeTLB там где это возможно. Использование Transparent Hugepages позволяет увеличить общую производительность приложений за счет ускорения доступа к памяти (будет полезно и для виртуальных окружений).
  • CGROUPS (находится в General setup) - Позволяет использовать CGroups для контроля и ограничения используемых ресурсов (память, процессора, дисковый ввод/вывод)

Опции для хост-систем имеющие поддержку IOMMU:

  • PCI_IOV (находится в Bus options (PCI etc.)) - Возможность физическим PCI устройствам создавать виртуальные устройства в которых используются общие физические ресурсы. Физические устройства должны иметь аппаратную поддержку такой возможности
  • PCI_PRI (находится в Bus options (PCI etc.)) - Интерфейс работы с памятью. Позволяет PCI устройствам работающих с IOMMU эффективней управляться с памятью
  • PCI_PASID (находится в Bus options (PCI etc.)) - PCI-устройства получают возможность одновременного доступа к нескольким адресным пространствам
  • IOMMU_SUPPORT (находится в Device Drivers) - Поддержка
  • AMD_IOMMU (находится в Device Drivers -> IOMMU Hardware Support) - Поддержка IOMMU для AMD оборудования
  • INTEL_IOMMU (находится в Device Drivers -> IOMMU Hardware Support) - Поддержка DMA Remapping для Intel оборудования. Виртуальная машина получает возможность работать напрямую с оборудованием минуя гипервизор.
  • INTEL_IOMMU_DEFAULT_ON (находится в Device Drivers -> IOMMU Hardware Support) - Включить использование DMA Remaping для всех устройств по умолчанию
  • IRQ_REMAP (находится в Device Drivers -> IOMMU Hardware Support) - поддержка изоляции и перенаправления прерываний в процессорах и устройствах ввода-вывода привязанных к гостевой системе
  • X86_X2APIC (находится в Processor type and features) - Включение расширенного контроллера прерываний на процессорах у которых есть такая возможность

LINUX ЯДРО ДЛЯ ВИРТУАЛЬНЫХ ОКРУЖЕНИЙ KVM

источник

Опции для виртуальных окружений:

  • VIRTIO - Использование паравиртуальных драйверов virtio. Включается с помощью VIRTIO_PCI или VIRTIO_BALLOON.
  • VIRTIO_NET (находится в Device Drivers -> Network device support) - Виртуальный сетевой virtio-драйвер.
  • VIRTIO_BLK (находится в Device Drivers -> Block devices) - Виртуальный блочный virtio-драйвер.
  • SCSI_VIRTIO (находится в Device Drivers -> SCSI device support -> SCSI low-level drivers) - Виртуальный virtio HBA-драйвер (появился начиная с версии 3.4.0).
  • VIRTIO_PCI (находится в Device Drivers -> Virtio Drivers) - Драйвер предоставляет поддержку virtio для PCI-устройств.
  • VIRTIO_BALLOON (находится в Device Drivers -> Virtio Drivers) - Драйвер позволяет на лету изменять размер памяти в виртуальном окружении.
  • VIRTIO_RING - Внутренний коммуникационный virtio-транспорт. Включается с помощью VIRTIO_PCI или VIRTIO_BALLOON.
  • VIRTIO_CONSOLE (находится в Device Drivers -> Character devices) - Вобщем случае используется для создания устройства которое будет использоваться для обмена данными между хост-системой и гостевым окружением.
  • HW_RANDOM_VIRTIO (находится в Device Drivers -> Character devices -> Hardware Random Number Generator Core support) - Драйвер предоставляющий на уровне ядра виртуальный генератор случайных чисел.
  • PCI_MSI (находится в Bus options (PCI etc.)) - Поддержка использования MSI (Message SignaledInterrupts) драйверами устройств.
  • PARAVIRT_GUEST (находится в Processor type and features) - Опции для паравиртуализованных окружений.
  • KVM_CLOCK (находится в Processor type and features-> Paravirtualized guest support) - Поддержка собственного таймера в виртуальном окружении.
  • KVM_GUEST (находится в Processor type and features-> Paravirtualized guest support) - Опции включающие различные оптимизации для окружений работающих с KVM гипервизором.
  • PARAVIRT (находится в Processor type and features-> Paravirtualized guest support) - Эта способность ядра модифицировать себя в случае когда оно работает под гипервизором, что потенциально увеличивает производительность еще больше чем в случаях полной виртуализации. Когда ядро запущено без гипервизора, теоретически оно работает медленнее.
  • MEMORY_HOTPLUG (находится в Processor type and features) - Возможность менять размер памяти на лету. Функция необходима для работы VIRTIO_BALLOON и KSM.
  • MEMORY_HOTREMOVE (находится в Processor type and features -> Allow for memory hot-add) - Возможность менять размер памяти на лету. Функция необходима для работы VIRTIO_BALLOON и KSM.
  • PROCESSOR_FAMILY (находится в Processor type and features) - Установка типа процессора в виртуальном окружении. Рекомендуется использовать Core2 или generic_x86_64. В общем случае это зависит от того с каким параметром -cpu выполняется запуск виртуальной машины.
  • ACPI_BUTTON (находится в Power management and ACPI options -> ACPI Support) - Драйвер обработки событий связанных с питанием. Опция необходима чтобы можно было корректно выключать виртуальное окружение из хост-системы.
  • HOTPLUG_PCI (находится в Bus options (PCI etc.)) -
  • HOTPLUG_PCI_ACPI (находится в Bus options (PCI etc.) -> Support for PCI Hotplug) - Опции позволяющие использовать горячее подключение PCI-устройств внутри виртуального окружения (блочные устройства, сетевые карты).