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

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

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