From: Tom Morris Date: Fri, 15 Mar 2019 04:10:06 +0000 (-0400) Subject: Don't recommend RAM or CPU changes based on zero usage. refs #10570 X-Git-Tag: 1.4.0~100^2~2 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/701d59fcd4d183528d5c54e64c6237e5daa2b419 Don't recommend RAM or CPU changes based on zero usage. refs #10570 Never recommend 0 MB RAM. If CPU usage is zero, don't make any CPU recommendations. Arvados-DCO-1.1-Signed-off-by: Tom Morris --- diff --git a/tools/crunchstat-summary/crunchstat_summary/summarizer.py b/tools/crunchstat-summary/crunchstat_summary/summarizer.py index 51f7e43e07..6d1fd918e4 100644 --- a/tools/crunchstat-summary/crunchstat_summary/summarizer.py +++ b/tools/crunchstat-summary/crunchstat_summary/summarizer.py @@ -323,6 +323,7 @@ class Summarizer(object): yield "# "+format_string.format(self._format(val)) def _recommend_gen(self): + # TODO recommend fixing job granularity if elapsed time is too short return itertools.chain( self._recommend_cpu(), self._recommend_ram(), @@ -333,9 +334,11 @@ class Summarizer(object): constraint_key = self._map_runtime_constraint('vcpus') cpu_max_rate = self.stats_max['cpu']['user+sys__rate'] - if cpu_max_rate == float('-Inf'): + if cpu_max_rate == float('-Inf') or cpu_max_rate == 0.0: logger.warning('%s: no CPU usage data', self.label) return + # TODO Don't necessarily want to recommend on isolated max peak + # take average CPU usage into account as well or % time at max used_cores = max(1, int(math.ceil(cpu_max_rate))) asked_cores = self.existing_constraints.get(constraint_key) if asked_cores is None or used_cores < asked_cores: @@ -391,8 +394,8 @@ class Summarizer(object): asked_mib = self.existing_constraints.get(constraint_key) nearlygibs = lambda mebibytes: mebibytes/AVAILABLE_RAM_RATIO/1024 - if asked_mib is None or ( - math.ceil(nearlygibs(used_mib)) < nearlygibs(asked_mib)): + if used_mib > 0 and (asked_mib is None or ( + math.ceil(nearlygibs(used_mib)) < nearlygibs(asked_mib))): yield ( '#!! {} max RSS was {} MiB -- ' 'try runtime_constraints "{}":{}' diff --git a/tools/crunchstat-summary/tests/container_9tee4-dz642-lymtndkpy39eibk-arv-mount.txt.gz.report b/tools/crunchstat-summary/tests/container_9tee4-dz642-lymtndkpy39eibk-arv-mount.txt.gz.report index 5148a4523a..0691e4f1ef 100644 --- a/tools/crunchstat-summary/tests/container_9tee4-dz642-lymtndkpy39eibk-arv-mount.txt.gz.report +++ b/tools/crunchstat-summary/tests/container_9tee4-dz642-lymtndkpy39eibk-arv-mount.txt.gz.report @@ -20,5 +20,3 @@ time elapsed 10 - 10 # Max network speed in a single interval: 0.00MB/s # Keep cache miss rate 0.00% # Keep cache utilization 0.00% -#!! container max CPU usage was 0% -- try runtime_constraints "vcpus":1 -#!! container max RSS was 0 MiB -- try runtime_constraints "ram":0 diff --git a/tools/crunchstat-summary/tests/logfile_20151210063411.txt.gz.report b/tools/crunchstat-summary/tests/logfile_20151210063411.txt.gz.report index f9a34cfb98..c8b6774508 100644 --- a/tools/crunchstat-summary/tests/logfile_20151210063411.txt.gz.report +++ b/tools/crunchstat-summary/tests/logfile_20151210063411.txt.gz.report @@ -20,5 +20,4 @@ time elapsed 2 - 4 # Max network speed in a single interval: 0.00MB/s # Keep cache miss rate 0.00% # Keep cache utilization 0.00% -#!! 4xphq-8i9sb-zvb2ocfycpomrup max CPU usage was 0% -- try runtime_constraints "min_cores_per_node":1 #!! 4xphq-8i9sb-zvb2ocfycpomrup max RSS was 1 MiB -- try runtime_constraints "min_ram_mb_per_node":972 diff --git a/tools/crunchstat-summary/tests/logfile_20151210063439.txt.gz.report b/tools/crunchstat-summary/tests/logfile_20151210063439.txt.gz.report index c54102d78a..b138b18931 100644 --- a/tools/crunchstat-summary/tests/logfile_20151210063439.txt.gz.report +++ b/tools/crunchstat-summary/tests/logfile_20151210063439.txt.gz.report @@ -20,5 +20,4 @@ time elapsed 2 - 3 # Max network speed in a single interval: 0.00MB/s # Keep cache miss rate 0.00% # Keep cache utilization 0.00% -#!! 4xphq-8i9sb-v831jm2uq0g2g9x max CPU usage was 0% -- try runtime_constraints "min_cores_per_node":1 #!! 4xphq-8i9sb-v831jm2uq0g2g9x max RSS was 1 MiB -- try runtime_constraints "min_ram_mb_per_node":972