[~] Refactor
This commit is contained in:
parent
da1fb2303f
commit
8bd38d3119
@ -465,6 +465,17 @@ def eternal_oom(argv):
|
|||||||
msg='oom_kill, failed to kill pid %d' % pid
|
msg='oom_kill, failed to kill pid %d' % pid
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def oom_status():
|
||||||
|
print(
|
||||||
|
'\r%6.2f / %.2f %%, %6.2f / %.2f GiB' % (
|
||||||
|
oom_mean_cpu() / os.cpu_count() * 100,
|
||||||
|
options.cpu_limit / os.cpu_count() * 100,
|
||||||
|
memory_stats()['mem_used'] / 1024 / 1024,
|
||||||
|
options.memory_limit / 1024 / 1024,
|
||||||
|
),
|
||||||
|
end=''
|
||||||
|
)
|
||||||
|
|
||||||
def first_check():
|
def first_check():
|
||||||
current_memory_stats = memory_stats()
|
current_memory_stats = memory_stats()
|
||||||
|
|
||||||
@ -505,10 +516,38 @@ def eternal_oom(argv):
|
|||||||
|
|
||||||
first_check()
|
first_check()
|
||||||
|
|
||||||
|
last_total_cpu = []
|
||||||
|
|
||||||
|
last_cpu_high = None
|
||||||
|
|
||||||
|
def oom_add_cpu(total_cpu):
|
||||||
|
last_total_cpu.append(total_cpu)
|
||||||
|
if len(last_total_cpu) > 30:
|
||||||
|
del last_total_cpu[-30:]
|
||||||
|
|
||||||
|
def oom_mean_cpu():
|
||||||
|
return sum(last_total_cpu) / (len(last_total_cpu) + 1e-8)
|
||||||
|
|
||||||
|
def oom_cpu_high():
|
||||||
|
nonlocal last_cpu_high
|
||||||
|
|
||||||
|
if oom_mean_cpu() > options.cpu_limit:
|
||||||
|
if last_cpu_high is None:
|
||||||
|
datetime.datetime.now().timestamp()
|
||||||
|
|
||||||
|
if datetime.datetime.now().timestamp() - last_cpu_high > 10:
|
||||||
|
last_cpu_high = None
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
mem_used = memory_stats()['mem_used']
|
mem_used = memory_stats()['mem_used']
|
||||||
|
|
||||||
t11 = oom_get_processes()
|
t11 = oom_get_processes()
|
||||||
|
|
||||||
|
oom_add_cpu(t11['total_cpu'])
|
||||||
|
|
||||||
t8 = t11['by_mem']
|
t8 = t11['by_mem']
|
||||||
|
|
||||||
t9 = t8
|
t9 = t8
|
||||||
@ -524,13 +563,15 @@ def eternal_oom(argv):
|
|||||||
])
|
])
|
||||||
t4()
|
t4()
|
||||||
|
|
||||||
if t11['total_cpu'] > options.cpu_limit:
|
if oom_cpu_high():
|
||||||
pprint.pprint([
|
pprint.pprint([
|
||||||
'Killing [CPU]',
|
'Killing [CPU]',
|
||||||
pandas_row(t11['by_cpu'], 0),
|
pandas_row(t11['by_cpu'], 0),
|
||||||
t11['total_cpu'],
|
[options.cpu_limit, oom_mean_cpu(), t11['total_cpu']],
|
||||||
])
|
])
|
||||||
oom_kill(t11['by_cpu']['PID_x'][0])
|
oom_kill(t11['by_cpu']['PID_x'][0])
|
||||||
|
|
||||||
|
oom_status()
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
def resilient_vlc(stream=None):
|
def resilient_vlc(stream=None):
|
||||||
|
Loading…
Reference in New Issue
Block a user