Linux ядро для KVM
Материал из support.qbpro.ru
Версия от 13:45, 24 августа 2013; imported>Vix (Новая страница: «== ДЕРНАЯ ОПТИМИЗАЦИЯ ДЛЯ KVM ХОСТ-СИСТЕМ== [http://www.thislinux.org/2012/06/linux-kvm.html источник] Приведу не…»)
ДЕРНАЯ ОПТИМИЗАЦИЯ ДЛЯ 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-устройств внутри виртуального окружения (блочные устройства, сетевые карты).