[ARVADOS] updated: be854bfb8bab5849acb09fcb5acbeeac7300ca5c
git at public.curoverse.com
git at public.curoverse.com
Tue Dec 22 16:18:09 EST 2015
Summary of changes:
tools/crunchstat-summary/crunchstat_summary/summarizer.py | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
via be854bfb8bab5849acb09fcb5acbeeac7300ca5c (commit)
from a7e2a2a7c0915de92345acbc209f5d941bf22b0a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit be854bfb8bab5849acb09fcb5acbeeac7300ca5c
Author: Tom Clegg <tom at curoverse.com>
Date: Tue Dec 22 16:16:15 2015 -0500
7883: Aim 5% below GiB memory size boundaries.
diff --git a/tools/crunchstat-summary/crunchstat_summary/summarizer.py b/tools/crunchstat-summary/crunchstat_summary/summarizer.py
index 49b67ff..f5d27d4 100644
--- a/tools/crunchstat-summary/crunchstat_summary/summarizer.py
+++ b/tools/crunchstat-summary/crunchstat_summary/summarizer.py
@@ -12,6 +12,11 @@ import sys
logger = logging.getLogger(__name__)
logger.addHandler(logging.NullHandler())
+# Recommend memory constraints that are this multiple of an integral
+# number of GiB. (Actual nodes tend to be sold in sizes like 8 GiB
+# that have amounts like 7.5 GiB according to the kernel.)
+AVAILABLE_RAM_RATIO = 0.95
+
class Summarizer(object):
existing_constraints = {}
@@ -159,7 +164,7 @@ class Summarizer(object):
int(used_cores))
def _recommend_ram(self):
- """Recommend asking for 2048 MiB RAM if max rss was 1248 MiB"""
+ """Recommend asking for (2048*0.95) MiB RAM if max rss was 1248 MiB"""
used_ram = self.stats_max['mem']['rss']
if used_ram == float('-Inf'):
@@ -167,14 +172,16 @@ class Summarizer(object):
return
used_ram = math.ceil(float(used_ram) / (1<<20))
asked_ram = self.existing_constraints.get('min_ram_mb_per_node')
- if asked_ram is None or math.ceil(used_ram/(1<<10)) < asked_ram/(1<<10):
+ if asked_ram is None or (
+ math.ceil((used_ram/AVAILABLE_RAM_RATIO)/(1<<10)) <
+ (asked_ram/AVAILABLE_RAM_RATIO)/(1<<10)):
yield (
- '#!! {} never used more than {} MiB RAM -- '
+ '#!! {} max RSS was {} MiB -- '
'try runtime_constraints "min_ram_mb_per_node":{}'
).format(
self.label,
int(used_ram),
- int(math.ceil(used_ram/(1<<10))*(1<<10)))
+ int(math.ceil((used_ram/AVAILABLE_RAM_RATIO)/(1<<10))*(1<<10)*AVAILABLE_RAM_RATIO))
def _format(self, val):
"""Return a string representation of a stat.
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list