From a1788ce9ac4927be8ef0594048fae69d60582b5c Mon Sep 17 00:00:00 2001 From: "guangshui.li" Date: Wed, 22 Feb 2023 19:16:49 +0800 Subject: [PATCH 1/6] iosdiag: Fix error log exec iosdiag latency Signed-off-by: guangshui.li --- source/tools/combine/iosdiag/entry/iosdiag.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/tools/combine/iosdiag/entry/iosdiag.sh b/source/tools/combine/iosdiag/entry/iosdiag.sh index 1c53752e..5f34b42e 100755 --- a/source/tools/combine/iosdiag/entry/iosdiag.sh +++ b/source/tools/combine/iosdiag/entry/iosdiag.sh @@ -125,7 +125,7 @@ enable_latency() { #mkdir -p `dirname $datafile` chmod +x $latency_bin rm -f $(dirname $logfile)/result.log* - $SYSAK_WORK_PATH/../sysak btf + #$SYSAK_WORK_PATH/../sysak btf $latency_bin $* & wait $! disable_latency -- Gitee From a7a034a9b1cb83449ebf9d74ec67320dc655144f Mon Sep 17 00:00:00 2001 From: "guangshui.li" Date: Tue, 28 Feb 2023 11:19:06 +0800 Subject: [PATCH 2/6] iosdiag: Delete the ps call in the exit process to avoid blocking due to the system HANG Signed-off-by: guangshui.li --- source/tools/combine/iosdiag/entry/iosdiag.sh | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/source/tools/combine/iosdiag/entry/iosdiag.sh b/source/tools/combine/iosdiag/entry/iosdiag.sh index 5f34b42e..763fb24c 100755 --- a/source/tools/combine/iosdiag/entry/iosdiag.sh +++ b/source/tools/combine/iosdiag/entry/iosdiag.sh @@ -87,15 +87,21 @@ enable_hangdetect() { hang_mod_depend chmod +x $hangdetect_bin rm -f $(dirname $logfile)/result.log* - $hangdetect_bin $* - wait $! + $hangdetect_bin $* & + hangdetect_pid=$! + wait $hangdetect_pid disable_hangdetect } 3<> /tmp/hangdetect.lock } disable_hangdetect() { - pid=`ps -ef | grep "\$hangdetect_bin" | awk '{print $2}'` - if [ "$pid" != "" ] + pid=$hangdetect_pid + if [ $diag_stop ]; then + pid=`ps -ef | grep "\$hangdetect_bin" | grep -v "grep" | awk '{print $2}'` + fi + + comm=`cat /proc/$pid/comm 2>/dev/null` + if [ "$comm" = "hangdetect" ] then kill -9 $pid 2>/dev/null fi @@ -105,9 +111,11 @@ disable_hangdetect() { rmmod sysak fi - datafile_analysis hangdetect - if [ -n "$url" ]; then - upload_data hangdetect + if [ ! $diag_stop ]; then + datafile_analysis hangdetect + if [ -n "$url" ]; then + upload_data hangdetect + fi fi exit 0 } @@ -127,21 +135,29 @@ enable_latency() { rm -f $(dirname $logfile)/result.log* #$SYSAK_WORK_PATH/../sysak btf $latency_bin $* & - wait $! + latency_pid=$! + wait $latency_pid disable_latency } 3<> /tmp/latency.lock } disable_latency() { - pid=`ps -ef | grep "\$latency_bin" | awk '{print $2}'` - if [ "$pid" != "" ] + pid=$latency_pid + if [ $diag_stop ]; then + pid=`ps -ef | grep "\$latency_bin" | grep -v "grep" | awk '{print $2}'` + fi + + if [ "$comm" = "latency" ] then + echo "kill -9 $pid 2>/dev/null" kill -9 $pid 2>/dev/null fi - datafile_analysis latency - if [ -n "$url" ]; then - upload_data latency + if [ ! $diag_stop ]; then + datafile_analysis latency + if [ -n "$url" ]; then + upload_data latency + fi fi exit 0 } @@ -161,6 +177,7 @@ function execute() { enable_$1 ${*:2} } +diag_stop= while getopts 'hs:u:' OPT; do case $OPT in "u") -- Gitee From 4c7f63e2516abb9643944e66c82a0f00abbf6db7 Mon Sep 17 00:00:00 2001 From: "guangshui.li" Date: Tue, 28 Feb 2023 11:52:06 +0800 Subject: [PATCH 3/6] iosdiag: Delete debug code Signed-off-by: guangshui.li --- source/tools/combine/iosdiag/entry/iosdiag.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/source/tools/combine/iosdiag/entry/iosdiag.sh b/source/tools/combine/iosdiag/entry/iosdiag.sh index 763fb24c..b62cb53c 100755 --- a/source/tools/combine/iosdiag/entry/iosdiag.sh +++ b/source/tools/combine/iosdiag/entry/iosdiag.sh @@ -149,7 +149,6 @@ disable_latency() { if [ "$comm" = "latency" ] then - echo "kill -9 $pid 2>/dev/null" kill -9 $pid 2>/dev/null fi -- Gitee From 0e4dd03346ad90465fc3f0bc2d7dc547a3c2763d Mon Sep 17 00:00:00 2001 From: "guangshui.li" Date: Tue, 21 Mar 2023 16:38:35 +0800 Subject: [PATCH 4/6] iosdiag: Fix "IdxError" Signed-off-by: guangshui.li --- .../combine/iosdiag/data_analysis/iosdiag_data_analysis.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/tools/combine/iosdiag/data_analysis/iosdiag_data_analysis.py b/source/tools/combine/iosdiag/data_analysis/iosdiag_data_analysis.py index 7fb31382..9daea5a9 100644 --- a/source/tools/combine/iosdiag/data_analysis/iosdiag_data_analysis.py +++ b/source/tools/combine/iosdiag/data_analysis/iosdiag_data_analysis.py @@ -86,7 +86,10 @@ class latencyAnalysis: diskIdx = diskIdxDicts[disk] delayDicts['summary'][diskIdx]['slow ios'].append(sDict) for component,idx in componentDicts.items(): - delay = sDict['delays'][idx]['delay'] + try: + delay = sDict['delays'][idx]['delay'] + except Exception: + return if delay > delayStatDicts['summary'][diskIdx]['delays'][idx]['max']: delayStatDicts['summary'][diskIdx]['delays'][idx]['max'] = delay if delay < delayStatDicts['summary'][diskIdx]['delays'][idx]['min']: -- Gitee From c7c549a7220d87ba4110764928781f3bbc0c5169 Mon Sep 17 00:00:00 2001 From: "guangshui.li" Date: Fri, 14 Apr 2023 14:25:05 +0800 Subject: [PATCH 5/6] iosdiag/latency: Fix the bug where iosdiag cannot stop latency Signed-off-by: guangshui.li --- source/tools/combine/iosdiag/entry/iosdiag.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/source/tools/combine/iosdiag/entry/iosdiag.sh b/source/tools/combine/iosdiag/entry/iosdiag.sh index b62cb53c..ccbe458f 100755 --- a/source/tools/combine/iosdiag/entry/iosdiag.sh +++ b/source/tools/combine/iosdiag/entry/iosdiag.sh @@ -147,6 +147,7 @@ disable_latency() { pid=`ps -ef | grep "\$latency_bin" | grep -v "grep" | awk '{print $2}'` fi + comm=`cat /proc/$pid/comm 2>/dev/null` if [ "$comm" = "latency" ] then kill -9 $pid 2>/dev/null -- Gitee From 5affd41632c14d90a12c71fc217906ed30e12898 Mon Sep 17 00:00:00 2001 From: "guangshui.li" Date: Wed, 3 May 2023 13:14:15 +0800 Subject: [PATCH 6/6] io: Fix compatibility issues with Python versions Signed-off-by: guangshui.li --- source/tools/detect/io/iowaitstat/iowaitstat.py | 16 +++++++++++----- source/tools/detect/mem/fcachetop/fcachetop.py | 13 +++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/source/tools/detect/io/iowaitstat/iowaitstat.py b/source/tools/detect/io/iowaitstat/iowaitstat.py index 4680f7d9..12a31658 100755 --- a/source/tools/detect/io/iowaitstat/iowaitstat.py +++ b/source/tools/detect/io/iowaitstat/iowaitstat.py @@ -95,7 +95,7 @@ class iowaitClass(): self.expression.append('r:r_%s_0 %s%s' % (kprobe, kprobe, commArgs)) self.kprobe.append('r_%s_0' % kprobe) if len(self.kprobe) == 0: - print "not available kprobe" + print("%s" % ("not available kprobe")) sys.exit(0) def config(self): @@ -115,7 +115,10 @@ class iowaitClass(): echoFile(self.tracingDir+"/trace", "") echoFile(self.tracingDir+"/tracing_on", "1") with open("/proc/stat") as fStat: - cpuStatList = map(long, fStat.readline().split()[1:]) + try: + cpuStatList = list(map(long, fStat.readline().split()[1:])) + except Exception: + cpuStatList = list(map(int, fStat.readline().split()[1:])) self.cpuStatIowait['sum'] = sum(cpuStatList) self.cpuStatIowait['iowait'] = cpuStatList[4] @@ -182,7 +185,10 @@ class iowaitClass(): commArgs = self.ftracePaserCommArgs with open("/proc/stat") as fStat: - statList = map(long, fStat.readline().split()[1:]) + try: + statList = list(map(long, fStat.readline().split()[1:])) + except Exception: + statList = list(map(int, fStat.readline().split()[1:])) gloabIowait = float(format( (statList[4]-self.cpuStatIowait['iowait'])*100.0 / (sum(statList)-self.cpuStatIowait['sum']), '.2f')) @@ -253,7 +259,7 @@ class iowaitClass(): if self.json == False: head = str(time.strftime('%Y/%m/%d %H:%M:%S', time.localtime()))+' -> global iowait%: '+str(gloabIowait) - print head + print(head) if stat: stat = OrderedDict(sorted(stat.items(), key=lambda e: e[1]["timeout"], reverse=True)) @@ -298,7 +304,7 @@ class iowaitClass(): def main(): if os.geteuid() != 0: - print "This program must be run as root. Aborting." + print("%s" % ("This program must be run as root. Aborting.")) sys.exit(0) examples = """e.g. ./iowaitstat.py diff --git a/source/tools/detect/mem/fcachetop/fcachetop.py b/source/tools/detect/mem/fcachetop/fcachetop.py index d329a2ff..e4784c3c 100644 --- a/source/tools/detect/mem/fcachetop/fcachetop.py +++ b/source/tools/detect/mem/fcachetop/fcachetop.py @@ -26,7 +26,7 @@ except ImportError: c_off_t = c_longlong if is_64bits else c_int if os.geteuid() != 0: - print "This program must be run as root. Aborting." + print("%s" % ("This program must be run as root. Aborting.")) sys.exit(1) MAP_FAILED = c_ulong(-1).value @@ -84,12 +84,12 @@ class Filecachestat: filename = "%s...%s" % (filename_start, filename_end) else: filename += ' ' - print "%s%s%-16d%-16s%s" \ + print("%s%s%-16d%-16s%s" \ % (filename.ljust(48),\ (str(self.pagecached)+'/'+hum_convert(self.pagecached*PAGESIZE)).ljust(24),\ self.nr_page,\ str(self.hit_percent)+"%",\ - self.comm) + self.comm)) def getCacheStat(filename, comm): if os.path.isfile(filename) and os.access(filename, os.R_OK): @@ -104,7 +104,7 @@ def getCacheStat(filename, comm): f.close() return 0 - nr_pages = (size + PAGESIZE - 1) / PAGESIZE + nr_pages = int((size + PAGESIZE - 1) / PAGESIZE) vec = (c_ubyte * nr_pages)() ret = _mincore(addr, size, cast(vec, POINTER(c_ubyte))) if ret != 0: @@ -172,7 +172,7 @@ def topFileCache(interval, top): topDisplay = 0 total_cached = 0 os.system("clear") - print "The top%d Max cached open files:" %top + print("The top%d Max cached open files:" %top) print(head_txt) global global_stat_list for stat in global_stat_list: @@ -181,7 +181,8 @@ def topFileCache(interval, top): total_cached += (stat.pagecached * PAGESIZE) topDisplay += 1 if total_cached != 0: - print "Total cached %s for all open files%s" %(hum_convert(total_cached),'(ctrl+c exit)' if interval else '') + print("Total cached %s for all open files%s" %( + hum_convert(total_cached),'(ctrl+c exit)' if interval else '')) if interval == 0: break sleep(interval) -- Gitee