nohang/trash/mm
Alexey Avramov ec2f960383 fix CLI
2019-04-04 15:08:27 +09:00

316 lines
9.2 KiB
Python
Executable File

#!/usr/bin/env python3
# ms-monitor/
from memco import *
import time
# once or 1, log or 2, inplace or 3
mode = '3'
# период цикла печати
period = 0.2
# параметры визуализации
used = '$'
free = '~'
len_visual = 14
# нахождение и печать параметров, возвращает показатели и принимает показатели для нахождения дельт
def printer(old_list):
mem_tup = mem_check_main()
mem_available = mem_tup[0]
swap_total = mem_tup[1]
swap_free = mem_tup[2]
tn = time.time()
delta = tn - old_list[4]
mem_busy = mem_total - mem_available
swap_busy = swap_total - swap_free
mem_swap_total = mem_total + swap_total
mem_swap_free = mem_available + swap_free
mem_swap_busy = mem_busy + swap_busy
delta_mem = (mem_busy - old_list[0]) / delta
delta_swap = (swap_busy - old_list[1]) / delta
delta_all = (mem_swap_busy - old_list[2]) / delta
if swap_total == 0:
#1###################################################################################
# печать без свопа
mem_visual = (
used * round(mem_busy / mem_total * len_visual)
).ljust(len_visual, free)
print(
' MEM'
)
print(
'TOTAL {}'.format(
human(mem_total),
)
)
print(
'N/A {} {}'.format(
human(mem_busy),
percent(mem_busy / mem_total),
)
)
print(
'AVAIL {} {}'.format(
human(mem_available),
percent(mem_available / mem_total),
)
)
print(
'DELTA {}'.format(
human(delta_mem),
)
)
print(
'{} {}'.format(
old_list[3], mem_visual
)
)
#2###################################################################################
else:
with open('/proc/swaps') as file:
swaps_list = file.readlines()[1:]
zram_id_list = []
disk_swap_size = 0
disk_swap_used = 0
zram_swap_size = 0
zram_swap_used = 0
for i in swaps_list:
x = swaps_raw(i)
if x[0].startswith('/dev/zram'):
zram_swap_size += int(x[1])
zram_swap_used += int(x[2])
zram_id_list.append(x[0][9:])
else:
disk_swap_size += int(x[1])
disk_swap_used += int(x[2])
if zram_swap_size == 0:
#3###################################################################################
# печать своп без зрам
mem_visual = (
used * round(mem_busy / mem_total * len_visual)
).ljust(len_visual, free)
swap_visual = (
used * round(swap_busy / swap_total * len_visual)
).ljust(len_visual, free)
mem_swap_visual = (
used * round(mem_swap_busy / mem_swap_total * len_visual)
).ljust(len_visual, free)
print(
' MEM SWAP MEM + SWAP'
)
print(
'TOTAL {} {} {}'.format(
human(mem_total),
human(swap_total),
human(mem_swap_total),
)
)
print(
'N/A {} {} {} {} {} {}'.format(
human(mem_busy),
percent(mem_busy / mem_total),
human(swap_busy),
percent(swap_busy / swap_total),
human(mem_swap_busy),
percent(mem_swap_busy / mem_swap_total),
)
)
print(
'AVAIL {} {} {} {} {} {}'.format(
human(mem_available),
percent(mem_available / mem_total),
human(swap_free),
percent(swap_free / swap_total),
human(mem_swap_free),
percent(mem_swap_free / mem_swap_total),
)
)
print(
'DELTA {} {} {}'.format(
human(delta_mem),
human(delta_swap),
human(delta_all)
)
)
print(
'{} {} {} {}'.format(
old_list[3],
mem_visual,
swap_visual,
mem_swap_visual,
)
)
print()
#4###################################################################################
else:
# суммируем показатели из всех свопов в зрам
disksize_sum = 0
mem_used_total_sum = 0
for i in zram_id_list:
s = zram_stat(i) # кортеж из disksize и mem_used_total для данного zram id
disksize_sum += int(s[0])
mem_used_total_sum += int(s[1])
# находим показатели для ZRAM
full = disksize_sum * k + mem_used_total_sum
profit = zram_swap_used - (full / 1024)
cr_real = round(zram_swap_used * 1024 / mem_used_total_sum, 2)
#5###################################################################################
# печать своп + зрам
mem_visual = (
used * round(mem_busy / mem_total * len_visual)
).ljust(len_visual, free)
swap_visual = (
used * round(swap_busy / swap_total * len_visual)
).ljust(len_visual, free)
mem_swap_visual = (
used * round(mem_swap_busy / mem_swap_total * len_visual)
).ljust(len_visual, free)
zram_visual = (
used * round(full / 1024 / mem_total * 18)
).ljust(18, free)
print(
' MEM SWAP MEM + SWAP ZRAM SWAP'
)
print(
'TOTAL {} {} {} PROFIT {} M'.format(
human(mem_total),
human(swap_total),
human(mem_swap_total),
human(profit)
)
)
print(
'N/A {} {} {} {} {} {} CR {}'.format(
human(mem_busy),
percent(mem_busy / mem_total),
human(swap_busy),
percent(swap_busy / swap_total),
human(mem_swap_busy),
percent(mem_swap_busy / mem_swap_total),
str(cr_real).rjust(7, ' ')
)
)
print(
'AVAIL {} {} {} {} {} {} FULL/MT {} %'.format(
human(mem_available),
percent(mem_available / mem_total),
human(swap_free),
percent(swap_free / swap_total),
human(mem_swap_free),
percent(mem_swap_free / mem_swap_total),
percent(full / 1024 / mem_total)
)
)
print(
'DELTA {} {} {}'.format(
human(delta_mem),
human(delta_swap),
human(delta_all)
)
)
print(
'{} {} {} {} {}'.format(
old_list[3],
mem_visual,
swap_visual,
mem_swap_visual,
zram_visual
)
)
print()
#6###################################################################################
# печать по партициям
print('FILENAME USED SIZE PRIORITY')
for i in swaps_list:
x = swaps_raw(i)
print(
'{} {} G {} % {} G {}'.format(
str(x[0]).ljust(26, ' '),
human(x[2]),
percent(x[2] / x[1]), human(x[1]),
str(x[3]).rjust(10, ' ')
)
)
return [mem_busy, swap_busy, mem_swap_busy, movie_dict[(old_list[3])], tn]
try:
delta = [0, 0, 0, '+----', 0]
if mode == 'log' or mode == '2':
while True:
delta = printer(delta)
sleep(period)
elif mode == 'inplace' or mode == '3':
while True:
print("\033c")
delta = printer(delta)
sleep(period)
else:
delta = printer(delta)
except KeyboardInterrupt:
print()
exit()