update oom-sort (small fix)
This commit is contained in:
parent
5e67ec9ec3
commit
dab381b62c
@ -8,64 +8,44 @@ from operator import itemgetter
|
|||||||
from os import listdir
|
from os import listdir
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# define funtcions
|
|
||||||
|
|
||||||
|
|
||||||
def pid_to_oom_score(pid):
|
def pid_to_oom_score(pid):
|
||||||
with open('/proc/' + pid + '/oom_score') as f:
|
with open('/proc/{}/oom_score'.format(pid), 'rb', buffering=0) as f:
|
||||||
return f.readline()[:-1]
|
return int(f.read())
|
||||||
|
|
||||||
|
|
||||||
def pid_to_oom_score_adj(pid):
|
def pid_to_oom_score_adj(pid):
|
||||||
with open('/proc/' + pid + '/oom_score_adj') as f:
|
with open('/proc/{}/oom_score_adj'.format(pid), 'rb', buffering=0) as f:
|
||||||
return f.readline()[:-1]
|
return int(f.read())
|
||||||
|
|
||||||
|
|
||||||
def pid_to_cmdline(pid):
|
def pid_to_cmdline(pid):
|
||||||
"""
|
with open('/proc/{}/cmdline'.format(pid), 'rb', buffering=0) as f:
|
||||||
Get process cmdline by pid.
|
return f.read().decode('utf-8', 'ignore').replace(
|
||||||
|
'\x00', ' ').rstrip()
|
||||||
pid: str pid of required process
|
|
||||||
returns string cmdline
|
|
||||||
"""
|
|
||||||
with open('/proc/' + pid + '/cmdline') as f:
|
|
||||||
return f.read().replace('\x00', ' ').rstrip()
|
|
||||||
|
|
||||||
|
|
||||||
def pid_to_status_units(pid):
|
def pid_to_status_units(pid):
|
||||||
|
with open('/proc/{}/status'.format(pid), 'rb', buffering=0) as f:
|
||||||
with open('/proc/' + pid + '/status', 'rb') as f:
|
|
||||||
f_list = f.read().decode('utf-8', 'ignore').split('\n')
|
f_list = f.read().decode('utf-8', 'ignore').split('\n')
|
||||||
|
|
||||||
for i in range(len(f_list)):
|
for i in range(len(f_list)):
|
||||||
|
|
||||||
if i == 1:
|
if i == 1:
|
||||||
name = f_list[0].split('\t')[1]
|
name = f_list[0].split('\t')[1]
|
||||||
|
|
||||||
if i == uid_index:
|
if i == uid_index:
|
||||||
uid = f_list[i].split('\t')[2]
|
uid = f_list[i].split('\t')[2]
|
||||||
|
|
||||||
if i == vm_rss_index:
|
if i == vm_rss_index:
|
||||||
vm_rss = f_list[i].split('\t')[1][:-3]
|
vm_rss = f_list[i].split('\t')[1][:-3]
|
||||||
|
|
||||||
if i == vm_swap_index:
|
if i == vm_swap_index:
|
||||||
vm_swap = f_list[i].split('\t')[1][:-3]
|
vm_swap = f_list[i].split('\t')[1][:-3]
|
||||||
|
|
||||||
return name, uid, vm_rss, vm_swap
|
return name, uid, vm_rss, vm_swap
|
||||||
|
|
||||||
|
|
||||||
def get_max_pid_len():
|
def get_max_pid_len():
|
||||||
with open('/proc/sys/kernel/pid_max') as file:
|
with open('/proc/sys/kernel/pid_max') as f:
|
||||||
for line in file:
|
for line in f:
|
||||||
return len(line.strip())
|
return len(line.strip())
|
||||||
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
|
|
||||||
sort_dict = {
|
sort_dict = {
|
||||||
'PID': 0,
|
'PID': 0,
|
||||||
'oom_score': 1,
|
'oom_score': 1,
|
||||||
@ -78,13 +58,6 @@ sort_dict = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# parse CLI args
|
|
||||||
|
|
||||||
# @TODO: user input validation
|
|
||||||
|
|
||||||
parser = ArgumentParser()
|
parser = ArgumentParser()
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@ -129,8 +102,6 @@ if sort_by not in sort_dict:
|
|||||||
exit()
|
exit()
|
||||||
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
# find VmRSS, VmSwap and UID positions in /proc/*/status for further
|
# find VmRSS, VmSwap and UID positions in /proc/*/status for further
|
||||||
# searching positions of UID, VmRSS and VmSwap in each process
|
# searching positions of UID, VmRSS and VmSwap in each process
|
||||||
|
|
||||||
@ -146,8 +117,6 @@ vm_rss_index = status_names.index('VmRSS')
|
|||||||
vm_swap_index = status_names.index('VmSwap')
|
vm_swap_index = status_names.index('VmSwap')
|
||||||
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
# get sorted list with pid, oom_score, oom_score_adj, cmdline
|
# get sorted list with pid, oom_score, oom_score_adj, cmdline
|
||||||
# get status units: name, uid, rss, swap
|
# get status units: name, uid, rss, swap
|
||||||
|
|
||||||
@ -191,8 +160,6 @@ oom_list_sorted = sorted(
|
|||||||
oom_list, key=itemgetter(int(sort_dict[sort_by])), reverse=True)
|
oom_list, key=itemgetter(int(sort_dict[sort_by])), reverse=True)
|
||||||
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
# find width of columns
|
# find width of columns
|
||||||
|
|
||||||
|
|
||||||
@ -204,15 +171,12 @@ max_uid_len = len(str(sorted(
|
|||||||
|
|
||||||
|
|
||||||
max_vm_rss_len = len(str(round(
|
max_vm_rss_len = len(str(round(
|
||||||
sorted(oom_list, key=itemgetter(6), reverse=True)[0][6] / 1024.0)))
|
sorted(oom_list, key=itemgetter(6), reverse=True)[0][6] / 1024)))
|
||||||
|
|
||||||
if max_vm_rss_len < 5:
|
if max_vm_rss_len < 5:
|
||||||
max_vm_rss_len = 5
|
max_vm_rss_len = 5
|
||||||
|
|
||||||
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# print output
|
# print output
|
||||||
|
|
||||||
if display_cmdline == 0:
|
if display_cmdline == 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user