182 lines
8.2 KiB
Python
182 lines
8.2 KiB
Python
import subprocess
|
|
import os,re
|
|
import time
|
|
from datetime import datetime
|
|
|
|
|
|
cycle1 =[]
|
|
str1 = ""
|
|
cycle=0;
|
|
flag = 0;
|
|
COUNT = 13;
|
|
|
|
date = datetime.now()
|
|
fp = open('res.txt','w')
|
|
|
|
#open file for reading suspend-resume details
|
|
with open("ftrace.txt", "r") as file:
|
|
for line in file:
|
|
if line.startswith('#'):
|
|
continue
|
|
|
|
if "suspend_enter[3] begin" in line:
|
|
cycle = cycle + 1
|
|
fp.write("*******************Cycle " +str(cycle) +" starts******************\n")
|
|
cycle_start_time = float(line.split(" ...1")[1].replace(" ","").split(":")[0])
|
|
if "suspend_enter[3] end" in line:
|
|
suspend_enter_end_time = float(line.split(" ...1")[1].replace(" ","").split(":")[0])
|
|
fp.write(" Suspend enter took "+str((suspend_enter_end_time-cycle_start_time)*1000000) +" us\n")
|
|
str1=str1 + "SUSPEND_ENTER took " + str(suspend_enter_end_time-cycle_start_time) +" secs\n"
|
|
|
|
if "suspend_resume: dpm" in line:
|
|
if "begin" in line:
|
|
try:
|
|
statestart= float(line.split(" ...1")[1].replace(" ","").split(":")[0])
|
|
statestartname=line.split("suspend_resume: ")[1].split('[')[0]
|
|
except IndexError:
|
|
statestart= float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
statestartname=line.split("suspend_resume: ")[1].split('[')[0]
|
|
|
|
elif "end" in line:
|
|
try :
|
|
stateend = float(line.split(" ...1")[1].replace(" ","").split(":")[0])
|
|
stateendname=line.split("suspend_resume: ")[1].split('[')[0]
|
|
except IndexError:
|
|
stateend = float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
stateendname=line.split("suspend_resume: ")[1].split('[')[0]
|
|
if stateendname == statestartname:
|
|
str1 = str1 + stateendname.upper() + " took "+str(stateend - statestart) + " sec \n";
|
|
try:
|
|
fp.write(line.split("..1")[1].upper() + " \n")
|
|
except IndexError:
|
|
fp.write(line.split("N.1")[1].upper() + " \n")
|
|
#elif "suspend_resume:" in line:
|
|
# try:
|
|
# fp.write(line.split("..1")[1] + "\n")
|
|
# except IndexError:
|
|
# fp.write(line.split("N.1")[1].upper() + " \n")
|
|
|
|
if "device_pm_callback_start:" in line:
|
|
try:
|
|
dpm_start = float(line.split(" ...1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
dpm_start = float(line.split(" .N.1")[1].replace(" ","").split(":")[0])
|
|
driver_sname = line.split("device_pm_callback_start: ")[1].split(",")[0]
|
|
if "device_pm_callback_end:" in line:
|
|
try:
|
|
dpm_end = float(line.split(" ...1")[1].replace(" ","").split(":")[0])
|
|
except:
|
|
dpm_end = float(line.split(" .N.1")[1].replace(" ","").split(":")[0])
|
|
driver_ename = line.split("device_pm_callback_end: ")[1].split(",")[0]
|
|
if driver_ename == driver_sname:
|
|
fp.write(" " +driver_ename.ljust(50) + " ------> " + str(int((dpm_end - dpm_start)*1000000)) + " us \n")
|
|
|
|
if "thaw_processes[0] end" in line:
|
|
try:
|
|
cycle_end_time = float(line.split(" ...1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
cycle_end_time = float(line.split(" .N.1")[1].replace(" ","").split(":")[0])
|
|
fp.write("********************* Cycle " +str(cycle) +" ends***************\n")
|
|
fp.write("Cycle " + str(cycle) + " took " + str(cycle_end_time - cycle_start_time) + " sec \n")
|
|
fp.write(str1+"\n\n\n\n")
|
|
str1 = ""
|
|
if "CPU_OFF" in line:
|
|
if "begin" in line:
|
|
try:
|
|
cpuoffstart= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
cpuoffstart =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
elif "end" in line:
|
|
try:
|
|
cpuoffend= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
cpuoffend =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
str1 = str1 + "CPUOFF took " +str(cpuoffend-cpuoffstart) +" secs\n"
|
|
|
|
if "machine_suspend" in line:
|
|
if "begin" in line:
|
|
try:
|
|
mcsusstart= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
mcsusstart =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
elif "end" in line:
|
|
try:
|
|
mcsusend= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
mcsusend =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
str1 = str1 + "MACHINE SUSPEND took " +str(mcsusend-mcsusstart) +" secs\n"
|
|
|
|
if "CPU_ON" in line:
|
|
if "begin" in line:
|
|
try:
|
|
cpuonstart= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
cpuonstart =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
elif "end" in line:
|
|
try:
|
|
cpuonend= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
cpuonend =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
str1 = str1 + "CPU_ON took " +str(cpuonend-cpuonstart) +" secs\n"
|
|
|
|
if "syscore_resume" in line:
|
|
if "begin" in line:
|
|
try:
|
|
sysresstart= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
sysresstart =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
elif "end" in line:
|
|
try:
|
|
sysresend= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
sysresend =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
str1 = str1 + "SYSTEM CORE RESUME took " +str(sysresend-sysresstart) +" secs\n"
|
|
if "syscore_suspend" in line:
|
|
if "begin" in line:
|
|
try:
|
|
syssusstart= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
syssusstart =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
elif "end" in line:
|
|
try:
|
|
syssusend= float(line.split("..1")[1].replace(" ","").split(":")[0])
|
|
except IndexError:
|
|
syssusend =float(line.split("N.1")[1].replace(" ","").split(":")[0])
|
|
str1 = str1 + "SYSTEM CORE SUSPEND took " +str(syssusend-syssusstart) +" secs\n"
|
|
fp.close();
|
|
|
|
lines=0;
|
|
|
|
with open('res.txt', "r") as file:
|
|
length = 0
|
|
for line in file:
|
|
lines +=1;
|
|
matchObj = re.match( r'Cycle (.*?) took (.*?) sec.*', line, re.M|re.I)
|
|
if matchObj:
|
|
digit = re.findall(r'\d+', line)
|
|
flag = 1;
|
|
#matchObj1 = re.match( r'\n', line, re.M|re.I)
|
|
if line == "\n" and flag:
|
|
flag = 0;
|
|
if length >= COUNT:
|
|
cycle1.append(int(digit[0]))
|
|
length = 0;
|
|
|
|
if flag:
|
|
matchObj1 = re.match( r'(.*)\n', line, re.M|re.I)
|
|
if matchObj1:
|
|
length = length + 1;
|
|
|
|
fp = open('/var/www/suspend-resume/result' + str(date) + '.txt','w')
|
|
for i in range(len(cycle1)):
|
|
with open('res.txt', "r") as file:
|
|
for line in file:
|
|
matchObj1 = re.match( r'(.*)Cycle ' + str(cycle1[i]) + ' starts(.*)', line, re.M|re.I)
|
|
if matchObj1:
|
|
flag = 1;
|
|
matchObj = re.match( r'(.*)Cycle ' + str(cycle1[i] + 1) + ' starts(.*)', line, re.M|re.I)
|
|
if matchObj:
|
|
flag = 0;
|
|
if flag:
|
|
fp.write(line);
|