From d17a32c87ac5d12f85e8bbb883bdfdcdb42ff75a Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Fri, 11 Nov 2022 16:45:41 +0300 Subject: [PATCH] [~] Refactor --- dotfiles/.local/bin/commands | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/dotfiles/.local/bin/commands b/dotfiles/.local/bin/commands index f19bfc2..c199ff5 100755 --- a/dotfiles/.local/bin/commands +++ b/dotfiles/.local/bin/commands @@ -163,6 +163,18 @@ def eternal_oom(argv): assert isinstance(argv, list) and all([isinstance(o, str) for o in argv]) parser = optparse.OptionParser() + parser.add_option( + '--cpu_wait', + dest='cpu_wait', + default=None, + type=float, + ) + parser.add_option( + '--mean_size', + dest='mean_size', + default=None, + type=int, + ) parser.add_option( '--memory_limit', dest='memory_limit', @@ -189,6 +201,10 @@ def eternal_oom(argv): options.memory_limit = 3 * 1024 * 1024 if options.cpu_limit is None: options.cpu_limit = 0.6 * os.cpu_count() + if options.cpu_wait is None: + options.cpu_wait = 10 + if options.mean_size is None: + options.mean_size = 30 assert isinstance(options.memory_limit, int) \ and options.memory_limit < memory_stats()['mem_total'] * 0.8 \ @@ -198,6 +214,9 @@ def eternal_oom(argv): and options.cpu_limit > 0.2 * os.cpu_count() and \ options.cpu_limit < os.cpu_count() * 0.8 + assert options.cpu_wait >= 10 + assert options.mean_size >= 16 + def pandas_data_frame(lines, groups_regex, header_regex, extra_columns): header = re.compile(header_regex).search(lines[0]).groups() rows = [ @@ -522,8 +541,8 @@ def eternal_oom(argv): def oom_add_cpu(total_cpu): last_total_cpu.append(total_cpu) - if len(last_total_cpu) > 30: - del last_total_cpu[-30:] + if len(last_total_cpu) > options.mean_size: + del last_total_cpu[-options.mean_size:] def oom_mean_cpu(): return sum(last_total_cpu) / (len(last_total_cpu) + 1e-8) @@ -535,7 +554,7 @@ def eternal_oom(argv): if last_cpu_high is None: last_cpu_high = datetime.datetime.now().timestamp() - if datetime.datetime.now().timestamp() - last_cpu_high > 10: + if datetime.datetime.now().timestamp() - last_cpu_high > options.cpu_wait: last_cpu_high = None return True