From f1e8217a5a2e6c074513a64e814c5da0a8978903 Mon Sep 17 00:00:00 2001 From: zhangzepeng Date: Sat, 28 Dec 2024 14:20:48 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=98record=E6=8F=92=E4=BB=B6=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=AF=B9=E9=BD=90=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangzepeng --- record/record.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/record/record.js b/record/record.js index 19bcc10..86fa61d 100644 --- a/record/record.js +++ b/record/record.js @@ -59,7 +59,7 @@ let enableCpuProfiler = false; let snapshotTimes = 0; let snapshotNum = 1; let timestamps = []; -let diffTimeNSec = 0; +let diffRealTimeNSec = 0; let resultArray = []; let dateTimeArray = []; @@ -226,9 +226,10 @@ function process(session_id, cmd, message) { const errorMsg = new Uint8Array(encoder.encode('Done')); sendMsg(errorMsg, 8); Promise.all([ - generateArktsTrace(), receiveHiTrace() ]).then(res => { + generateArktsTrace(); + }).then(res => { combinedBufferData(); }) }).catch((error) => { @@ -250,10 +251,11 @@ function process(session_id, cmd, message) { const errorMsg = new Uint8Array(encoder.encode('Done')); sendMsg(errorMsg, 8); Promise.all([ - generateArktsTrace(), saveSnapshot(), receiveHiTrace() ]).then(res => { + generateArktsTrace(); + }).then(res => { combinedBufferData(); }) }).catch((error) => { @@ -311,7 +313,7 @@ function checkPortIfNeedRemove() { function watchPort() { timestamps = []; - diffTimeNSec = 0; + diffRealTimeNSec = 0; return new Promise((resolve, reject) => { exec(`hdc -t ${serialNum} shell pidof ${processName}`, (error, stdout, stderr) => { if (stdout.includes('[Fail]')) { @@ -383,9 +385,11 @@ function recordArkts() { logger.info(`查询 timestamps 命令执行成功:${stdout}`); timestamps = stdout.trim().replace(/\r\n/g, '\r').replace(/\n/g, '\r').split(/\r/); let realTime = timestamps[0].split(':')[1].split('.'); - let msRealTime = realTime[0].trim() + '' + realTime[1]; + let msRealTime = Number(realTime[0].trim() + '' + realTime[1]); + let monoTime = timestamps[3].split(':')[1].split('.'); + let msMonoTime = Number(monoTime[0].trim() + '' + monoTime[1]); let nowDate = new Date().getTime() * 1000000; - diffTimeNSec = nowDate - msRealTime; + diffRealTimeNSec = nowDate - msRealTime; const durTime = maxDur * 1000; if (!isRecordHitrace) { const errorMsg = new Uint8Array(encoder.encode('tracing...')); @@ -410,7 +414,6 @@ function recordArkts() { let times = setInterval(() => { socket.send(snapshotMsg.beginCmd); snapshotNum++; - logger.info(snapshotNum, 'snapshotNum') if (snapshotNum === snapshotTimes) { clearInterval(times); } @@ -463,10 +466,16 @@ function recordArkts() { socket.onmessage = function (event) { let data = JSON.parse(event.data) resultArray.push(event.data); - dateTimeArray.push(new Date().getTime() * 1000000 + diffTimeNSec); + dateTimeArray.push(new Date().getTime() * 1000000 - diffTimeNSec); if (type.includes('cpuProf') && data.id == 3 && Object.keys(data.result).length > 0) { logger.info(`${type} : arkts 抓取完成`); + let cpuProfStartTime = data.result.profile.startTime * 1000; + let cpuProfEndTime = data.result.profile.endTime * 1000; + let cpuProfRealStartTime = msRealTime + cpuProfStartTime - msMonoTime; + let cpuProfRealEndTime = msRealTime + cpuProfEndTime - msMonoTime; + dateTimeArray[0] = cpuProfRealStartTime; + dateTimeArray[dateTimeArray.length-1] = cpuProfRealEndTime; resolve(0); if (!isRecordHitrace) { const errorMsg = new Uint8Array(encoder.encode('Done')); -- Gitee