Skip to content

Commit

Permalink
topdiff: Support various sorting
Browse files Browse the repository at this point in the history
Signed-off-by: iipeace <iipeace5@gmail.com>
  • Loading branch information
iipeace committed Sep 2, 2024
1 parent eb87e89 commit 47d8283
Showing 1 changed file with 97 additions and 38 deletions.
135 changes: 97 additions & 38 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__ = "240901"
__revision__ = "240902"
__maintainer__ = "Peace Lee"
__email__ = "iipeace5@gmail.com"
__repository__ = "https://github.com/iipeace/guider"
Expand Down Expand Up @@ -38097,6 +38097,7 @@ def printHelp(force=False, isExit=True):

- {2:1} that haven't been summarized yet for specific files
# {0:1} {1:1} {4:1} -q TOPSUM
# {0:1} {1:1} {4:1} -q TOPSUM, CLEANCHAR
# {0:1} {1:1} {4:1} -q TOPSUM, INCKERNELMEM
# {0:1} {1:1} {4:1} -q TOPSUM, INCKERNELMEM, DRAWRSS

Expand Down Expand Up @@ -42441,6 +42442,12 @@ def _getDesc(s, t=0):
# {0:1} {1:1} "tc1.out, tc2.out"
# {0:1} {1:1} "tc*.out"

- {2:1} after summarizing stats
# {0:1} {1:1} "tc*.out" -q TOPSUM

- {2:1} after removing special characters
# {0:1} {1:1} "tc*.out" -q CLEANCHAR

- {2:1} without merging tasks having same name
# {0:1} {1:1} "tc*.out" -q NOMERGE

Expand Down Expand Up @@ -42474,10 +42481,15 @@ def _getDesc(s, t=0):
# {0:1} {1:1} "tc*.out" -q UNITFILTER:"*hmi*"
# {0:1} {1:1} "tc*.out" -q UNITEXFILTER:"*hmi*"

- {2:1} and sort by specific values
# {0:1} {1:1} "tc*.out" -q SORT:MIN
# {0:1} {1:1} "tc*.out" -q SORT:MAX
# {0:1} {1:1} "tc*.out" -q SORT:TOTAL

- {2:1} and sort by specific values for systemd stats
# {0:1} {1:1} "tc*.out" -q SORT:INITDIFF
# {0:1} {1:1} "tc*.out" -q SORT:START
# {0:1} {1:1} "tc*.out" -q SORT:NAME
# {0:1} {1:1} "tc*.out" -q SDSORT:INITDIFF
# {0:1} {1:1} "tc*.out" -q SDSORT:START
# {0:1} {1:1} "tc*.out" -q SDSORT:NAME

- {2:1} in JSON format
# {0:1} {1:1} "tc*.out" -J
Expand Down Expand Up @@ -115787,7 +115799,23 @@ def _getProcName(pinfo):
item = "total"
diffType = "TotDiff"

# set sort func #
sortVal = SysMgr.environList.get("SORT", [""])[0].upper()
if sortVal == "MIN":
item = "minimum"
diffType = "minDiff"
elif sortVal == "MAX":
item = "maximum"
diffType = "maxDiff"
elif sortVal == "TOTAL":
item = "total"
diffType = "TotDiff"
else:
item = "average"
diffType = "AvgDiff"

# parse stats from multiple files #
validFlist = []
for idx, lfile in enumerate(flist):
try:
gstats, _ = TaskAnalyzer.getStatsFile(lfile, applyOpt=False)
Expand All @@ -115799,6 +115827,7 @@ def _getProcName(pinfo):
sys.exit(-1)

# save all stats in a file #
validFlist.append(lfile)
statFileList[lfile] = gstats

# define proc usage #
Expand Down Expand Up @@ -115902,7 +115931,10 @@ def _getProcName(pinfo):
if idx > 0:
targetList = {}
prevIdx = 0 if fromStart else idx - 1
prevProcList = statFileList[flist[prevIdx]]["cpuProcUsage"]
prevList = flist[prevIdx]
if not prevList in statFileList:
continue
prevProcList = statFileList[prevList]["cpuProcUsage"]

