Skip to content

Commit 7427121

Browse files
committed
Add option for CPU limit to be a callable as well
1 parent dd28c87 commit 7427121

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

nbresuse/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ def _mem_limit_default(self):
9393
""",
9494
).tag(config=True)
9595

96-
cpu_limit = Float(
96+
cpu_limit = Union(
97+
trait_types=[Float(), Callable()],
9798
default_value=0,
9899
help="""
99100
CPU usage limit to display to the user.

nbresuse/prometheus.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,15 @@ def __call__(self, *args, **kwargs):
4444
def apply_memory_limits(self, metrics: Optional[MemoryMetrics]) -> Optional[MemoryMetrics]:
4545
if metrics is not None:
4646
if callable(self.config.mem_limit):
47-
metrics.max_memory = self.config.mem_limit(rss=metrics.max_memory)
47+
metrics.max_memory = self.config.mem_limit(rss=metrics.current_memory)
4848
elif self.config.mem_limit > 0: # mem_limit is an Int
4949
metrics.max_memory = self.config.mem_limit
5050
return metrics
5151

5252
def apply_cpu_limits(self, metrics: Optional[CPUMetrics]) -> Optional[CPUMetrics]:
5353
if metrics is not None:
54-
if self.config.cpu_limit > 0:
54+
if callable(self.config.cpu_limit):
55+
metrics.cpu_max = self.config.cpu_limit(cpu_percent=metrics.cpu_usage)
56+
elif self.config.cpu_limit > 0.0: # cpu_limit is a Float
5557
metrics.cpu_max = self.config.cpu_limit
5658
return metrics

0 commit comments

Comments
 (0)