Вот набросок архитектурного дизайн-дока для твоей идеи в текущем «сыром» виде — но уже достаточно структурированном, чтобы по нему можно было делать PoC и дальше эволюционировать.
***
1. Цели и мотивация
- Использовать модель «машина как сеть независимых ядер», где каждое ядро (или группа ядер) рассматривается как отдельный узел с собственной ОС и минимально разделяемым состоянием, в духе multikernel/Barrelfish. wxdublin.gitbooks
- Дать жёсткую изоляцию и предсказуемую производительность для нескольких AI‑агентов на одной машине, избегая глобального kernel state и межъядерного контеншена. dl.acm
- Позволить иметь разные профили ОС на разных ядрах: «толстый» менеджер с драйверами и сервисами и «тонкие» агент‑ОС, заточенные под конкретный AI‑runtime. multikernel
Нефункциональные цели:
– Простота reasoning’а (архитектура ближе к распределённой системе, чем к чудовищному монолиту).
– Возможность поэтапной реализации (сначала на базе Linux+CPU‑isolation/multikernel‑подходов, затем переход к собственному ядру). lpc
***
2. Модель доверия и роли ядер
2.1. Core 0: Manager OS
- Manager‑ядро (одно или маленькая группа ядер) выполняет «системную» ОС: полный стек драйверов, управление памятью, загрузка агент‑ОС, мониторинг и оркестрация. multikernel
- Менеджер владеет всеми глобальными ресурсами: устройствами (NIC, storage, GPU), таблицей распределения физической памяти между ядрами, таблицей живых агент‑ОС и их статусом. en.wikipedia
2.2. Core 1..N: Agent OS instances
- Каждое агент‑ядро (или группа ядер) запускает минималистичную ОС, ориентированную на конкретного AI‑агента/рантайм, со своим rootfs и максимально маленьким TCB. barrelfish
- Агент‑ОС почти не шарит kernel‑состояние с другими ОС; взаимодействие с миром идёт через явные IPC‑каналы c менеджером и, опционально, с другими агентами. sigops
2.3. Trust model
- Manager ОС считается корневым TCB системы; агент‑ОС могут быть недоверенными, потенциально падающими/компрометируемыми, их влияние ограничено выделенными ресурсами и IPC‑политикой. allpcb
- В перспективе — возможность запускать агенты с разными уровнями доверия (sandbox, trusted, experimental), с разными квотами и правами на IPC.
***
3. Аппаратные предпосылки
- SMP/NUMA система (x86_64, ARM64, RISC‑V) с поддержкой IOMMU/VT‑d/SMMU для безопасного разделения доступа к устройствам и DMA. bgerofi.github
- Поддержка CPU hotplug и, желательно, memory hotplug либо похожих механизмов — это упрощает динамическое выделение ядер/памяти под новые агент‑ОС, как в современных multikernel‑решениях поверх Linux. lpc
- Стандартная прошивка (UEFI/bootloader), способная загрузить первый менеджер‑kernel, дальше загрузкой остальных ядер и ОС управляет уже менеджер. multikernel
***
4. Логическая архитектура
4.1. Основные сущности
- Manager OS — «главная» ОС на выделенных ядрах.
- Agent OS — минимальные экземпляры ОС, по одному на каждый выделенный core/группу core.
- Resource Controller (часть Manager OS) — подсистема учёта и выделения CPU, памяти, I/O.
- Inter‑OS IPC Fabric — слой обмена сообщениями между Manager и Agent‑ОС (message‑passing поверх shared memory + IPI), по принципам multikernel. wxdublin.gitbooks
- Boot/Loader Service — сервис в Manager OS, который загружает образы Agent‑ОС, назначает им ядра и память.
4.2. Высокоуровневые принципы (в духе multikernel)
- Все межъядерные взаимодействия явные message‑passing, без неявного shared kernel state. dl.acm
- Структура ОС максимально hardware‑neutral: логика не должна зависеть от конкретной топологии NUMA/кэшей, это инкапсулируется в CPU‑drivers/low‑level части. sigops
- Состояние системы рассматривается как распределённое; согласование делается через протоколы (lease, версии, heartbeats), а не через глобальные блокировки. pages.cs.wisc
***
5. Модель памяти и NUMA
5.1. Разбиение физической памяти
- Физическая память делится на:
- Region M — память менеджера (код, данные, служебные буферы).
- Region Aᵢ — выделенные регионы для каждой Agent‑ОС.
- Shared Region S — один или несколько регионов для shared‑данных (модели, общие кэши, IPC‑очереди).
- Region M — память менеджера (код, данные, служебные буферы).
- Manager выступает как «allocator of last resort» и единственный компонент, который может изменять partitioning (например, через memory hotplug‑подобные механизмы). lpc
5.2. Виртуальная память внутри Agent‑ОС
- Agent‑ОС видит свои Region Aᵢ + явные mapping’и в Shared Region S; она не знает о памяти других агентов. dl.acm
- Можно поддерживать два класса mapping’ов:
- Long‑lived (например, read‑only модели нейросетей).
- Short‑lived (буферы запросов/ответов, временные шары между Agent‑ОС).
- Long‑lived (например, read‑only модели нейросетей).
5.3. NUMA‑осведомлённость
- При наличии NUMA менеджер старается выделять агент‑ОС память в локальном NUMA‑узле для их ядра, а shared‑регион может быть либо реплицирован, либо размещён в нескольких NUMA‑домейнах. en.wikipedia
- Политика размещения — часть Resource Controller и может быть настраиваемой.
***
6. IPC и протоколы взаимодействия
6.1. Базовый механизм
- IPC строится на фиксированного размера сообщениях, доставляемых через shared memory ring‑buffers + сигналы через IPI/doorbells, как в классических multikernel/fast‑path‑driver работах. cs.cmu
- Для каждого Agent‑ОС есть минимум два канала:
- Control Channel (Agent ↔ Manager) — конфиг, статус, управление жизненным циклом.
- Data Channel(s) — запросы от клиентов (через Manager) и ответы агента.
- Control Channel (Agent ↔ Manager) — конфиг, статус, управление жизненным циклом.
6.2. Примеры протоколов
Lifecycle Protocol
SPAWN_AGENT(image_id, cores, mem_size, policy)AGENT_STATUS(id, state, metrics)STOP_AGENT(id, reason)
AI‑Request Protocol
INFER_REQUEST(agent_id, request_id, input_handle, output_handle)INFER_RESULT(request_id, status, output_handle)
Где *_handle указывает на буфер в Shared Region S, чтобы не гонять большие payload’ы по IPC.
6.3. Расширение до Agent↔Agent
- Для некоторых сценариев (агенты‑координаторы) можно разрешить Manager‑mediated Agent↔Agent‑каналы, но физически они всё равно реализованы как shared memory + протокол поверх него. wxdublin.gitbooks
***
7. Устройства и I/O
7.1. Модель владения устройствами
- По умолчанию все физические устройства принадлежат Manager‑ОС: драйвера NIC, storage, GPU находятся там. bgerofi.github
- Agent‑ОС взаимодействуют с сетью и диском через RPC к сервисам Manager‑ОС (сетевой proxy, object storage‑proxy и т.д.). bgerofi.github
7.2. Прямой доступ ускорителей
- Для высокопроизводительных сценариев агент‑ОС может получать прямой доступ к «виртуализированным» очередям устройств (например, аппаратные очереди NIC/GPU), аналогично fast‑path‑drivers и Linux+LWK side‑by‑side моделям. bgerofi.github
- Безопасность и разделение обеспечиваются IOMMU и политиками, установленными Manager‑ОС.
***
8. Загрузка и жизненный цикл
8.1. Boot sequence
- Firmware/bootloader загружает Manager‑kernel на core 0, выделяет ему минимальный набор ресурсов.
- Manager‑ОС инициализирует IPC fabric, Resource Controller, базовые драйверы устройств. barrelfish
- На основе конфигурации Manager выделяет набор core и memory‑region’ов и запускает Agent‑ОС через свой boot‑сервис (по аналогии с kexec‑подобной многоядерной загрузкой в multikernel‑Linux проектах). multikernel
- Каждая Agent‑ОС регистрируется у Manager по control‑каналу, после чего может принимать рабочие запросы.
8.2. Обновление и перезапуск
- Agent‑ОС можно перезапускать независимо, не трогая Manager и другие агенты (fault isolation).
- В будущем возможно реализовать zero‑downtime обновление как в multikernel‑roadmap: поднять новый экземпляр Agent‑ОС, мигрировать state, потом убить старый. youtube
***
9. Сценарии использования (фокус на AI)
- LLM‑serving с несколькими моделями/версиями: каждому агенту выделена своя модель и runtime, Manager занимается роутингом запросов и ресурсами. eunomia
- Изолированные «экспериментальные» агенты: research‑модели, несущие риск OOM/undefined поведения, гоняются в отдельных Agent‑ОС, не валя production‑агентов.
- Гетерогенная нагрузка: часть агент‑ОС может быть оптимизирована под batch‑job’ы, другие — под low‑latency запросы, с разными конфигурациями kernel и scheduler.
***
10. План PoC (минимально жизнеспособная версия)
Stage 0: Симуляция на обычном Linux
- Использовать CPU isolation (
isolcpus,nohz_full,rcu_nocbs) чтобы выделить несколько ядер под «агентов», а системные сервисы оставить на ядре‑менеджере. docs.kernel - Реализовать Manager и Agents как отдельные процессы/контейнеры с явным IPC поверх shared memory и
eventfd/signals.
- Использовать CPU isolation (
Stage 1: Multikernel‑подход на Linux
- Вдохновиться существующим Multikernel‑Linux проектом: запуск нескольких экземпляров ядра/около‑ядрового окружения на разных ядрах без полноценной виртуализации. lpc
- Перенести туда концепцию Manager/Agent и IPC‑fabric.
Stage 2: Специализированное ядро для Agent‑ОС
- Срезать из ядра всё лишнее, оставить только необходимое для AI‑runtime + IPC + базовый MM.
- Сделать загрузку этих ядёр через менеджера по kexec‑подобной схеме. multikernel
- Срезать из ядра всё лишнее, оставить только необходимое для AI‑runtime + IPC + базовый MM.
Stage 3: Продвинутое управление ресурсами и обновлениями
- Добавить динамическое выделение ядер/памяти под агентов.
- Реализовать прототип zero‑downtime обновлений для Agent‑ОС и, возможно, для самого Manager‑ядра. youtube
- Добавить динамическое выделение ядер/памяти под агентов.
***
Если хочешь, дальше можно углубиться в один из блоков — например, подробно расписать формат IPC‑сообщений и layout shared‑memory‑колец, или сделать конкретный PoC‑план под твой текущий хост (кол‑во ядер, есть ли IOMMU/GPU, какие модели нужно крутить).