for proc, pval in prevProcList.items():
if _getProcName(proc) == pname:
Expand All @@ -115922,27 +115954,29 @@ def _getProcName(pinfo):
cpuStats = statFileList[lfile]["cpuProcUsage"]
for pname in list(unionCpuList):
try:
unionCpuList[pname] = cpuStats[pname]["average"]
unionCpuList[pname] = cpuStats[pname][item]
except SystemExit:
sys.exit(0)
except:
pass
elif idx == nrFiles - 1 and nrFiles > 1:
prevProcList = statFileList[flist[-2]]["cpuProcUsage"]
lastProcList = statFileList[flist[-1]]["cpuProcUsage"]
prevProcList = statFileList.get(flist[-2], {}).get(
"cpuProcUsage", {}
)
lastProcList = statFileList.get(flist[-1], {}).get(
"cpuProcUsage", {}
)
for pname, value in unionCpuList.items():
if pname in lastProcList:
try:
unionCpuList[pname] = (
lastProcList[pname]["average"]
- prevProcList[pname]["average"]
lastProcList[pname][item]
- prevProcList[pname][item]
)
except:
unionCpuList[pname] = lastProcList[pname][
"average"
]
unionCpuList[pname] = lastProcList[pname][item]
elif pname in prevProcList:
unionCpuList[pname] = -(prevProcList[pname]["average"])
unionCpuList[pname] = -(prevProcList[pname][item])

# remove * characters #
for pinfo in sorted(gpuProcUsage):
Expand Down Expand Up @@ -116014,7 +116048,10 @@ def _getProcName(pinfo):
if idx > 0:
targetList = {}
prevIdx = 0 if fromStart else idx - 1
prevProcList = statFileList[flist[prevIdx]]["gpuProcUsage"]
prevList = flist[prevIdx]
if not prevList in statFileList:
continue
prevProcList = statFileList[prevList]["gpuProcUsage"]

for proc, pval in prevProcList.items():
if _getProcName(proc) == pname:
Expand All @@ -116034,7 +116071,7 @@ def _getProcName(pinfo):
gpuStats = statFileList[lfile]["gpuProcUsage"]
for pname in list(unionGpuList):
try:
unionGpuList[pname] = gpuStats[pname]["average"]
unionGpuList[pname] = gpuStats[pname][item]
except SystemExit:
sys.exit(0)
except:
Expand Down Expand Up @@ -116115,7 +116152,10 @@ def _getProcName(pinfo):
if idx > 0:
targetList = {}
prevIdx = 0 if fromStart else idx - 1
prevProcList = statFileList[flist[prevIdx]]["memProcUsage"]
prevList = flist[prevIdx]
if not prevList in statFileList:
continue
prevProcList = statFileList[prevList]["memProcUsage"]

for proc, pval in prevProcList.items():
if _getProcName(proc) == pname:
Expand Down Expand Up @@ -116146,8 +116186,12 @@ def _getProcName(pinfo):
except:
pass
elif idx == nrFiles - 1 and nrFiles > 1:
prevProcList = statFileList[flist[-2]]["memProcUsage"]
lastProcList = statFileList[flist[-1]]["memProcUsage"]
prevProcList = statFileList.get(flist[-2], {}).get(
"memProcUsage", {}
)
lastProcList = statFileList.get(flist[-1], {}).get(
"memProcUsage", {}
)
for pname, value in unionRssList.items():
# set stat #
if pname == "FREE":
Expand Down Expand Up @@ -116176,7 +116220,9 @@ def _getProcName(pinfo):
eventFilter = SysMgr.environList.get("UNITFILTER", [])
eventExFilter = SysMgr.environList.get("UNITEXFILTER", [])
sortByName = False
sortStd = SysMgr.environList.get("SORT", ["STARTDIFF"])[0].upper()
sortStd = SysMgr.environList.get("SDSORT", ["STARTDIFF"])[
0
].upper()
if sortStd == "INITDIFF":
sortStd = "initDiff"
elif sortStd == "START":
Expand Down Expand Up @@ -116329,7 +116375,7 @@ def _printer(string):
totalBuf = ""
menuBuf = "{0:^16} | ".format("Task")
printBuf = "{0:^16} | ".format("File")
for fname in flist:
for fname in validFlist:
fpath = fname[-lenCpuStat + 1 :]
if "ONLYFILE" in SysMgr.environList:
fpath = os.path.basename(fpath)
Expand Down Expand Up @@ -116376,14 +116422,16 @@ def _printer(string):
printBuf = "%16s | " % pname[-16:]

