60 lines
2.4 KiB
Python
60 lines
2.4 KiB
Python
# coding: UTF-8
|
|
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
|
#
|
|
# openGauss is licensed under Mulan PSL v2.
|
|
# You can use this software according to the terms
|
|
# and conditions of the Mulan PSL v2.
|
|
# You may obtain a copy of Mulan PSL v2 at:
|
|
#
|
|
# http://license.coscl.org.cn/MulanPSL2
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OF ANY KIND,
|
|
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
# See the Mulan PSL v2 for more details.
|
|
# ----------------------------------------------------------------------------
|
|
import os
|
|
from gspylib.inspection.common import SharedFuncs
|
|
from gspylib.inspection.common.CheckItem import BaseItem
|
|
from gspylib.inspection.common.CheckResult import ResultStatus
|
|
|
|
|
|
class CheckKeyProAdj(BaseItem):
|
|
def __init__(self):
|
|
super(CheckKeyProAdj, self).__init__(self.__class__.__name__)
|
|
|
|
def doCheck(self):
|
|
procadj = {}
|
|
result = ""
|
|
prolist = ['om_monitor', 'cm_agent', 'gaussdb', 'cm_server', 'gtm',
|
|
'etcd']
|
|
gausshome = self.cluster.appPath
|
|
gaussdbpath = os.path.join(gausshome, "bin/gaussdb")
|
|
for process in prolist:
|
|
if (process == 'gaussdb'):
|
|
getpidcmd = "ps ux| grep '%s'|grep -v 'grep'|awk '{print " \
|
|
"$2}'" \
|
|
% gaussdbpath
|
|
else:
|
|
getpidcmd = "ps ux| grep '%s'|grep -v 'grep'|awk '{print " \
|
|
"$2}'" \
|
|
% process
|
|
pids = SharedFuncs.runShellCmd(getpidcmd)
|
|
for pid in pids.splitlines():
|
|
getAdjcmd = "cat /proc/%s/oom_adj" % pid
|
|
adjValue = SharedFuncs.runShellCmd(getAdjcmd)
|
|
if (int(adjValue) < 0):
|
|
tmpkey = "%s_%s" % (process, pid)
|
|
procadj[tmpkey] = adjValue
|
|
if (procadj):
|
|
self.result.rst = ResultStatus.NG
|
|
for key, value in procadj.items():
|
|
result += "%s : %s \n" % (key, value)
|
|
self.result.val = "There are processes omm_adj value " \
|
|
"less than 0 \n%s" % (result)
|
|
else:
|
|
self.result.rst = ResultStatus.OK
|
|
self.result.val = "All key processes omm_adj value" \
|
|
" are not less than 0"
|