From 6c62d7cc4ef1e998a4fbda865e13fe4bfa9d749d Mon Sep 17 00:00:00 2001 From: liuheng Date: Wed, 9 Oct 2024 11:48:14 +0800 Subject: [PATCH] =?UTF-8?q?fix=20gs=5Fcheckperf=E6=A3=80=E6=9F=A5ssd?= =?UTF-8?q?=E7=9B=98=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/gspylib/common/Common.py | 15 +++++++------- script/local/LocalPerformanceCheck.py | 29 ++++++++++++++++++--------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/script/gspylib/common/Common.py b/script/gspylib/common/Common.py index b601314..0d2b48b 100644 --- a/script/gspylib/common/Common.py +++ b/script/gspylib/common/Common.py @@ -138,6 +138,7 @@ BASE_ID_GTM = 4001 BASE_ID_DATANODE = 6001 SYSTEM_SSH_ENV = "export LD_LIBRARY_PATH=/usr/lib64" +CHECK_SSD_CMD = "lsblk -d -o NAME,ROTA | grep '0' | awk '{print $1}'" def check_content_key(content, key): if not (type(content) == bytes): @@ -944,11 +945,10 @@ class DefaultValue(): input: NA output: True/False """ - cmd = "hio_info" - (status, output) = subprocess.getstatusoutput(cmd) - if (status != 0): - return False - return True + (status, output) = subprocess.getstatusoutput(CHECK_SSD_CMD) + if status == 0 and output: + return True + return False @staticmethod def Deduplication(listname): @@ -1660,9 +1660,8 @@ class DefaultValue(): output : [] """ devList = [] - cmd = "ls -ll /dev/hio? | awk '{print $10}'" - (status, output) = subprocess.getstatusoutput(cmd) - if (status == 0 and output.find("No such file or directory") < 0): + (status, output) = subprocess.getstatusoutput(CHECK_SSD_CMD) + if (status == 0 and output): devList = output.split("\n") else: raise Exception(ErrorCode.GAUSS_530["GAUSS_53005"] + diff --git a/script/local/LocalPerformanceCheck.py b/script/local/LocalPerformanceCheck.py index 64f514b..e59b31d 100644 --- a/script/local/LocalPerformanceCheck.py +++ b/script/local/LocalPerformanceCheck.py @@ -119,25 +119,25 @@ class LocalPerformanceCheck(): cmd += "dd if=%s of=/dev/null bs=8M count=2560 iflag=direct" \ % tmpFile (status, output) = subprocess.getstatusoutput(cmd) - if (status == 0): + if status == 0 and output: output = output.split("\n") - writeInfolist = output[2].strip().split(",") - readInfolist = output[5].strip().split(",") + write_info_list = convert_read_or_write_info_to_list(output[2]) + read_info_list = convert_read_or_write_info_to_list(output[5]) result = " %s (%s) Path (%s)\n" \ " %s: %s\n" \ " %s: %s\n %s: %s\n" \ " %s: %s\n %s: %s" \ - % (dev.split('/')[2], dev, diskDir, + % (dev, dev, diskDir, "Data size".ljust(INDENTATION_VALUE), - writeInfolist[0][:-7], + write_info_list[0][:-7], "Write time".ljust(INDENTATION_VALUE), - (writeInfolist[1]).strip(), + (write_info_list[1]).strip(), "Write speed".ljust(INDENTATION_VALUE), - (writeInfolist[2]).strip(), + (write_info_list[2]).strip(), "Read time".ljust(INDENTATION_VALUE), - (readInfolist[1]).strip(), + (read_info_list[1]).strip(), "Read speed".ljust(INDENTATION_VALUE), - (readInfolist[2]).strip()) + (read_info_list[2]).strip()) g_logger.log(result) else: raise Exception(ErrorCode.GAUSS_514["GAUSS_51400"] % cmd @@ -249,6 +249,17 @@ def docheck(): else: g_logger.logExit(ErrorCode.GAUSS_500["GAUSS_50000"] % g_opts.action) +def convert_read_or_write_info_to_list(info_str): + """ + function: read or write info to list + input : read or write info str + output: read or write info list + """ + # info_str: 21474836480 bytes (21 GB, 20 GiB) copied, 6.59552 s, 3.3 GB/s + parts = info_str.split(", ") + # parts: ["21474836480 bytes (21 GB", "0 GiB) copied", "6.59552 s", "3.3 GB/s"] + # The first two parts are a whole, so merge the first two parts + return [parts[0] + ", " + parts[1], parts[2], parts[3]] if __name__ == '__main__': """