Skip to content

Repository files navigation

resource-extend

Out-of-tree resource plugins for eru core: resource-gpu schedules GPUs by product model and resource-storage schedules volumes, disk IOPS/BPS quota and storage space. Both ship as standalone binaries that core executes per request — a subcommand per plugin verb, JSON on stdin, JSON on stdout — so a cluster gains either resource without rebuilding core.

Documentation: projecteru2.github.io/resource-extend (source in docs/)

Highlights

  • GPU scheduling by product — a node declares how many cards of each model it has (nvidia-3090: 4) and a workload asks for a per-model count; allocation, realloc deltas and per-model metrics follow.
  • Volume, disk and storage schedulingAUTO volume bindings are placed on real devices, monopoly (m) bindings take a device to themselves, and read/write IOPS and BPS quota is tracked per disk.
  • One binary contract — both plugins implement core's resource/plugins.Plugin and share one command tree, so a new plugin verb lands in both at once.
  • etcd-backed — per-node capacity and usage live under <etcd.prefix>/resource/gpu/<node> and <etcd.prefix>/resource/storage/<node> in the same etcd cluster core uses.

Quick start

make build                       # produces ./resource-gpu and ./resource-storage
cp resource-gpu resource-storage /etc/eru/plugins/

cp gpu.yaml.sample     /etc/eru/plugins/gpu.yaml
cp storage.yaml.sample /etc/eru/plugins/storage.yaml

Point core at the directory and it picks both up on the next start:

# /etc/eru/core.yaml
resource_plugin:
  dir: /etc/eru/plugins
  call_timeout: 30s

Each plugin reads its own yaml from the working directory core runs it in, or from ERU_RESOURCE_CONFIG_PATH. See installation and configuration.

Related projects

  • core — the scheduler that calls these plugins
  • agent — per-node agent
  • cli — command line client, source of the node and workload resource options

Development

make build       # build both plugin binaries
make test        # go vet on linux and darwin, then go test -race
make lint        # golangci-lint on linux and darwin
make fmt         # gofumpt + goimports
make help        # every target

License

MIT, see LICENSE.

About

Out-of-tree resource plugins for eru core: GPU and storage/volume scheduling shipped as external plugin binaries.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages