install oom-trigger and mans
This commit is contained in:
parent
2f482cf844
commit
7d2c01b61f
4
Makefile
4
Makefile
@ -20,6 +20,8 @@ install:
|
|||||||
|
|
||||||
install -d $(DESTDIR)/$(PREFIX)/usr/share/man/man1
|
install -d $(DESTDIR)/$(PREFIX)/usr/share/man/man1
|
||||||
gzip -k -c nohang.1 > $(DESTDIR)/$(PREFIX)/usr/share/man/man1/nohang.1.gz
|
gzip -k -c nohang.1 > $(DESTDIR)/$(PREFIX)/usr/share/man/man1/nohang.1.gz
|
||||||
|
gzip -k -c oom-sort.1 > $(DESTDIR)/$(PREFIX)/usr/share/man/man1/oom-sort.1.gz
|
||||||
|
gzip -k -c oom-trigger.1 > $(DESTDIR)/$(PREFIX)/usr/share/man/man1/oom-trigger.1.gz
|
||||||
|
|
||||||
install -d $(DESTDIR)/$(PREFIX)/lib/systemd/system
|
install -d $(DESTDIR)/$(PREFIX)/lib/systemd/system
|
||||||
install -m0644 ./nohang.service $(DESTDIR)/$(PREFIX)/lib/systemd/system/nohang.service
|
install -m0644 ./nohang.service $(DESTDIR)/$(PREFIX)/lib/systemd/system/nohang.service
|
||||||
@ -31,6 +33,8 @@ uninstall:
|
|||||||
rm -fv $(PREFIX)/usr/sbin/nohang_notify_low_mem
|
rm -fv $(PREFIX)/usr/sbin/nohang_notify_low_mem
|
||||||
rm -fv $(PREFIX)/usr/bin/oom-sort
|
rm -fv $(PREFIX)/usr/bin/oom-sort
|
||||||
rm -fv $(PREFIX)/usr/share/man/man1/nohang.1.gz
|
rm -fv $(PREFIX)/usr/share/man/man1/nohang.1.gz
|
||||||
|
rm -fv $(PREFIX)/usr/share/man/man1/oom-sort.1.gz
|
||||||
|
rm -fv $(PREFIX)/usr/share/man/man1/oom-trigger.1.gz
|
||||||
rm -fv $(PREFIX)/lib/systemd/system/nohang.service
|
rm -fv $(PREFIX)/lib/systemd/system/nohang.service
|
||||||
rm -fvr $(PREFIX)/etc/nohang/
|
rm -fvr $(PREFIX)/etc/nohang/
|
||||||
|
|
||||||
|
3
oom-sort.1
Normal file
3
oom-sort.1
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.TH oom-sort 1
|
||||||
|
.SH NAME
|
||||||
|
oom-sort \- sort processes by oom_score
|
124
oom-trigger
Executable file
124
oom-trigger
Executable file
@ -0,0 +1,124 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Interactive OOM trigger
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# find mem_total
|
||||||
|
# find positions of SwapFree and SwapTotal in /proc/meminfo
|
||||||
|
|
||||||
|
with open('/proc/meminfo') as file:
|
||||||
|
mem_list = file.readlines()
|
||||||
|
|
||||||
|
mem_list_names = []
|
||||||
|
for s in mem_list:
|
||||||
|
mem_list_names.append(s.split(':')[0])
|
||||||
|
|
||||||
|
if mem_list_names[2] != 'MemAvailable':
|
||||||
|
print('Your Linux kernel is too old, Linux 3.14+ requied\nExit')
|
||||||
|
exit()
|
||||||
|
|
||||||
|
swap_total_index = mem_list_names.index('SwapTotal')
|
||||||
|
swap_free_index = swap_total_index + 1
|
||||||
|
|
||||||
|
mem_total = int(mem_list[0].split(':')[1].strip(' kB\n'))
|
||||||
|
|
||||||
|
# Get names from /proc/*/status to be able to get VmRSS and VmSwap values
|
||||||
|
|
||||||
|
with open('/proc/self/status') as file:
|
||||||
|
status_list = file.readlines()
|
||||||
|
|
||||||
|
status_names = []
|
||||||
|
for s in status_list:
|
||||||
|
status_names.append(s.split(':')[0])
|
||||||
|
|
||||||
|
vm_rss_index = status_names.index('VmRSS')
|
||||||
|
vm_swap_index = status_names.index('VmSwap')
|
||||||
|
|
||||||
|
|
||||||
|
# вариант - сжирать мегабайты исходя из собственного VmRSS + VmSwap
|
||||||
|
|
||||||
|
|
||||||
|
print(mem_total, swap_total_index, swap_free_index, vm_rss_index, vm_swap_index)
|
||||||
|
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
|
||||||
|
def continue_anyway():
|
||||||
|
"""
|
||||||
|
Mem hog if mem err
|
||||||
|
"""
|
||||||
|
expanding_list = []
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
expanding_list.append(os.urandom(1))
|
||||||
|
except MemoryError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
def unlimited_memhog():
|
||||||
|
'''
|
||||||
|
unlimited mem hogging
|
||||||
|
'''
|
||||||
|
print('Вводите целые неотрицательные числа. Чем больше, тем быстрее потребление памяти.\n1000 same обеспечивает потребление на уровне полтора гиг в секунду,\nurandom работает на скорости максимум 170 M/s')
|
||||||
|
|
||||||
|
same = input("same: ")
|
||||||
|
urandom = input("urandom: ")
|
||||||
|
|
||||||
|
expanding_list = []
|
||||||
|
|
||||||
|
print('Unlimited memhogging started!')
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
expanding_list.append(os.urandom(int(urandom)))
|
||||||
|
expanding_list.append('#' * int(same))
|
||||||
|
except MemoryError:
|
||||||
|
print('MemoryError; continue anyway!')
|
||||||
|
continue_anyway()
|
||||||
|
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# basic bifurcation
|
||||||
|
|
||||||
|
print('WARNING: эта прога способна потратить память и повесить систему, будьте осторожны.')
|
||||||
|
print('При ее работе следите за показателями памяти.')
|
||||||
|
|
||||||
|
|
||||||
|
expanding_list = []
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
hogging не то
|
||||||
|
u - unlimited mem hogging with choice of speed and entropy
|
||||||
|
n - limited mem hogging (hog указанный далее объем метров)
|
||||||
|
a - уменьшать обем общей доступной памяти (MemAvailable + SwapFree) до тех пор, пока он не станет ниже заданного далее объема
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
|
||||||
|
print('Select an option from the list below, enter selected letter and press Enter')
|
||||||
|
print('8 или i или I - запустить бесконечное потребление, предложив выбрать скорость потребления и энтропию')
|
||||||
|
print('q или любой другой символ - выход (можно просто нажать Enter)')
|
||||||
|
|
||||||
|
li = input(': ')
|
||||||
|
|
||||||
|
if li is 'i' or li is 'I' or li is '8':
|
||||||
|
unlimited_memhog()
|
||||||
|
else:
|
||||||
|
exit()
|
||||||
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print()
|
||||||
|
os.kill(os.getpid(), 15)
|
3
oom-trigger.1
Normal file
3
oom-trigger.1
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.TH oom-trigger 1
|
||||||
|
.SH NAME
|
||||||
|
oom-trigger \- interactive OOM trigger
|
Loading…
Reference in New Issue
Block a user