def getProcessAndTaskInfo(pkg):
    cpuProcessInfo = cpu_info_process.CpuProcessInfo()
    pid = utils.getPid(pkg)
    log_utils.log(pid)
    cmd = "adb shell cat proc/%s/task/*/stat" % (pid).replace("\n", "")
    content = utils.excuteCmd(cmd)
    cpuProcessInfo.getCpuInfo(pid)
    taskCpuLineArr = content.splitlines()
    tasksTotal = 0
    threadCpuArr = []
    for i in range(len(taskCpuLineArr)):
        threadCpuInfo = cpu_info_thread.CpuThreadsInfo()
        threadCpuInfo.parseThreadData(taskCpuLineArr[i])
        tasksTotal = tasksTotal + threadCpuInfo.getTotal()
        threadCpuArr.append(threadCpuInfo)

    threadCpuArr = sorted(threadCpuArr, key=lambda x: x.total, reverse=True)
    for i in range(len(threadCpuArr)):
        item = threadCpuArr[i]
        log_utils.log("%s\t[%s][%s]\tused cpu \t%.2f %% \t\t%s" %
                      (item.threadName.ljust(20), str(
                          item.threadId).ljust(4), item.threadStatus,
                       (item.getTotal() * 100 / cpuProcessInfo.getTotal()),
                       item.getTotal()))

    log_utils.log("tasksTotal / processTotal : %.5f" %
                  (tasksTotal / cpuProcessInfo.getTotal()))

    log_utils.log("cout %d : taskTotal %d processTotal %d" %
                  (len(threadCpuArr), tasksTotal, cpuProcessInfo.getTotal()))
Пример #2
0
    def getCpuInfo(self, pid):
        processCmd = "adb shell cat proc/%s/stat" % (pid).replace("\n", "")
        processStat = utils.excuteCmd(processCmd)
        processOriArr = processStat.split(' ')

        self.utime = int(processOriArr[13])
        self.stime = int(processOriArr[14])
        self.cutime = int(processOriArr[15])
        self.cstime = int(processOriArr[16])
Пример #3
0
 def getCpuInfo(self):
     totalCmd = "adb shell cat proc/stat"
     totalStat = utils.excuteCmd(totalCmd)
     totalOriArr = totalStat.splitlines()[0].split(' ')
     self.usr = int(totalOriArr[2])
     self.nice = int(totalOriArr[3])
     self.sys = int(totalOriArr[4])
     self.idle = int(totalOriArr[5])
     self.iowait = int(totalOriArr[6])
     self.irq = int(totalOriArr[7])
     self.softirq = int(totalOriArr[8])
Пример #4
0
def execute(pkgArr, filePath):
    time = utils.getTime()

    log_utils.log("------------catch fdcount------------")
    for pkg in pkgArr:
        pid = utils.getPid(pkg)
        fdCommand = 'adb shell ls proc/' + pid + '/fd | wc -l'
        fdCount = utils.excuteCmd(fdCommand)
        content = time + "|" + fdCount
        fdPath = filePath + pkg + "_fd.txt"
        file_utils.writeFileAdd(fdPath, content)
Пример #5
0
def recordMem(pid, pkgName, filePath):
    cmd = "adb shell dumpsys meminfo %s" % (pid)
    stat = utils.excuteCmd(cmd)
    memArr = stat.splitlines()

    for item in memArr:
        line = item.lstrip()
        if line.startswith("Java Heap:") or line.startswith("Native Heap:") or line.startswith("TOTAL:"):
            valueArr = line.split()
            if valueArr[0] == 'Java':
                java = int(valueArr[2])
            elif valueArr[0] == 'Native':
                native = int(valueArr[2])
            elif valueArr[0] == 'TOTAL:':
                total = int(valueArr[1])

    log_utils.log(pkgName + ": \t%d/java \t %d/native \t %d/total " % (java, native, total))

    memFile = filePath + pkgName + "_mem.txt"
    content = utils.getTime() + "|" + str(int(java / 1000)) + "|" + str(int(native / 1000)) + "|" + str(
        int(total / 1000))
    file_utils.writeFileAdd(memFile, content + "\n")