User
User
MutatingWebhook
[Cluster Control Layer]
MutatingWebhook
[Cluster Control Layer]
Scheduler-Extender
[Cluster Control Layer]
Scheduler-Extender
[Cluster Control Layer]
Device Plugin
[Node Agent Layer]
Device Plugin
[Node Agent Layer]
HAMi-Core
[Container Isolation Layer]
HAMi-Core
[Container Isolation Layer]
Physical GPU
Physical GPU
Node Startup: Device Spec Reporting
Write Node Annotation
hami.io/node-nvidia-register
(UUID / VRAM / Compute / Model)
User Submits Pod
Submit Pod
(nvidia.com/gpu + gpumem)
Rewrite schedulerName
(force hami-scheduler)
Hand off to hami-scheduler
Scheduling Decision
Read Node Annotation
Select target node and GPU UUID
Write Pod Annotation
hami.io/vgpu-devices-allocated
(UUID + VRAM quota + compute quota)
Device Allocation and Container Start
Read Pod Annotation
Get GPU UUID and quotas
Mount /dev/nvidia*
Allocate response injects:
• hostPath mount libvgpu.so
• hostPath mount ld.so.preload → /etc/ld.so.preload
• CUDA_DEVICE_MEMORY_LIMIT_<index>
• CUDA_DEVICE_SM_LIMIT
CUDA API call
(OOM if quota exceeded)