Skip to content

Resource Allocation Limits and Fair Usage Enforcement #1187

@bogdanfazakas

Description

@bogdanfazakas

Users can currently monopolize node resources by submitting C2D jobs with unrestricted resource allocations, leading to unfair usage and node operator loss of control.

Critical Scenarios:

  1. 0 GPU + All CPU: User takes all CPU cores without using GPU
  2. 1 CPU + All RAM: User takes all RAM with minimal CPU usage
  3. Excessive Resources: No limits on disk or combinations

Impact:

  • Single user can block all other users from the node
  • Node operators cannot control fair resource distribution
  • Inefficient resource utilization
  • Poor user experience for queued jobs
  • No visibility of limits in Network dashboard

Implement solution suggeste by @alexcos20 bellow

Add optional minimum and maximums per resource

"resources":[
   {
      "id":"cpu",
      "max":1,
      "constraints": [
           {"id":"ram", min: 1, max 3}, // for each cpu you need to have min 1 gb RAM and max of 3GB
           {"id":"disk", min: 10, max 33}, // for each cpu you need to have min 10 gb disc space but no more than 33 GB
     ]
   },
   {
      "id":"ram",
      "max":1
   },
   {
      "id":"disk",
      "max":1
   },
   {
      "id":"gpu",
      "max":4,
      "constraints": [
           {"id":"ram", min: 1, max 3}, // for each gpu you need to have min 1 gb RAM and max of 3GB
           {"id":"disk", min: 10, max 33},
           {"id":"cpu", min: 2, max 4}, // for each gpu you need to have min 2 cpu and max 4 cpu
     ]
   },
]

Pro: flexible
Con: not easy to understand, code complexity (doable)
Everything is optional: you can have constratins for cpu, but not for memory. You can have either min/max or both

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions