Skip to content

Commit

Permalink
top: Add crash count info
Browse files Browse the repository at this point in the history
Signed-off-by: iipeace <[email protected]>
  • Loading branch information
iipeace committed Jul 10, 2024
1 parent e723914 commit b7ffc48
Showing 1 changed file with 90 additions and 17 deletions.
107 changes: 90 additions & 17 deletions guider/guider.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
__credits__ = "Peace Lee"
__license__ = "GPLv2"
__version__ = "3.9.8"
__revision__ = "240709"
__revision__ = "240710"
__maintainer__ = "Peace Lee"
__email__ = "[email protected]"
__repository__ = "https://github.com/iipeace/guider"
Expand Down Expand Up @@ -7554,7 +7554,14 @@ def getPath(path):
return dirname, filename

@staticmethod
def getFiles(path, name=None, incFile=True, incDir=False, recursive=True):
def getFiles(
path,
name=None,
incFile=True,
incDir=False,
recursive=True,
exceptList=[],
):
flist = []

for r, d, f in os.walk(path):
Expand All @@ -7563,6 +7570,8 @@ def getFiles(path, name=None, incFile=True, incDir=False, recursive=True):
for s in target:
if name and not UtilMgr.isValidStr(s, name):
continue
elif exceptList and UtilMgr.isValidStr(s, exceptList):
continue
flist.append(os.path.join(r, s))

if not recursive:
Expand Down Expand Up @@ -27261,6 +27270,7 @@ class SysMgr(object):
cpuStealUsage = 0
nrOOMKill = 0
nrTotalOOMKill = -1
nrTotalCrash = -1
nrIrq = 0

# peak #
Expand Down Expand Up @@ -27675,6 +27685,52 @@ def getMaxPid():
except:
pass

@staticmethod
def getNrCrash():
try:
# custom #
customNrCrash = 0
crashDirs = SysMgr.environList.get("CRASHDIR", [])
for path in crashDirs:
if not os.path.isdir(path):
continue
customNrCrash += len(UtilMgr.getFiles(path, recursive=False))

# android #
path = "/data/tombstones"
if os.path.isdir(path):
nrCrash = len(
UtilMgr.getFiles(path, name=["*.pb"], recursive=False)
)
return nrCrash + customNrCrash

# ccos #
path = "/ccos/data/log/trace"
if os.path.isdir(path):
nrCrash = len(
UtilMgr.getFiles(
path, recursive=False, exceptList=["*json"]
)
)
return nrCrash + customNrCrash

# ubuntu #
path = "/var/crash"
if os.path.isdir(path):
nrCrash = len(
UtilMgr.getFiles(path, name=["*.crash"], recursive=False)
)
return nrCrash + customNrCrash

return customNrCrash
except SystemExit:
sys.exit(0)
except:
SysMgr.printWarn(
"failed to get the number of crash files", reason=True
)
return customNrCrash

@staticmethod
def waitForResource(cpuRes=-1, cpuCond="MORE", memRes=-1, memCond="MORE"):
# check condition #
Expand Down Expand Up @@ -29879,6 +29935,7 @@ def clearStats():
SysMgr.minMemAvail = SysMgr.maxSize
SysMgr.nrOOMKill = 0
SysMgr.nrTotalOOMKill = -1
SysMgr.nrTotalCrash = -1
SysMgr.maxNrUDPSock = 0
SysMgr.maxNrUDPTxQ = 0
SysMgr.maxNrUDPRxQ = 0
Expand All @@ -29902,10 +29959,6 @@ def getPeakList(incInter=True):
"blkWrMB": SysMgr.maxBlkWr,
"cpuPer": SysMgr.maxCpuUsage,
"cpuStealPer": SysMgr.maxCpuSteal,
"procCpuPer": SysMgr.maxProcCpuUsage,
"procCpuComm": SysMgr.maxProcCpuComm,
"procMemMB": SysMgr.maxProcMemUsage,
"procMemComm": SysMgr.maxProcMemComm,
"diskFreeMB": SysMgr.minDiskFree,
"gpuPer": SysMgr.maxGpuUsage,
"gpumemMB": SysMgr.maxGpuMemUsage,
Expand All @@ -29916,12 +29969,17 @@ def getPeakList(incInter=True):
"netOutMB": SysMgr.maxNetOut,
"nrContextSwitch": SysMgr.maxNrContextSwitch,
"nrCore": SysMgr.maxNrCore,
"nrCrash": SysMgr.nrTotalCrash,
"nrFd": SysMgr.maxNrFd,
"nrIrq": SysMgr.maxNrIrq,
"nrLoad15m": SysMgr.maxLoad15m,
"nrLoad1m": SysMgr.maxLoad1m,
"nrLoad5m": SysMgr.maxLoad5m,
"nrLoad15m": SysMgr.maxLoad15m,
"nrOOMKill": SysMgr.nrTotalOOMKill,
"procCpuComm": SysMgr.maxProcCpuComm,
"procCpuPer": SysMgr.maxProcCpuUsage,
"procMemComm": SysMgr.maxProcMemComm,
"procMemMB": SysMgr.maxProcMemUsage,
"nrProcess": SysMgr.maxNrProcess,
"nrTaskAbnormal": SysMgr.maxNrTaskAbnormal,
"nrTaskDie": SysMgr.maxNrTaskDie,
Expand Down Expand Up @@ -30929,13 +30987,13 @@ def parseNewTombstone(buf):
)

# get header #
idx = 1
fidx = 0
lines = buf.split("\n")[1:]
for l in lines:
for idx, l in enumerate(lines):
if not l or not l[0]:
idx += 1
continue
elif l.startswith("backtrace:"):
fidx = idx
break
elif UtilMgr.isValidStr(l, kfilter):
d = l.split(":", 1)
Expand All @@ -30948,10 +31006,8 @@ def parseNewTombstone(buf):
d = l.split(" ", 1)
res[d[0].strip()] = d[1].strip()

idx += 1

# get backtrace #
res = SysMgr.parseTombstoneLines(lines, res, idx, 5, 2)
res = SysMgr.parseTombstoneLines(lines, res, fidx, 5, 2)

return res

Expand Down Expand Up @@ -37095,6 +37151,9 @@ def printHelp(force=False, isExit=True):
- {3:1} all {2:1} with memory(RSS) adding swap
# {0:1} {1:1} -a -q SWAPMEMSUM

- {3:1} all {2:1} with crash count from crash directories
# {0:1} {1:1} -a -q CRASHDIR:/data/crash

- {3:1} all {2:1} with GPU memory
# {0:1} {1:1} -a -q GPUMEM
# {0:1} {1:1} -a -q GPUMEM, GPUALLMEM
Expand Down Expand Up @@ -92914,7 +92973,7 @@ def _addTitle(title, titleLines):
SysMgr.printWarn(new, newline=False)
return title

def _loadSamples(fname):
def _loadSamples(fname, nrSamples, nrFiles):
# get samples #
samples, metas = getter(fname, verb=verb)

Expand All @@ -92925,7 +92984,7 @@ def _loadSamples(fname):
# check sample #
if not samples or not samples[0]:
SysMgr.printErr("no call sample for '%s'" % fname)
return
return nrSamples, nrFiles

totalCnt = 0
for si, sampleList in enumerate(samples):
Expand Down Expand Up @@ -93018,11 +93077,13 @@ def _loadSamples(fname):
else:
titleList[ts] = pathInfo

return nrSamples, nrFiles

# load call samples #
for fname in inputList:
# get list for call samples #
try:
_loadSamples(fname)
nrSamples, nrFiles = _loadSamples(fname, nrSamples, nrFiles)
except SystemExit:
sys.exit(0)
except:
Expand Down Expand Up @@ -141155,6 +141216,17 @@ def printDefaultUsage(self, title):
oomstr = " "
oomKill = 0

try:
SysMgr.nrTotalCrash = SysMgr.getNrCrash()
if SysMgr.nrTotalCrash:
crashstr = " [Crash: %d] " % SysMgr.nrTotalCrash
else:
crashstr = " "
except SystemExit:
sys.exit(0)
except:
crashstr = " "

try:
self.nrContextSwitch = nrCtxt = (
self.cpuData["ctxt"]["ctxt"] - self.prevCpuData["ctxt"]["ctxt"]
Expand Down Expand Up @@ -141230,7 +141302,7 @@ def printDefaultUsage(self, title):
(
"%s [Time: %7.3f] [Inter: %.1f]%s [Ctxt: %d] "
"[Life: +%d/-%d]%s[IRQ: %d]%s[Core: %d] [Task: %d/%d] "
"[Load: %s] [RAM: %s] [Swap: %s]%s\n"
"[Load: %s] [RAM: %s] [Swap: %s]%s%s\n"
)
% (
title,
Expand All @@ -141250,6 +141322,7 @@ def printDefaultUsage(self, title):
memTotal,
swapTotal,
battery,
crashstr,
),
"BOLD",
)
Expand Down

0 comments on commit b7ffc48

Please sign in to comment.