🤔 Problem

There are a few different problems that arise from not having the ability to limit resource consumption by users.

  1. Part of our value proposition is efficient use of resources for research groups and courses. This needs to be coupled with predictable costs, especially when GPUs are requested. Especially for courses, budgets need to be set well ahead of time, and for that they need a stable and predictable up-front cost.
  2. Our free tier is abused because it is providing “just enough” resources for e.g. reasonably sized courses to never require a dedicated resource pool. Limiting the usage would motivate instructors to obtain a service agreement and help us recoup costs of running the platform.

🍴 Appetite

6 weeks

🎯 Solution

Resource pools

Each resource pool should have a setting for weekly or monthly user resource limits. The limits should be expressed in terms of cpu and GPU hours. For example, this might be how a resource pool is defined:

Quota: 100 cpus, 400 GB RAM Hibernation time: 35 mins Weekly user limits: 10 cpu hours Resource classes:

This resource class can serve 100 sessions of the smaller resource class or 50 sessions of the bigger resource class or some mix of the two up to the quota. Similarly, using the first resource class for an hour accounts for 1 cpu hour, whereas the second resource class uses 2 hours.

It gets a bit more complicated if two kinds of resources are provided by a single resource pool. For example, we might have

Quota: 100 cpus, 400 GB RAM, 10 GPUs Weekly user limits: 100 cpu hours, 10 GPU hours per week Resource classes: