За обсъждане разработчиците на ядрото на Linux предложиха серия от пачове, разработени от проекта Multikernel, който наскоро бе преведен в категория отворен софтуер и сега ще се развива съвместно с общността. Multikernel позволява на един физически компютър да изпълнява няколко независими инстанции на ядрото на Linux, които имат пряк достъп до хардуерни ресурси и могат да се използват за стартиране на няколко изолирани системни среди. Проектът е създаден от компанията Multikernel Technologies, ръководена от Конг Ванг (Cong Wang), който поддържа подсистемата за управление на трафика (TC, Traffic Control) в ядрото на Linux.
За стартиране и управление на ядрата е предложен усъвършенстван обаждане kexec, което, в отличие от класическото kexec, не е ограничено до заместването на работещото ядро и позволява стартиране на допълнителни инстанции на ядрото, изпълнявани паралелно. За мониторинг и отстраняване на проблеми с активните инстанции на ядрото е реализиран интерфейс «/proc/multikernel», а за обмен на съобщения между ядрата и координация на работата е предложен комуникационен фреймворк Multikernel IPI.

Multikernel е представен като нова архитектура на изолация, заемаща ниша между виртуализацията чрез хипервизор и контейнерната изолация на базата на общо ядро. В отличие от виртуализацията, Multikernel не изисква използване на хипервизор, опростява създаването на среди за изолирано изпълнение на отделни приложения и позволява постигане на висока производителност без разходите за виртуализация. В отличие от контейнерите, Multikernel осигурява висок уровень на изолация и позволява използването на отделно ядро в всяка изолирана среда.

Производителността при използване на Multikernel се оценява като близка до производителността на изпълнение на отделно оборудване. Такъв успех е постигнат благодарение на изключването на характерните разходи за виртуализация, които възникват от обработчици на предаване на контрол между виртуалните машини (VM exit), транслатиране на IOMMU и намесата на хипервизора в изпълнението на привилегировани операции. Поддържа се динамично разпределение на ресурсите на стартираните среди и осигуряване на предсказуема производителност.
Паралелното изпълнение на няколко ядра се осъществява без виртуализация, използвайки SMP-обработчик, който разпределя наличните CPU между екземплярите на Linux ядра. Всеки екземпляр на ядро Linux е свързан с едно или няколко ядра CPU, определени за неговото изпълнение, при споделяне на останалите хардуерни ресурси.
Основни предимства на Multikernel:
- Подобрена изолация от неуспехи в работата на изпълняваните среди.
- Повишена безопасност чрез разделяне на ниво ядро.
- По-ефективно използване на ресурсите в сравнение с традиционните виртуални машини на базата на хипервизори, като KVM и Xen.
- Възможност за актуализиране на ядрото без прекратяване на работата, използвайки механизма KHO (Kernel Hand Over).
- Поддръжка за интеграция със стандартни облачни инфраструктури и възможност за прозрачен преход от традиционни системи за виртуализация и контейнерна изолация.
- Пълна съвместимост с съществуващите приложения и системни интерфейси на Linux. Multikernel само целенасочено променя ядрото, запазвайки пълна съвместимост на ниво API.
Източник: opennet.ru
