Architecture

The overall architecture of HAMi is shown below:

HAMi consists of the following components:

  • HAMi MutatingWebhook
  • HAMi scheduler-extender
  • Device-plugin (HAMi-device-plugin)
  • In-container resource control (HAMi-Core)

HAMi MutatingWebhook checks whether a task can be handled by HAMi. It scans the resource fields of each submitted pod; if every resource the pod requests is either cpu, memory, or a HAMi resource, it sets the pod's schedulerName to HAMi-scheduler.

The HAMi scheduler is responsible for assigning tasks to the appropriate nodes and devices. It also maintains a global view of heterogeneous computing devices for monitoring.

The device-plugin layer reads the scheduling result from the task's annotations and maps the corresponding device into the container.

The in-container resource control monitors resource usage within the container and provides hard isolation.