diff --git a/python_smi_tools/rocm_smi.py b/python_smi_tools/rocm_smi.py index 2ac41b51..7b4b4902 100755 --- a/python_smi_tools/rocm_smi.py +++ b/python_smi_tools/rocm_smi.py @@ -243,7 +243,7 @@ def getMemInfo(device, memType): return (memUsed, memTotal) -def getName(pid): +def getProcessName(pid): """ Get the process name of a specific pid @param pid: Process ID of a program to be parsed @@ -251,14 +251,21 @@ def getName(pid): if int(pid) < 1: logging.debug('PID must be greater than 0') return 'UNKNOWN' - pName = str(subprocess.check_output("ps -p %d -o comm=" % (int(pid)), shell=True)) + try: + pName = str(subprocess.check_output("ps -p %d -o comm=" % (int(pid)), shell=True)) + except subprocess.CalledProcessError as e: + print(e.output) + pName = 'UNKNOWN' + + if pName == None: + pName = 'UNKNOWN' + # Remove the substrings surrounding from process name (b' and \n') if str(pName).startswith('b\''): pName = pName[2:] if str(pName).endswith('\\n\''): pName = pName[:-3] - else: - pName = 'UNKNOWN' + return pName @@ -1539,7 +1546,7 @@ def showPids(): cuOccupancy = proc.cu_occupancy else: logging.debug('Unable to fetch process info by PID') - dataArray.append([pid, getName(pid), str(gpuNumber), str(vramUsage), str(sdmaUsage), str(cuOccupancy)]) + dataArray.append([pid, getProcessName(pid), str(gpuNumber), str(vramUsage), str(sdmaUsage), str(cuOccupancy)]) printLog(None, 'KFD process information:', None) print2DArray(dataArray) printLogSpacer()