totalerr = 0
for idx, fname in enumerate(flist):
for idx, fname in enumerate(validFlist):
try:
prevCpuProcList = statFileList[flist[idx - 1]][
prevCpuProcList = statFileList[validFlist[idx - 1]][
"cpuProcUsage"
]
except:
prevCpuProcList = {}

if not fname in statFileList:
continue
cpuProcList = statFileList[fname]["cpuProcUsage"]
jsonData["cpu"].setdefault(pname, {})

Expand Down Expand Up @@ -116492,7 +116540,7 @@ def _printer(string):
# print file names #
menuBuf = "{0:^24} | ".format("Task")
printBuf = "{0:^24} | ".format("File")
for fname in flist:
for fname in validFlist:
fpath = fname[-lenGpuStat + 1 :]
if "ONLYFILE" in SysMgr.environList:
fpath = os.path.basename(fpath)
Expand Down Expand Up @@ -116530,14 +116578,16 @@ def _printer(string):
):
totalerr = 0
printBuf = "%24s | " % pname[-24:]
for idx, fname in enumerate(flist):
for idx, fname in enumerate(validFlist):
try:
prevGpuProcList = statFileList[flist[idx - 1]][
prevGpuProcList = statFileList[validFlist[idx - 1]][
"gpuProcUsage"
]
except:
prevGpuProcList = {}

if not fname in statFileList:
continue
gpuProcList = statFileList[fname]["gpuProcUsage"]
jsonData["gpu"].setdefault(pname, {})

Expand Down Expand Up @@ -116633,7 +116683,7 @@ def _printer(string):
totalBuf = ""
menuBuf = "{0:^16} | ".format("Task")
printBuf = "{0:^16} | ".format("File")
for fname in flist:
for fname in validFlist:
fpath = fname[-lenRssStat + 1 :]
if "ONLYFILE" in SysMgr.environList:
fpath = os.path.basename(fpath)
Expand Down Expand Up @@ -116678,14 +116728,16 @@ def _printer(string):
printBuf = "%16s | " % pname[-16:]

totalerr = 0
for idx, fname in enumerate(flist):
for idx, fname in enumerate(validFlist):
try:
prevRssProcList = statFileList[flist[idx - 1]][
prevRssProcList = statFileList[validFlist[idx - 1]][
"memProcUsage"
]
except:
prevRssProcList = {}

if not fname in statFileList:
continue
rssProcList = statFileList[fname]["memProcUsage"]
jsonData["mem"].setdefault(pname, {})

Expand Down Expand Up @@ -116780,7 +116832,7 @@ def _printer(string):
totalBuf = ""
menuBuf = ""
printBuf = ""
for fname in flist:
for fname in validFlist:
fpath = fname[-lenSdStat + 1 :]
if "ONLYFILE" in SysMgr.environList:
fpath = os.path.basename(fpath)
Expand Down Expand Up @@ -116831,13 +116883,13 @@ def _printer(string):
printBuf = " "

totalerr = 0
for idx, fname in enumerate(flist):
for idx, fname in enumerate(validFlist):
try:
if idx == 0:
raise Exception()
prevSdList = statFileList[flist[idx - 1]]["systemdInfo"][
"BOOT"
]["EARLY"]
prevSdList = statFileList[validFlist[idx - 1]][
"systemdInfo"
]["BOOT"]["EARLY"]
except:
prevSdList = {}

Expand Down Expand Up @@ -116903,13 +116955,13 @@ def _printer(string):
printBuf = " "

totalerr = 0
for idx, fname in enumerate(flist):
for idx, fname in enumerate(validFlist):
try:
if idx == 0:
raise Exception()
prevSdList = statFileList[flist[idx - 1]]["systemdInfo"][
"BOOT"
]
prevSdList = statFileList[validFlist[idx - 1]][
"systemdInfo"
]["BOOT"]
except:
prevSdList = {}

Expand Down Expand Up @@ -118529,7 +118581,9 @@ def getStatsFile(
norecfile = "NORECFILE" in envList
recfileFilter = envList.get("RECFILEFILTER")
lifeEvent = "LIFEEVENT" in SysMgr.environList
cleanChar = "CLEANCHAR" in SysMgr.environList

# define shortcuts #
convSize = UtilMgr.convUnit2Size

curSize = 0
Expand All @@ -118542,6 +118596,11 @@ def getStatsFile(
curSize += len(line) + 1
UtilMgr.printProgress(curSize, totalSize)

# remove invalid characters #
if cleanChar:
line = UtilMgr.removeColor(line)
line = SysMgr.convExtAscii(line, True)

# get system info #
try:
if not SysMgr.sysinfoBuffer and line.startswith(
Expand Down

0 comments on commit 47d8283

Please sign in to comment.