def execute(pkgArr, filePath):
    cpuinfo = cpu_info.CpuInfo()
    cpuinfo.getCpuInfo()

    global lastCpuInfo

    time = utils.getTime()
    global dict

    if lastCpuInfo:
        totalCpu = cpuinfo.getTotal() - lastCpuInfo.getTotal()
        idle = cpuinfo.idle - lastCpuInfo.idle
        usr = cpuinfo.usr - lastCpuInfo.usr
        sys = cpuinfo.sys - lastCpuInfo.sys
        idlePrecent = float(idle * 100) / totalCpu
        usrPrecent = usr * 100 / totalCpu
        sysPrecent = sys * 100 / totalCpu
        usedPrecent = float((totalCpu - idle) * 100) / totalCpu
        log_utils.log(
            "device CPU : \t %d/usr \t %d/sys \t %.1f/idle %.1f/used" %
            (usrPrecent, sysPrecent, idlePrecent, usedPrecent))
        cpuFile = filePath + "device_cpu.txt"
        content = time + "|" + str(int(usedPrecent))
        file_utils.writeFileAdd(cpuFile, content + "\n")
        for pkg in pkgArr:
            if pkg not in dict.keys():
                dict[str(pkg)] = cpudump.cpudump(pkg)
            dict[str(pkg)].dumpCpu(time, totalCpu, filePath)
    else:
        for pkg in pkgArr:
            if pkg not in dict.keys():
                dict[str(pkg)] = cpudump.cpudump(pkg)
            dict[str(pkg)].initData()

    lastCpuInfo = cpuinfo
def execute(pkgNameArr, filePath):
    for pkgName in pkgNameArr:
        pid = utils.getPid(pkgName)
        if len(pid) == 0:
            log_utils.log("process %s not run" % (pkgName))
        else:
            content = utils.getTime() + "|" + pid + "\n"
            file_utils.writeFileAdd(filePath + pkgName + "_pid.txt", content)
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)
Esempio n. 4
0
    def dumpCpu(self, time, totalCpu, filePath):
        pid = utils.getPid(self.pkgName)
        if self.pid != 0 and pid != 0 and self.pid != pid:
            # pid有变化,需要清空上一次的的取值,从新取值
            self.lastProcessCpuInfo = None
            cpuProcessInfo = cpu_info_process.CpuProcessInfo()
            cpuProcessInfo.getCpuInfo(pid)
            self.lastProcessCpuInfo = cpuProcessInfo
            self.pid = pid
            return

        cpuProcessInfo = cpu_info_process.CpuProcessInfo()
        cpuProcessInfo.getCpuInfo(pid)
        if self.lastProcessCpuInfo:
            processTotal = cpuProcessInfo.getTotal() - self.lastProcessCpuInfo.getTotal()
            processPrecent = processTotal * 100 / totalCpu
            log_utils.log(self.pkgName + " CPU : %d " % (processPrecent))
            cpuFile = filePath + self.pkgName + "_cpu.txt"
            content = time + "|" + str(int(processPrecent))
            file_utils.writeFileAdd(cpuFile, content + "\n")
        self.lastProcessCpuInfo = cpuProcessInfo
def getProcessAndTaskInfo(pkg):
    global taskPath
    filePath = taskPath + "/" + pkg + "_task.txt"
    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]

        content = "%s\t[%s][%s]\tused cpu \t%.2f %% \t\t%s\n" % (
            item.threadName.ljust(20), str(item.threadId).ljust(4), item.threadStatus,
            (item.getTotal() * 100 / cpuProcessInfo.getTotal()), item.getTotal())

        file_utils.writeFileAdd(filePath, content)

        log_utils.log(content)
    tempContent = "tasksTotal / processTotal : %.5f\n" % (tasksTotal / cpuProcessInfo.getTotal())
    file_utils.writeFileAdd(filePath, tempContent)
    log_utils.log(tempContent)
    tempContent = "cout %d : taskTotal %d processTotal %d\n" % (len(threadCpuArr), tasksTotal, cpuProcessInfo.getTotal())
    file_utils.writeFileAdd(filePath, tempContent)
    log_utils.log(tempContent)
Esempio n. 6
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")