How shreelakshmigbhat/multi-container-runtime works
OS JACKFRUIT is a minimal user-space container runtime paired with a Linux kernel memory-monitor module. A client invokes start/run or management commands; the supervisor receives requests over a UNIX socket, launches isolated processes in a supplied root filesystem, routes their output through a producer-consumer logger, and supports listing, reading logs, and stopping containers. For memory enforcement, the runtime registers processes and limits with the kernel module, which periodically checks usage and warns or kills. The README documents these capabilities; excerpts are partial, so internal wiring beyond the documented flow is not inferred.
Main entry points: engine.c Lifecycle Control · monitor.c Monitor Device · cpu_hog.c CPU Workload · io_pulse.c I/O Workload
Components 19
Runtime Control
- CLI Commands
boilerplate/engine.c - UNIX Socket
boilerplate/engine.c - Supervisor
boilerplate/engine.c - Lifecycle Control
boilerplate/engine.c
Container Execution
- Namespace Setup
boilerplate/engine.c - Container Rootfs
- Container Command
- CPU Workload
boilerplate/cpu_hog.c - I/O Workload
boilerplate/io_pulse.c - Memory Workload
boilerplate/memory_hog.c
Output Logging
- Bounded Log Buffer
boilerplate/engine.c - Logging Thread
boilerplate/engine.c - Container Log Files
Memory Monitoring
- Monitor Registration
boilerplate/engine.c - Monitor IOCTL API
boilerplate/monitor_ioctl.h - Kernel Monitor
boilerplate/monitor.c - Monitor Device
boilerplate/monitor.c
Other components
- CLI User
- Host Process Memory
Connections 19
- CLI User → CLI Commands: invokes
- CLI Commands → UNIX Socket: sends requests
- UNIX Socket → Supervisor: delivers requests
- Supervisor → Lifecycle Control: dispatches
- Lifecycle Control → Namespace Setup: launches
- Namespace Setup → Container Rootfs: uses rootfs
- Namespace Setup → Container Command: executes
- Container Command → CPU Workload: may run
- Container Command → I/O Workload: may run
- Container Command → Memory Workload: may run
- Container Command → Bounded Log Buffer: writes output
- Bounded Log Buffer → Logging Thread: provides chunks
- Logging Thread → Container Log Files: writes logs
- Lifecycle Control → Monitor Registration: registers process
- Monitor Registration → Monitor Device: issues ioctls
- Monitor Device → Monitor IOCTL API: implements requests
- Kernel Monitor → Host Process Memory: checks RSS
- Kernel Monitor → Host Process Memory: may kill
- Monitor Device → Kernel Monitor: dispatches ioctls