Merge branch 'master' of gitee.com:openharmony/developtools_profiler into master

Signed-off-by: harrysunv9x <harrysunv9x@outlook.com>
This commit is contained in:
harrysunv9x 2024-11-12 06:50:31 +00:00 committed by Gitee
commit 8a464f5e72
88 changed files with 605 additions and 224 deletions

View File

@ -38,6 +38,7 @@
"hichecker",
"hidumper",
"hilog",
"hisysevent",
"hitrace",
"hiview",
"ipc",

View File

@ -54,5 +54,18 @@ bool IsBetaVersion();
std::pair<bool, std::string> CheckNotExistsFilePath(const std::string& filePath);
bool CheckWhiteList(const std::string& cmdPath);
bool CheckCmdLineArgValid(const std::string& cmdLine);
int PluginWriteToHisysevent (std::string pluginName, std::string caller, std::string args, int errorCode,
std::string errorMessage);
std::string GetProcessNameByPid(int32_t pid);
enum ErrorType {
RET_NO_PERMISSION,
RET_NOT_SUPPORT,
RET_IVALID_PATH,
RET_IVALID_PID,
RET_MSG_EMPTY,
RET_FAIL = -1,
RET_SUCC = 0,
};
} // COMMON
#endif // COMMON_H

View File

@ -33,6 +33,7 @@
#include "application_info.h"
#include "bundle_mgr_proxy.h"
#include "file_ex.h"
#include "hisysevent.h"
#include "iservice_registry.h"
#include "logging.h"
#include "system_ability_definition.h"
@ -773,4 +774,41 @@ bool CheckCmdLineArgValid(const std::string& cmdLine)
}
return true;
}
int PluginWriteToHisysevent(std::string pluginName, std::string caller, std::string args, int errorCode,
std::string errorMessage)
{
return HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::PROFILER, "HIPROFILER_USAGE",
OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
"PLUGIN_NAME", pluginName,
"CALLER", caller,
"ARGS", args,
"ERROR_CODE", errorCode,
"ERROR_MESSAGE", errorMessage);
}
std::string GetProcessNameByPid(int32_t pid)
{
std::string path = "/proc/" + std::to_string(pid) + "/cmdline";
std::ifstream cmdlineFile(path);
if (!cmdlineFile) {
return "";
}
std::string processName;
std::getline(cmdlineFile, processName, '\0');
static constexpr size_t headSize = 2;
if (processName.substr(0, headSize) == "./") {
processName = processName.substr(headSize);
}
size_t found = processName.rfind("/");
std::string procName;
if (found != std::string::npos) {
procName = processName.substr(found + 1);
} else {
procName = processName;
}
return procName;
}
} // namespace COMMON

View File

@ -37,6 +37,7 @@ ohos_source_set("cpudataplugin_source") {
defines = [ "HAVE_HILOG" ]
external_deps = [
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}
@ -46,7 +47,10 @@ ohos_source_set("cpudataplugin_source") {
ohos_shared_library("cpudataplugin") {
output_name = "cpudataplugin"
version_script = "libcpu_plugin.map"
deps = [ ":cpudataplugin_source" ]
deps = [
":cpudataplugin_source",
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
]
if (current_toolchain != host_toolchain) {
defines = [ "HAVE_HILOG" ]
external_deps = [

View File

@ -99,6 +99,7 @@ private:
DIR* OpenDestDir(std::string& dirPath);
int32_t GetValidTid(DIR* dirp);
ThreadState GetThreadState(const char threadState);
std::string GetCmdArgs(CpuConfig protoConfig);
template <typename T> void WriteThread(T& threadInfo, const char* pFile, uint32_t fileLen, int32_t tid);

View File

@ -18,6 +18,8 @@
#include <ctime>
#include <vector>
#include <sstream>
#include "common.h"
#include "cpu_plugin_result.pbencoder.h"
#include "buffer_splitter.h"
@ -68,6 +70,14 @@ CpuDataPlugin::~CpuDataPlugin()
minFrequencyVec_.clear();
}
std::string CpuDataPlugin::GetCmdArgs(CpuConfig protoConfig)
{
std::stringstream args;
args << "pid: " << COMMON::GetProcessNameByPid(protoConfig.pid());
args << " report_process_info: " << (protoConfig.report_process_info() ? "true" : "false");
return args.str();
}
int CpuDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
{
buffer_ = malloc(READ_BUFFER_SIZE);
@ -77,15 +87,19 @@ int CpuDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
}
CHECK_TRUE(protoConfig_.ParseFromArray(configData, configSize) > 0, RET_FAIL,
"%s:parseFromArray failed!", __func__);
auto args = GetCmdArgs(protoConfig_);
if (protoConfig_.pid() > 0) {
pid_ = protoConfig_.pid();
} else if (protoConfig_.report_process_info()) {
PROFILER_LOG_INFO(LOG_CORE, "%s:need report process info", __func__);
} else {
PROFILER_LOG_ERROR(LOG_CORE, "%s:invalid pid", __func__);
int ret = COMMON::PluginWriteToHisysevent("CPU_PLUGIN", "sh", args, RET_FAIL, "failed");
PROFILER_LOG_ERROR(LOG_CORE, "%s:invalid pid, record hisysevent result. %d", __func__, ret);
return RET_FAIL;
}
PROFILER_LOG_INFO(LOG_CORE, "%s:start success!", __func__);
int ret = COMMON::PluginWriteToHisysevent("cpu_plugin", "sh", args, RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "%s:start success! hisysevent report cpu_plugin result: %d", __func__, ret);
return RET_SUCC;
}

View File

@ -29,6 +29,7 @@ ohos_unittest("cpudataplugin_ut") {
module_out_path = module_output_path
sources = [ "unittest/cpu_data_plugin_unittest.cpp" ]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/cpu_plugin:cpudataplugin_source",
"${OHOS_PROFILER_DIR}/device/plugins/cpu_plugin:cpudataplugintest",
"${OHOS_PROFILER_DIR}/protos/types/plugins/cpu_data:cpu_data_cpp",

View File

@ -27,6 +27,7 @@ ohos_fuzztest("CpuStartPluginFuzzTest") {
]
sources = [ "cpustartplugin_fuzzer.cpp" ]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/cpu_plugin:cpudataplugin_source",
"${OHOS_PROFILER_DIR}/protos/types/plugins/cpu_data:cpu_data_cpp",
]

View File

@ -38,6 +38,7 @@ ohos_source_set("diskiodataplugin_source") {
defines = [ "HAVE_HILOG" ]
external_deps = [
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}
@ -47,7 +48,10 @@ ohos_source_set("diskiodataplugin_source") {
ohos_shared_library("diskiodataplugin") {
output_name = "diskiodataplugin"
version_script = "libdiskio_plugin.map"
deps = [ ":diskiodataplugin_source" ]
deps = [
":diskiodataplugin_source",
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
]
if (current_toolchain != host_toolchain) {
defines = [ "HAVE_HILOG" ]
external_deps = [

View File

@ -56,6 +56,8 @@ private:
template <typename T> void WriteDiskioData(T& diskioData);
std::string GetCmdArgs(DiskioConfig protoConfig);
// for UT
void SetPath(std::string path)
{

View File

@ -18,6 +18,7 @@
#include <ctime>
#include "buffer_splitter.h"
#include "common.h"
#include "diskio_plugin_result.pbencoder.h"
namespace {
@ -46,6 +47,13 @@ DiskioDataPlugin::~DiskioDataPlugin()
}
}
std::string DiskioDataPlugin::GetCmdArgs(DiskioConfig protoConfig)
{
std::string args;
args += "report_io_stats: " + std::to_string(protoConfig.report_io_stats());
return args;
}
int DiskioDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
{
buffer_ = malloc(READ_BUFFER_SIZE);
@ -53,11 +61,12 @@ int DiskioDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
CHECK_TRUE(protoConfig_.ParseFromArray(configData, configSize) > 0, RET_FAIL,
"%s:parseFromArray failed!", __func__);
if (protoConfig_.report_io_stats()) {
ioEntry_ = std::make_shared<IoStats>(protoConfig_.report_io_stats());
}
PROFILER_LOG_INFO(LOG_CORE, "%s:start success!", __func__);
int ret = COMMON::PluginWriteToHisysevent("diskio_plugin", "sh", GetCmdArgs(protoConfig_), RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "%s:start success! hisysevent report diskio_plugin result: %d", __func__, ret);
return RET_SUCC;
}

View File

@ -26,6 +26,7 @@ ohos_unittest("diskiodataplugin_ut") {
module_out_path = module_output_path
sources = [ "unittest/diskio_data_plugin_unittest.cpp" ]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/diskio_plugin:diskiodataplugin_source",
"${OHOS_PROFILER_DIR}/device/plugins/diskio_plugin:diskiodataplugintest",
"${OHOS_PROFILER_DIR}/protos/types/plugins/diskio_data:diskio_data_cpp",

View File

@ -27,6 +27,7 @@ ohos_fuzztest("DiskioStartPluginFuzzTest") {
]
sources = [ "diskiostartplugin_fuzzer.cpp" ]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/diskio_plugin:diskiodataplugin_source",
"${OHOS_PROFILER_DIR}/protos/types/plugins/diskio_data:diskio_data_cpp",
]

View File

@ -52,6 +52,7 @@ ohos_source_set("ftrace_plugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"hiview:libucollection_client",
"init:libbegetutil",
"protobuf:protobuf_lite",

View File

@ -76,6 +76,7 @@ private:
void EnableTraceEvents(void);
void DisableTraceEvents(void);
void DisableAllCategories(void);
std::string GetCmdArgs(TracePluginConfig traceConfig);
template <typename T> bool ReportClockTimes(T& tracePluginResult);

View File

@ -19,11 +19,13 @@
#include <algorithm>
#include <cinttypes>
#include <set>
#include <sstream>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <regex>
#include "common.h"
#include "file_utils.h"
#include "ftrace_field_parser.h"
#include "ftrace_fs_ops.h"
@ -746,6 +748,33 @@ bool FlowController::AddPlatformEventsToParser(void)
return true;
}
std::string FlowController::GetCmdArgs(TracePluginConfig traceConfig)
{
std::stringstream args;
for (const auto& event : traceConfig.ftrace_events()) {
args << "ftrace_events: " << event << ", ";
}
for (const auto& category : traceConfig.hitrace_categories()) {
args << "hitrace_categories: " << category << ", ";
}
for (const auto& app : traceConfig.hitrace_apps()) {
args << "hitrace_apps: " << app << ", ";
}
args << "buffer_size_kb: " << std::to_string(traceConfig.buffer_size_kb()) << ", ";
args << "flush_interval_ms: " << std::to_string(traceConfig.flush_interval_ms()) << ", ";
args << "flush_threshold_kb: " << std::to_string(traceConfig.flush_threshold_kb()) << ", ";
args << "trace_period_ms: " << std::to_string(traceConfig.trace_period_ms()) << ", ";
args << "trace_duration_ms: " << std::to_string(traceConfig.trace_duration_ms()) << ", ";
args << "hitrace_time: " << std::to_string(traceConfig.hitrace_time()) << ", ";
args << "parse_ksyms: " << (traceConfig.parse_ksyms() ? "true" : "false") << ", ";
args << "clock: " << traceConfig.clock() << ", ";
args << "raw_data_prefix: " << traceConfig.raw_data_prefix() << ", ";
args << "debug_on: " << (traceConfig.debug_on() ? "true" : "false") << ", ";
args << "discard_cache_data: " << (traceConfig.discard_cache_data() ? "true" : "false") << ", ";
args << "parse_mode: " << std::to_string(traceConfig.parse_mode());
return args.str();
}
int FlowController::LoadConfig(const uint8_t configData[], uint32_t size)
{
CHECK_TRUE(size > 0, -1, "config data size is zero!");
@ -790,6 +819,10 @@ int FlowController::LoadConfig(const uint8_t configData[], uint32_t size)
SetupTraceReadPeriod(traceConfig.trace_period_ms());
flushCacheData_ = traceConfig.discard_cache_data();
hitraceTime_ = traceConfig.hitrace_time();
int ret = COMMON::PluginWriteToHisysevent("ftrace_plugin", "sh", GetCmdArgs(traceConfig),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "hisysevent report ftrace_plugin result: %d", ret);
return 0;
}

View File

@ -38,6 +38,7 @@ ohos_source_set("gpudataplugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}
@ -47,7 +48,10 @@ ohos_source_set("gpudataplugin_source") {
ohos_shared_library("gpudataplugin") {
output_name = "gpudataplugin"
version_script = "libgpu_plugin.map"
deps = [ ":gpudataplugin_source" ]
deps = [
":gpudataplugin_source",
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
]
if (current_toolchain != host_toolchain) {
defines = [ "HAVE_HILOG" ]
external_deps = [ "hilog:libhilog_base" ]

View File

@ -45,6 +45,7 @@ public:
private:
int ReadFile();
std::string GetCmdArgs(GpuConfig traceConfig);
template <typename T> void WriteGpuDataInfo(T& gpuData);
private:

View File

@ -15,6 +15,7 @@
#include "gpu_data_plugin.h"
#include <ctime>
#include "common.h"
#include "gpu_plugin_result.pbencoder.h"
namespace {
@ -32,14 +33,27 @@ int GpuDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
}
file_.open(GPU_PATH);
auto args = GetCmdArgs(protoConfig_);
if (!file_.is_open()) {
PROFILER_LOG_ERROR(LOG_CORE, "%s:failed to open(%s)", __func__, GPU_PATH.c_str());
int ret = COMMON::PluginWriteToHisysevent("gpu_plugin", "sh", args, RET_FAIL, "failed");
PROFILER_LOG_ERROR(LOG_CORE, "%s:failed to open(%s), hisysevent report gpu_plugin ret: %d",
__func__, GPU_PATH.c_str(), ret);
return RET_FAIL;
}
PROFILER_LOG_INFO(LOG_CORE, "%s:start success!", __func__);
int ret = COMMON::PluginWriteToHisysevent("gpu_plugin", "sh", args, RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "%s:start success! hisysevent report gpu_plugin result: %d", __func__, ret);
return RET_SUCC;
}
std::string GpuDataPlugin::GetCmdArgs(GpuConfig traceConfig)
{
std::string args;
args += "pid: " + std::to_string(traceConfig.pid()) + ", report_gpu_info: ";
args += (traceConfig.report_gpu_info() ? "true" : "false");
return args;
}
int GpuDataPlugin::ReportOptimize(RandomWriteCtx* randomWrite)
{
ProtoEncoder::GpuData dataProto(randomWrite);

View File

@ -36,6 +36,7 @@ ohos_source_set("hidumpplugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}

View File

@ -44,6 +44,7 @@ private:
// for ut
void SetConfig(HidumpConfig& config);
int SetTestCmd(const char *test_cmd);
std::string GetCmdArgs(HidumpConfig protoConfig);
const char *GetTestCmd();
char *testCmd_ = nullptr;
private:

View File

@ -24,9 +24,10 @@
#include <sstream>
#include <sys/wait.h>
#include "hidump_plugin_result.pbencoder.h"
#include "securec.h"
#include "common.h"
#include "hidump_plugin_result.pbencoder.h"
#include "hisysevent.h"
#include "securec.h"
namespace {
using namespace OHOS::Developtools::Profiler;
@ -58,6 +59,14 @@ HidumpPlugin::~HidumpPlugin()
PROFILER_LOG_INFO(LOG_CORE, "%s: success!", __func__);
}
std::string HidumpPlugin::GetCmdArgs(HidumpConfig protoConfig)
{
std::string args;
args += "sections: " + std::to_string(protoConfig.sections()) + ", report_fps: ";
args += (protoConfig.report_fps() ? "true" : "false");
return args;
}
int HidumpPlugin::Start(const uint8_t* configData, uint32_t configSize)
{
PROFILER_LOG_INFO(LOG_CORE, "HidumpPlugin:Start ----> !");
@ -73,10 +82,12 @@ int HidumpPlugin::Start(const uint8_t* configData, uint32_t configSize)
COMMON::CustomPopen(fullCmd, "r", pipeFds_, childPid_, true), [this](FILE* fp) -> int {
return COMMON::CustomPclose(fp, pipeFds_, childPid_, true);
});
auto args = GetCmdArgs(protoConfig_);
if (fp_.get() == nullptr) {
const int bufSize = 256;
char buf[bufSize] = {0};
strerror_r(errno, buf, bufSize);
COMMON::PluginWriteToHisysevent("hidump_plugin", "sh", args, COMMON::ErrorType::RET_FAIL, "failed");
PROFILER_LOG_ERROR(LOG_CORE, "HidumpPlugin: CustomPopen(%s) Failed, errno(%d:%s)", FPS_FORMAT, errno, buf);
return -1;
}
@ -86,7 +97,8 @@ int HidumpPlugin::Start(const uint8_t* configData, uint32_t configSize)
std::unique_lock<std::mutex> locker(mutex_);
running_ = true;
writeThread_ = std::thread([this] { this->Loop(); });
PROFILER_LOG_INFO(LOG_CORE, "HidumpPlugin: ---> Start success!");
int ret = COMMON::PluginWriteToHisysevent("hidump_plugin", "sh", args, COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "HidumpPlugin--> Start success! hisysevent report hidump_plugin result:%d", ret);
return 0;
}

View File

@ -38,6 +38,7 @@ ohos_source_set("hilogplugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}

View File

@ -55,6 +55,7 @@ private:
bool FindFirstNum(char** p);
bool RemoveSpaces(char** p);
bool FindFirstSpace(char** p);
std::string GetCmdArgs(HilogConfig protoConfig);
bool StringToL(const char* word, long& value);
// for ut

View File

@ -68,6 +68,16 @@ HilogPlugin::~HilogPlugin()
PROFILER_LOG_INFO(LOG_CORE, "%s: success!", __func__);
}
std::string HilogPlugin::GetCmdArgs(HilogConfig protoConfig)
{
std::stringstream args;
args << "log_level: " << std::to_string(protoConfig.log_level()) << ", ";
args << "pid: " << COMMON::GetProcessNameByPid(protoConfig.pid()) << ", ";
args << "need_record: " << (protoConfig.need_record() ? "true" : "false") << ", ";
args << "need_clear: " << (protoConfig.need_clear() ? "true" : "false");
return args.str();
}
int HilogPlugin::Start(const uint8_t* configData, uint32_t configSize)
{
CHECK_TRUE(protoConfig_.ParseFromArray(configData, configSize) > 0, -1, "HilogPlugin: ParseFromArray failed");
@ -83,7 +93,6 @@ int HilogPlugin::Start(const uint8_t* configData, uint32_t configSize)
CHECK_NOTNULL(fp, -1, "%s:clear hilog error", __func__);
COMMON::CustomPclose(fp, pipeFds, childPid);
}
InitHilogCmd();
fp_ = std::unique_ptr<FILE, std::function<int (FILE*)>>(
COMMON::CustomPopen(fullCmd_, "r", pipeFds_, childPid_, true), [this](FILE* fp) -> int {
@ -106,8 +115,11 @@ int HilogPlugin::Start(const uint8_t* configData, uint32_t configSize)
fcntl(fileno(fp_.get()), F_SETPIPE_SZ, oldPipeSize * PIPE_SIZE_RATIO);
int pipeSize = fcntl(fileno(fp_.get()), F_GETPIPE_SZ);
PROFILER_LOG_INFO(LOG_CORE, "{fp = %d, pipeSize=%d, oldPipeSize=%d}", fileno(fp_.get()), pipeSize, oldPipeSize);
workThread_ = std::thread([this] { this->Run(); });
int ret = COMMON::PluginWriteToHisysevent("hilog_plugin", "sh", GetCmdArgs(protoConfig_),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "hisysevent report hilog_plugin result:%d", ret);
return 0;
}

View File

@ -47,6 +47,7 @@ ohos_source_set("hiperfplugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"openssl:libcrypto_shared",
"protobuf:protobuf_lite",
]

View File

@ -22,10 +22,11 @@
#include <unistd.h>
#include <vector>
#include "common.h"
#include "hiperf_plugin_config.pb.h"
#include "hisysevent.h"
#include "logging.h"
#include "securec.h"
#include "common.h"
#include "trace_file_writer.h"
namespace {
@ -111,6 +112,16 @@ bool RunCommand(const std::string& cmd)
CHECK_TRUE(res, false, "HiperfPlugin::RunCommand: execute command FAILED!");
return true;
}
std::string GetCmdArgs(HiperfPluginConfig protoConfig)
{
std::stringstream args;
args << "is_root: " << (protoConfig.is_root() ? "true" : "false") << ", ";
args << "record_args: " << protoConfig.record_args() << ", ";
args << "split_outfile_name: " << protoConfig.split_outfile_name() << ", ";
args << "log_level: " << std::to_string(protoConfig.log_level());
return args.str();
}
} // namespace
int HiperfPluginSessionStart(const uint8_t* configData, const uint32_t configSize)
@ -141,6 +152,9 @@ int HiperfPluginSessionStart(const uint8_t* configData, const uint32_t configSiz
CHECK_TRUE(res, -1, "HiperfPluginSessionStart, RunCommand(%s) FAILED!", cmd.c_str());
}
int ret = COMMON::PluginWriteToHisysevent("hiperf_plugin", "sh", GetCmdArgs(g_config),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "hisysevent report hiperf_plugin result:%d", ret);
return 0;
}

View File

@ -50,6 +50,7 @@ ohos_fuzztest("HiperfStartPluginFuzzTest") {
external_deps = [
"c_utils:utils",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"openssl:libcrypto_shared",
"protobuf:protobuf_lite",
]

View File

@ -38,6 +38,7 @@ ohos_source_set("hisyseventplugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}

View File

@ -40,6 +40,7 @@ public:
private:
std::string GetFullCmd();
bool InitHisyseventCmd();
std::string GetCmdArgs(HisyseventConfig protoConfig);
template <typename T> bool ParseSyseventLineInfo(const char* data, size_t len, T hisyseventInfoProto);

View File

@ -76,10 +76,21 @@ int HisyseventPlugin::Start(const uint8_t* configData, uint32_t configSize)
running_ = true;
workThread_ = std::thread([this] { this->Run(); });
PROFILER_LOG_INFO(LOG_CORE, "END %s: success!", __func__);
int ret = COMMON::PluginWriteToHisysevent("hisysevent_plugin", "sh", GetCmdArgs(protoConfig_),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "END %s: success! hisysevent report hisysevent_plugin result:%d", __func__, ret);
return 0;
}
std::string HisyseventPlugin::GetCmdArgs(HisyseventConfig protoConfig)
{
std::string args;
args += "msg: " + protoConfig.msg() + ", ";
args += "subscribe_domain: " + protoConfig.subscribe_domain() + ", ";
args += "subscribe_event: " + protoConfig.subscribe_event();
return args;
}
int HisyseventPlugin::Stop()
{
PROFILER_LOG_INFO(LOG_CORE, "BEGN %s: ready!", __func__);

View File

@ -43,6 +43,7 @@ ohos_source_set("memdataplugin_source") {
"drivers_interface_memorytracker:libmemorytracker_proxy_1.0",
"hidumper:lib_dump_usage",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"hiview:libucollection_graphic",
"protobuf:protobuf_lite",
]

View File

@ -349,7 +349,7 @@ public:
};
template <typename T> void WriteProcesseList(T& memoryData);
std::string GetCmdArgs(MemoryConfig protoConfig);
template <typename T> void WriteProcinfoByPidfds(T& processMemoryInfo, int32_t pid);
DIR* OpenDestDir(const char* dirPath);

View File

@ -17,10 +17,10 @@
#include <cmath>
#include <sstream>
#include "common.h"
#include "memory_plugin_result.pbencoder.h"
#include "securec.h"
#include "smaps_stats.h"
#include "common.h"
namespace {
using namespace OHOS::HDI::Memorytracker::V1_0;
@ -199,10 +199,44 @@ int MemoryDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
}
}
PROFILER_LOG_INFO(LOG_CORE, "%s:start success!", __func__);
int ret = COMMON::PluginWriteToHisysevent("memory_plugin", "sh", GetCmdArgs(protoConfig_),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "%s: success! hisysevent report memory_plugin result:%d", __func__, ret);
return RET_SUCC;
}
std::string MemoryDataPlugin::GetCmdArgs(MemoryConfig protoConfig)
{
std::stringstream args;
args << "report_process_tree: " << (protoConfig.report_process_tree() ? "true" : "false") << ", ";
args << "report_sysmem_mem_info: " << (protoConfig.report_sysmem_mem_info() ? "true" : "false") << ", ";
args << "report_sysmem_vmem_info: " << (protoConfig.report_sysmem_vmem_info() ? "true" : "false") << ", ";
args << "report_process_mem_info: " << (protoConfig.report_process_mem_info() ? "true" : "false") << ", ";
args << "report_app_mem_info: " << (protoConfig.report_app_mem_info() ? "true" : "false") << ", ";
args << "report_app_mem_by_memory_service: " << (protoConfig.report_app_mem_by_memory_service() ?
"true" : "false") << ", ";
args << "report_smaps_mem_info: " << (protoConfig.report_smaps_mem_info() ? "true" : "false") << ", ";
args << "report_purgeable_ashmem_info: " << (protoConfig.report_purgeable_ashmem_info() ?
"true" : "false") << ", ";
args << "report_dma_mem_info: " << (protoConfig.report_dma_mem_info() ? "true" : "false") << ", ";
args << "report_gpu_mem_info: " << (protoConfig.report_gpu_mem_info() ? "true" : "false") << ", ";
args << "report_gpu_dump_info: " << (protoConfig.report_gpu_dump_info() ? "true" : "false") << ", ";
args << "report_fake_data: " << (protoConfig.report_fake_data() ? "true" : "false") << ", ";
for (const auto& count : protoConfig.sys_meminfo_counters()) {
args << "sys_meminfo_counters: " << std::to_string(count) << ", ";
}
for (const auto& count : protoConfig.sys_vmeminfo_counters()) {
args << "sys_vmeminfo_counters: " << std::to_string(count) << ", ";
}
for (const auto& p : protoConfig.pid()) {
args << "pid: " << COMMON::GetProcessNameByPid(p) << ", ";
}
return args.str();
}
template <typename T> void MemoryDataPlugin::WriteMeminfo(T& memoryData)
{
int readsize = ReadFile(meminfoFd_);

View File

@ -126,6 +126,7 @@ ohos_executable("native_daemon") {
"access_token:libaccesstoken_sdk",
"access_token:libtokensetproc_shared",
"bounds_checking_function:libsec_shared",
"hisysevent:libhisysevent",
"init:libbegetutil",
"ipc:ipc_core",
"openssl:libcrypto_shared",
@ -202,6 +203,7 @@ ohos_shared_library("libnative_daemon_client") {
"bundle_framework:appexecfwk_base",
"bundle_framework:appexecfwk_core",
"c_utils:utils",
"hisysevent:libhisysevent",
"init:libbegetutil",
"ipc:ipc_core",
"os_account:os_account_innerkits",

View File

@ -104,6 +104,7 @@ public:
int32_t CreatePluginSession();
void RegisterWriter(const std::shared_ptr<Writer> writer);
void WriteHookConfig();
std::string GetCmdArgs(NativeHookConfig traceConfig);
std::pair<int, int> GetFds(int32_t pid, const std::string& name);
inline void SetSaServiceConfig(bool saFlag, bool isProtobufSerialize)
{

View File

@ -46,6 +46,7 @@ private:
void FillTaskConfigContext(int32_t pid, const std::string& name);
bool ProtocolProc(SocketContext &context, uint32_t pnum, const int8_t *buf, const uint32_t size) override;
void DelayedShutdown(bool cancel);
std::string GetCmdArgs(std::shared_ptr<NativeMemoryProfilerSaConfig>& config);
private:
struct TaskConfig {

View File

@ -166,9 +166,45 @@ void NativeMemoryProfilerSaService::StopHook(uint32_t pid, std::string name, boo
}
}
std::string NativeMemoryProfilerSaService::GetCmdArgs(std::shared_ptr<NativeMemoryProfilerSaConfig>& config)
{
std::stringstream args;
args << "pid: " << COMMON::GetProcessNameByPid(config->pid_) << ", ";
args << "filter_size: " << config->filterSize_ << ", ";
args << "max_stack_depth: " << std::to_string(config->maxStackDepth_) << ", ";
args << "process_name: " << config->processName_ << ", ";
args << "malloc_disable: " << (config->mallocDisable_ ? "true" : "false") << ", ";
args << "mmap_disable: " << (config->mmapDisable_ ? "true" : "false") << ", ";
args << "free_stack_report: " << (config->freeStackData_ ? "true" : "false") << ", ";
args << "munmap_stack_report: " << (config->munmapStackData_ ? "true" : "false") << ", ";
args << "malloc_free_matching_interval: " << std::to_string(config->mallocFreeMatchingInterval_) << ", ";
args << "malloc_free_matching_cnt: " << std::to_string(config->mallocFreeMatchingCnt_) << ", ";
args << "string_compressed: " << (config->stringCompressed_ ? "true" : "false") << ", ";
args << "fp_unwind: " << (config->fpUnwind_ ? "true" : "false") << ", ";
args << "blocked: " << (config->blocked_ ? "true" : "false") << ", ";
args << "record_accurately: " << (config->recordAccurately_ ? "true" : "false") << ", ";
args << "startup_mode: " << (config->startupMode_ ? "true" : "false") << ", ";
args << "memtrace_enable: " << (config->memtraceEnable_ ? "true" : "false") << ", ";
args << "offline_symbolization: " << (config->offlineSymbolization_ ? "true" : "false") << ", ";
args << "callframe_compress: " << (config->callframeCompress_ ? "true" : "false") << ", ";
args << "statistics_interval: " << std::to_string(config->statisticsInterval_) << ", ";
args << "clock: " << std::to_string(config->clockId_) << ", ";
args << "sample_interval: " << std::to_string(config->sampleInterval_) << ", ";
args << "response_library_mode: " << (config->responseLibraryMode_ ? "true" : "false") << ", ";
args << "js_stack_report: " << std::to_string(config->jsStackReport_) << ", ";
args << "max_js_stack_depth: " << std::to_string(config->maxJsStackDepth_) << ", ";
args << "filter_napi_name: " << config->filterNapiName_ << ", ";
args << "nmd_pid: " << std::to_string(config->nmdPid_) << ", ";
args << "nmd_type: " << std::to_string(config->nmdType_) << ", ";
return args.str();
}
int32_t NativeMemoryProfilerSaService::StartHook(std::shared_ptr<NativeMemoryProfilerSaConfig>& config, uint32_t fd)
{
auto args = GetCmdArgs(config);
if (!HasProfilingPermission()) {
COMMON::PluginWriteToHisysevent("native_hook_plugin", "hiview", args, COMMON::ErrorType::RET_NO_PERMISSION,
"no profiling permission");
PROFILER_LOG_ERROR(LOG_CORE, "StartHook failed, no profiling permission!");
return RET_ERR;
}
@ -183,6 +219,8 @@ int32_t NativeMemoryProfilerSaService::StartHook(std::shared_ptr<NativeMemoryPro
PROFILER_LOG_INFO(LOG_CORE, "file path: %s", config->filePath_.c_str());
if (!CheckConfig(config, fd)) {
COMMON::PluginWriteToHisysevent("native_hook_plugin", "hiview", args, COMMON::ErrorType::RET_MSG_EMPTY,
"check config failed");
return RET_ERR;
}
@ -190,6 +228,8 @@ int32_t NativeMemoryProfilerSaService::StartHook(std::shared_ptr<NativeMemoryPro
auto retFile = COMMON::CheckNotExistsFilePath(config->filePath_);
if (!retFile.first) {
PROFILER_LOG_INFO(LOG_CORE, "%s:check file path %s fail", __func__, config->filePath_.c_str());
COMMON::PluginWriteToHisysevent("native_hook_plugin", "hiview", args, COMMON::ErrorType::RET_IVALID_PATH,
"check file path failed");
return RET_ERR;
}
int fdTemp = open(retFile.second.c_str(), O_RDWR | O_CREAT, FILE_MODE);
@ -214,6 +254,8 @@ int32_t NativeMemoryProfilerSaService::StartHook(std::shared_ptr<NativeMemoryPro
}
}
if (hook->CreatePluginSession() != RET_OK) {
COMMON::PluginWriteToHisysevent("native_hook_plugin", "hiview", args, COMMON::ErrorType::RET_FAIL,
"create pluginsession failed");
return RET_ERR;
}
hook->WriteHookConfig();
@ -225,6 +267,8 @@ int32_t NativeMemoryProfilerSaService::StartHook(std::shared_ptr<NativeMemoryPro
true);
if (timerFd == -1) {
PROFILER_LOG_ERROR(LOG_CORE, "NativeMemoryProfilerSaService Start Schedule Task failed");
COMMON::PluginWriteToHisysevent("native_hook_plugin", "hiview", args, COMMON::ErrorType::RET_FAIL,
"start schedule task failed");
return RET_ERR;
}
@ -248,6 +292,7 @@ int32_t NativeMemoryProfilerSaService::StartHook(std::shared_ptr<NativeMemoryPro
}
++taskNum_;
DelayedShutdown(true);
COMMON::PluginWriteToHisysevent("native_hook_plugin", "hiview", args, COMMON::ErrorType::RET_SUCC, "success");
return RET_OK;
}

View File

@ -127,6 +127,7 @@ ohos_unittest("native_memory_profiler_sa_ut") {
"bounds_checking_function:libsec_shared",
"c_utils:utils",
"googletest:gtest",
"hisysevent:libhisysevent",
"init:libbegetutil",
"ipc:ipc_core",
"openssl:libcrypto_shared",

View File

@ -763,6 +763,45 @@ void HookManager::StartPluginSession()
PROFILER_LOG_INFO(LOG_CORE, "StartPluginSession: pid(%d) is less or equal zero.", item->pid);
}
}
int ret = COMMON::PluginWriteToHisysevent("native_hook_plugin", "sh", GetCmdArgs(hookConfig_),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "hisysevent report native_hook_plugin result:%d", ret);
}
std::string HookManager::GetCmdArgs(NativeHookConfig traceConfig)
{
std::stringstream args;
args << "pid: " << COMMON::GetProcessNameByPid(traceConfig.pid()) << ", ";
args << "save_file: " << (traceConfig.save_file() ? "true" : "false") << ", ";
args << "filter_size: " << std::to_string(traceConfig.filter_size()) << ", ";
args << "smb_pages: " << std::to_string(traceConfig.smb_pages()) << ", ";
args << "max_stack_depth: " << std::to_string(traceConfig.max_stack_depth()) << ", ";
args << "process_name: " << traceConfig.process_name() << ", ";
args << "malloc_disable: " << (traceConfig.malloc_disable() ? "true" : "false") << ", ";
args << "mmap_disable: " << (traceConfig.mmap_disable() ? "true" : "false") << ", ";
args << "free_stack_report: " << (traceConfig.free_stack_report() ? "true" : "false") << ", ";
args << "munmap_stack_report: " << (traceConfig.munmap_stack_report() ? "true" : "false") << ", ";
args << "malloc_free_matching_interval: " << std::to_string(traceConfig.malloc_free_matching_interval()) << ", ";
args << "malloc_free_matching_cnt: " << std::to_string(traceConfig.malloc_free_matching_cnt()) << ", ";
args << "string_compressed: " << (traceConfig.string_compressed() ? "true" : "false") << ", ";
args << "fp_unwind: " << (traceConfig.fp_unwind() ? "true" : "false") << ", ";
args << "blocked: " << (traceConfig.blocked() ? "true" : "false") << ", ";
args << "record_accurately: " << (traceConfig.record_accurately() ? "true" : "false") << ", ";
args << "startup_mode: " << (traceConfig.startup_mode() ? "true" : "false") << ", ";
args << "memtrace_enable: " << (traceConfig.memtrace_enable() ? "true" : "false") << ", ";
args << "offline_symbolization: " << (traceConfig.offline_symbolization() ? "true" : "false") << ", ";
args << "callframe_compress: " << (traceConfig.callframe_compress() ? "true" : "false") << ", ";
args << "statistics_interval: " << std::to_string(traceConfig.statistics_interval()) << ", ";
args << "clock: " << traceConfig.clock() << ", ";
args << "sample_interval: " << std::to_string(traceConfig.sample_interval()) << ", ";
args << "response_library_mode: " << (traceConfig.response_library_mode() ? "true" : "false") << ", ";
args << "js_stack_report: " << std::to_string(traceConfig.js_stack_report()) << ", ";
args << "max_js_stack_depth: " << std::to_string(traceConfig.max_js_stack_depth()) << ", ";
args << "filter_napi_name: " << traceConfig.filter_napi_name() << ", ";
for (const auto& pid : traceConfig.expand_pids()) {
args << "expand_pids: " << std::to_string(pid) << ", ";
}
return args.str();
}
void HookManager::WriteHookConfig()

View File

@ -740,7 +740,8 @@ public:
HLOGD("map is exec not abc file , the symbol file is:%s", map_->name.c_str());
return false;
}
if (StringEndsWith(filePath_, ".hap") || StringEndsWith(filePath_, ".hsp")) {
if (StringEndsWith(filePath_, ".hap") || StringEndsWith(filePath_, ".hsp")
|| StringEndsWith(filePath_, ".hqf")) {
dfxExtractor_ = std::make_unique<DfxExtractor>(filePath_);
if (dfxExtractor_ == nullptr) {
HLOGD("DfxExtractor create failed.");

View File

@ -526,7 +526,8 @@ int32_t GetProcessPid(const std::string& processName)
bool IsArkJsFile(const std::string& filepath)
{
return (StringEndsWith(filepath, ".hap") || StringEndsWith(filepath, ".hsp") ||
StringStartsWith(filepath, "[anon:ArkTS Code") || StringEndsWith(filepath, ".abc"));
StringStartsWith(filepath, "[anon:ArkTS Code") || StringEndsWith(filepath, ".abc")
|| StringEndsWith(filepath, ".hqf"));
}
} // namespace NativeDaemon
} // namespace Developtools

View File

@ -126,6 +126,7 @@ ohos_unittest("native_daemon_ut") {
"bounds_checking_function:libsec_shared",
"faultloggerd:libunwinder",
"googletest:gtest",
"hisysevent:libhisysevent",
"init:libbegetutil",
"openssl:libcrypto_shared",
"protobuf:protobuf_lite",

View File

@ -39,6 +39,7 @@ ohos_source_set("networkplugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}
@ -47,7 +48,10 @@ ohos_source_set("networkplugin_source") {
ohos_shared_library("networkplugin") {
output_name = "networkplugin"
version_script = "libnetwork_plugin.map"
deps = [ ":networkplugin_source" ]
deps = [
":networkplugin_source",
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
]
if (current_toolchain != host_toolchain) {
defines = [ "HAVE_HILOG" ]
external_deps = [ "hilog:libhilog_base" ]

View File

@ -93,6 +93,7 @@ protected:
bool ReadSystemTxRxBytes(NetSystemData &systemData);
void AddNetDetails(NetworkCell& cell, NetDetails& data);
void AddNetSystemDetails(NetSystemData& systemData, NetSystemDetails& data);
std::string GetCmdArgs(NetworkConfig traceConfig);
// for UT
void setPathForTest(std::string path)
{

View File

@ -18,6 +18,7 @@
#include <sys/stat.h>
#include "buffer_splitter.h"
#include "common.h"
#include "network_plugin_result.pbencoder.h"
#include "securec.h"
@ -47,11 +48,22 @@ int NetworkPlugin::Start(const uint8_t* configData, uint32_t configSize)
pidUid_.emplace(pid, GetUid(pid));
}
PROFILER_LOG_INFO(LOG_CORE, "%s:NetworkPlugin, start success!", __func__);
int ret = COMMON::PluginWriteToHisysevent("network_plugin", "sh", GetCmdArgs(protoConfig_),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "%s: NetworkPlugin success! hisysevent report result:%d", __func__, ret);
return 0;
}
std::string NetworkPlugin::GetCmdArgs(NetworkConfig traceConfig)
{
std::stringstream args;
for (const auto& p : traceConfig.pid()) {
args << "pid: " << COMMON::GetProcessNameByPid(p) << ", ";
}
args << "test_file: " << traceConfig.test_file();
return args.str();
}
template <typename T> bool NetworkPlugin::WriteNetWorkData(T& networkDatasProto)
{
std::string file = GetRateNodePath();

View File

@ -26,6 +26,7 @@ ohos_unittest("networkplugin_ut") {
module_out_path = module_output_path
sources = [ "unittest/network_plugin_test.cpp" ]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/network_plugin:networkplugin_source",
"${OHOS_PROFILER_DIR}/protos/types/plugins/network_data:network_data_cpp",
]

View File

@ -28,6 +28,7 @@ ohos_fuzztest("NetworkStartPluginFuzzTest") {
]
sources = [ "networkstartplugin_fuzzer.cpp" ]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/network_plugin:networkplugin_source",
"${OHOS_PROFILER_DIR}/protos/types/plugins/network_data:network_data_cpp",
]

View File

@ -49,6 +49,7 @@ ohos_source_set("network_profiler_service") {
]
external_deps = [
"hisysevent:libhisysevent",
"init:libbegetutil",
"protobuf:protobuf_lite",
]

View File

@ -71,9 +71,13 @@ public:
bool ResetWriter(uint32_t pluginId) override;
void SetCommandPoller(const std::shared_ptr<CommandPoller>& p) override;
bool RegisterAgentPlugin(const std::string& pluginPath);
std::string GetCmdArgs(NetworkProfilerConfig traceConfig);
private:
bool CheckConfig();
bool CheckConfigPid(std::set<int32_t>& pidCache);
bool CheckStartupProcessName();
bool CheckRestartProcessName(std::set<int32_t>& pidCache);
bool HandleNetworkProfilerContext(const std::shared_ptr<NetworkProfilerCtx>& ctx);
clockid_t GetClockId(NetworkProfilerConfig::ClockId clockType);

View File

@ -15,6 +15,7 @@
#include "network_profiler_manager.h"
#include <sstream>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
@ -57,9 +58,8 @@ void NetworkProfilerManager::Init()
RegisterAgentPlugin("network-profiler");
}
bool NetworkProfilerManager::CheckConfig()
bool NetworkProfilerManager::CheckConfigPid(std::set<int32_t>& pidCache)
{
std::set<int32_t> pidCache;
for (const auto& pid : config_.pid()) {
if (pid > 0) {
if (COMMON::IsUserMode() && (!COMMON::CheckApplicationPermission(pid, ""))) {
@ -70,17 +70,19 @@ bool NetworkProfilerManager::CheckConfig()
if (stat(pidPath.c_str(), &statBuf) != 0) {
PROFILER_LOG_ERROR(LOG_CORE, "%s: hook process does not exist", __func__);
return false;
} else {
auto [iter, ret] = pidCache.emplace(pid);
if (ret) {
networkCtx_.emplace_back(std::make_shared<NetworkProfilerCtx>(pid));
paramValue_ += std::to_string(pid) + ",";
}
continue;
}
auto [iter, ret] = pidCache.emplace(pid);
if (ret) {
networkCtx_.emplace_back(std::make_shared<NetworkProfilerCtx>(pid));
paramValue_ += std::to_string(pid) + ",";
}
}
}
return true;
}
bool NetworkProfilerManager::CheckStartupProcessName()
{
for (const auto& name : config_.startup_process_name()) {
if (name.empty()) {
continue;
@ -98,7 +100,11 @@ bool NetworkProfilerManager::CheckConfig()
networkCtx_.emplace_back(std::make_shared<NetworkProfilerCtx>(name));
}
}
return true;
}
bool NetworkProfilerManager::CheckRestartProcessName(std::set<int32_t>& pidCache)
{
for (const auto& name : config_.restart_process_name()) {
if (name.empty()) {
continue;
@ -123,6 +129,21 @@ bool NetworkProfilerManager::CheckConfig()
return false;
}
}
return true;
}
bool NetworkProfilerManager::CheckConfig()
{
std::set<int32_t> pidCache;
if (!CheckConfigPid(pidCache)) {
return false;
}
if (!CheckStartupProcessName()) {
return false;
}
if (!CheckRestartProcessName(pidCache)) {
return false;
}
if (config_.flush_interval() == 0) {
config_.set_flush_interval(1);
@ -170,15 +191,41 @@ bool NetworkProfilerManager::StartNetworkProfiler()
int ret = SystemSetParameter(PARAM_KAY.c_str(), paramValue_.c_str());
PROFILER_LOG_INFO(LOG_CORE, "StartNetworkProfiler parameter: %s", paramValue_.c_str());
auto args = GetCmdArgs(config_);
if (ret < 0) {
PROFILER_LOG_ERROR(LOG_CORE, "StartNetworkProfiler set parameter failed");
COMMON::PluginWriteToHisysevent("network_profiler_plugin", "sh", args, COMMON::ErrorType::RET_FAIL,
"set param failed");
return false;
} else {
PROFILER_LOG_INFO(LOG_CORE, "StartNetworkProfiler set parameter success");
}
int res = COMMON::PluginWriteToHisysevent("memory_plugin", "sh", args, COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "hisysevent report network_profiler_plugin ret: %d.", res);
return true;
}
std::string NetworkProfilerManager::GetCmdArgs(NetworkProfilerConfig traceConfig)
{
std::stringstream args;
for (const auto& p : traceConfig.pid()) {
args << "pid: " << COMMON::GetProcessNameByPid(p) << ", ";
}
for (const auto& name : traceConfig.startup_process_name()) {
args << "startup_process_name: " << name << ", ";
}
for (const auto& name : traceConfig.restart_process_name()) {
args << "restart_process_name: " << name << ", ";
}
args << "clock_id: " << std::to_string(traceConfig.clock_id()) << ", ";
args << "smb_pages: " << std::to_string(traceConfig.smb_pages()) << ", ";
args << "flush_interval: " << std::to_string(traceConfig.flush_interval()) << ", ";
args << "block: " << (traceConfig.block() ? "true" : "false");
return args.str();
}
void NetworkProfilerManager::StopNetworkProfiler()
{
int ret = SystemSetParameter(PARAM_KAY.c_str(), "");

View File

@ -37,6 +37,7 @@ ohos_source_set("processplugin_source") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}
@ -48,7 +49,10 @@ ohos_source_set("processplugin_source") {
ohos_shared_library("processplugin") {
output_name = "processplugin"
version_script = "libprocess_plugin.map"
deps = [ ":processplugin_source" ]
deps = [
":processplugin_source",
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
]
if (current_toolchain != host_toolchain) {
defines = [ "HAVE_HILOG" ]
external_deps = [ "hilog:libhilog_base" ]

View File

@ -95,6 +95,8 @@ private:
template <typename T> bool WritePssData(int pid, T& processinfo);
std::string GetCmdArgs(ProcessConfig traceConfig);
ProcessConfig protoConfig_;
std::unique_ptr<uint8_t[]> buffer_;
std::vector<int32_t> pids_;

View File

@ -20,6 +20,8 @@
#include <sstream>
#include "buffer_splitter.h"
#include "common.h"
#include "hisysevent.h"
#include "process_plugin_result.pbencoder.h"
#include "securec.h"
@ -56,10 +58,22 @@ int ProcessDataPlugin::Start(const uint8_t* configData, uint32_t configSize)
CHECK_TRUE(protoConfig_.ParseFromArray(configData, configSize) > 0, RET_FAIL,
"%s:parseFromArray failed!", __func__);
PROFILER_LOG_INFO(LOG_CORE, "%s:start success!", __func__);
int ret = COMMON::PluginWriteToHisysevent("process_plugin", "sh", GetCmdArgs(protoConfig_),
COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "%s: success! hisysevent report process_plugin result:%d", __func__, ret);
return RET_SUCC;
}
std::string ProcessDataPlugin::GetCmdArgs(ProcessConfig traceConfig)
{
std::stringstream args;
args << "report_process_tree: " << (traceConfig.report_process_tree() ? "true" : "false") << ", ";
args << "report_cpu: " << (traceConfig.report_cpu() ? "true" : "false") << ", ";
args << "report_diskio: " << (traceConfig.report_diskio() ? "true" : "false") << ", ";
args << "report_pss: " << (traceConfig.report_pss() ? "true" : "false");
return args.str();
}
int ProcessDataPlugin::ReportOptimize(RandomWriteCtx* randomWrite)
{
ProtoEncoder::ProcessData dataProto(randomWrite);

View File

@ -26,6 +26,7 @@ ohos_unittest("processplugin_ut") {
module_out_path = module_output_path
sources = [ "unittest/process_plugin_unittest.cpp" ]
deps = [
"${OHOS_PROFILER_DIR}/device/base:hiprofiler_base",
"${OHOS_PROFILER_DIR}/device/plugins/process_plugin:processplugin_source",
"${OHOS_PROFILER_DIR}/protos/types/plugins/process_data:process_data_cpp",
]

View File

@ -36,6 +36,7 @@ ohos_shared_library("xpowerplugin") {
external_deps = [
"bounds_checking_function:libsec_shared",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"protobuf:protobuf_lite",
]
}

View File

@ -34,6 +34,7 @@ public:
void OptimizeCallback(const std::uint32_t messageType, const uint8_t* protoData, size_t protoSize);
void SetWriter(WriterStruct* writer);
bool StartPowerManager(std::uint32_t messageType, std::string& bundleName);
std::string GetCmdArgs(XpowerConfig traceConfig);
private:
void* powerClientHandle_ = nullptr;
XpowerConfig protoConfig_;

View File

@ -48,6 +48,17 @@ XpowerPlugin::~XpowerPlugin()
}
}
std::string XpowerPlugin::GetCmdArgs(XpowerConfig traceConfig)
{
std::stringstream args;
args << "bundle_name: " << traceConfig.bundle_name() << ", ";
for (const auto& type : traceConfig.message_type()) {
args << "type: " << std::to_string(type) << ", ";
}
return args.str();
}
int XpowerPlugin::Start(const uint8_t *configData, uint32_t configSize)
{
PROFILER_LOG_INFO(LOG_CORE, "%s:config data -->configSize=%d", __func__, configSize);
@ -63,8 +74,11 @@ int XpowerPlugin::Start(const uint8_t *configData, uint32_t configSize)
messageType |= mesType;
}
}
auto args = GetCmdArgs(protoConfig_);
if (messageType == 0) {
PROFILER_LOG_ERROR(LOG_CORE, "XpowerPlugin error : messageType is empty!");
COMMON::PluginWriteToHisysevent("xpower_plugin", "sh", args, COMMON::ErrorType::RET_MSG_EMPTY,
"messageType is empty");
return -1;
}
PROFILER_LOG_INFO(LOG_CORE, "bundleName is %s,messagetype is %d", bundleName.c_str(), messageType);
@ -73,12 +87,16 @@ int XpowerPlugin::Start(const uint8_t *configData, uint32_t configSize)
(messageType & OptimizeMessageType::MESSAGE_ABNORMAL_EVENTS) != 0) {
if (bundleName.empty()) {
PROFILER_LOG_ERROR(LOG_CORE, "XpowerPlugin error : bundle name is empty!");
COMMON::PluginWriteToHisysevent("xpower_plugin", "sh", args, COMMON::ErrorType::RET_MSG_EMPTY,
"bundle name is empty");
return -1;
}
// check bundleName
int32_t uid = COMMON::GetPackageUid(bundleName);
if (uid < AID_HAP_START || uid > AID_HAP_END) {
PROFILER_LOG_ERROR(LOG_CORE, "the bundle name %s is not supported", bundleName.c_str());
COMMON::PluginWriteToHisysevent("xpower_plugin", "sh", args, COMMON::ErrorType::RET_NOT_SUPPORT,
"bundle name is not supported");
return -1;
}
}
@ -87,6 +105,8 @@ int XpowerPlugin::Start(const uint8_t *configData, uint32_t configSize)
bool isExsit = COMMON::IsProcessExist(bundleName, processId);
if (!isExsit) {
PROFILER_LOG_ERROR(LOG_CORE, "%s:the process %s does not exist.", __func__, bundleName.c_str());
COMMON::PluginWriteToHisysevent("xpower_plugin", "sh", args, COMMON::ErrorType::RET_IVALID_PID,
"the process does not exist");
return -1;
}
}
@ -94,9 +114,13 @@ int XpowerPlugin::Start(const uint8_t *configData, uint32_t configSize)
// 加载对应so 库文件
if (!StartPowerManager(messageType, bundleName)) {
PROFILER_LOG_ERROR(LOG_CORE, "start power manager failed!");
COMMON::PluginWriteToHisysevent("xpower_plugin", "sh", args, COMMON::ErrorType::RET_FAIL,
"start power manager failed");
return -1;
}
PROFILER_LOG_INFO(LOG_CORE, "finish register the callback function:%s", __func__);
int ret = COMMON::PluginWriteToHisysevent("xpower_plugin", "sh", args, COMMON::ErrorType::RET_SUCC, "success");
PROFILER_LOG_INFO(LOG_CORE, "finish register the callback function:%s, hisysevent report xpower_plugin ret: %d.",
__func__, ret);
return 0;
}

View File

@ -29,8 +29,8 @@ void ByTrace::SetTraceConfig(int mSum, int mInterval, long long mThreshold, int
threshold = mThreshold;
lowfps = mLowfps;
curNum = mCurNum;
LOGI("ByTrace::SetTraceConfig mSum(%d) mInterval(%d) mThreshold(%lld) mLowfps(%d) mCurNum(%d)", mSum, mInterval,
mThreshold, mLowfps, mCurNum);
LOGD("ByTrace::SetTraceConfig mSum(%d) mInterval(%d) mThreshold(%lld) mLowfps(%d) mCurNum(%d)",
mSum, mInterval, mThreshold, mLowfps, mCurNum);
}
void ByTrace::ThreadGetTrace() const
{
@ -45,7 +45,7 @@ void ByTrace::ThreadGetTrace() const
std::string traceFile = "/data/local/tmp/sptrace_" + time + ".ftrace";
std::string traceCmdExe = cmdString + traceFile;
SPUtils::LoadCmd(traceCmdExe, result);
LOGI("TRACE threadGetTrace CMD(%s)", traceCmdExe.c_str());
LOGD("TRACE threadGetTrace CMD(%s)", traceCmdExe.c_str());
}
TraceStatus ByTrace::CheckFpsJitters(std::vector<long long> jitters, int cfps) const
{

View File

@ -81,14 +81,14 @@ std::map<std::string, std::string> CPU::ItemData()
}
}
LOGI("CPU::ItemData map size(%u)", result.size());
LOGD("CPU::ItemData map size(%u)", result.size());
return result;
}
void CPU::SetPackageName(const std::string &pName)
{
packageName = pName;
LOGI("CPU SetPackageName name(%s)", pName.c_str());
LOGD("CPU SetPackageName name(%s)", pName.c_str());
}
void CPU::SetProcessId(const std::string &pid)
@ -107,8 +107,8 @@ std::vector<CpuFreqs> CPU::GetCpuFreq()
cpuFreqs.cpuId = cpufreq[i].cpuId;
cpuFreqs.curFreq = cpufreq[i].curFreq;
cpuFrequency.push_back(cpuFreqs);
LOGI("cpuFreqs.cpuId: %s", std::to_string(cpufreq[i].cpuId).c_str());
LOGI("cpuFreqs.curFreq: %s", std::to_string(cpufreq[i].curFreq).c_str());
LOGD("cpuFreqs.cpuId: %s, cpuFreqs.curFreq: %s",
std::to_string(cpufreq[i].cpuId).c_str(), std::to_string(cpufreq[i].curFreq).c_str());
}
return cpuFrequency;
}
@ -133,14 +133,12 @@ std::vector<CpuUsageInfos> CPU::GetCpuUsage()
cpuUsageInfos.irqUsage = cpuInfo.irqUsage;
cpuUsageInfos.softIrqUsage = cpuInfo.softIrqUsage;
workload.push_back(cpuUsageInfos);
LOGI("UsageCpuId: %s", cpuInfo.cpuId.c_str());
LOGI("userUsage: %s", std::to_string(cpuInfo.userUsage).c_str());
LOGI("niceUsage: %s", std::to_string(cpuInfo.niceUsage).c_str());
LOGI("systemUsage: %s", std::to_string(cpuInfo.systemUsage).c_str());
LOGI("idleUsage: %s", std::to_string(cpuInfo.idleUsage).c_str());
LOGI("ioWaitUsage: %s", std::to_string(cpuInfo.ioWaitUsage).c_str());
LOGI("irqUsage: %s", std::to_string(cpuInfo.irqUsage).c_str());
LOGI("softIrqUsage: %s", std::to_string(cpuInfo.softIrqUsage).c_str());
LOGD("UsageCpuId: %s, userUsage: %s, niceUsage: %s, systemUsage: %s",
"idleUsage: %s, ioWaitUsage: %s, irqUsage: %s, softIrqUsage: %s",
cpuInfo.cpuId.c_str(), std::to_string(cpuInfo.userUsage).c_str(),
std::to_string(cpuInfo.niceUsage).c_str(), std::to_string(cpuInfo.systemUsage).c_str(),
std::to_string(cpuInfo.idleUsage).c_str(), std::to_string(cpuInfo.ioWaitUsage).c_str(),
std::to_string(cpuInfo.irqUsage).c_str(), std::to_string(cpuInfo.softIrqUsage).c_str());
}
return workload;
}
@ -161,12 +159,10 @@ std::map<std::string, std::string> CPU::GetSysProcessCpuLoad() const
processCpuInfo["ProcCpuUsage"] = std::to_string(data.cpuUsage * oneHundred);
processCpuInfo["ProcUCpuUsage"] = std::to_string(data.uCpuUsage * oneHundred);
processCpuInfo["ProcSCpuUsage"] = std::to_string(data.sCpuUsage * oneHundred);
LOGI("ProcId: %s", std::to_string(data.pid).c_str());
LOGI("ProcAppName: %s", data.procName.c_str());
LOGI("ProcCpuLoad: %s", std::to_string(data.cpuLoad).c_str());
LOGI("ProcCpuUsage: %s", std::to_string(data.cpuUsage).c_str());
LOGI("ProcUCpuUsage: %s", std::to_string(data.uCpuUsage).c_str());
LOGI("ProcSCpuUsage: %s", std::to_string(data.sCpuUsage).c_str());
LOGD("ProcId: %s, ProcAppName: %s, ProcCpuLoad: %s, ProcCpuUsage: %s, ProcUCpuUsage: %s, ProcSCpuUsage: %s",
std::to_string(data.pid).c_str(), data.procName.c_str(), std::to_string(data.cpuLoad).c_str(),
std::to_string(data.cpuUsage).c_str(), std::to_string(data.uCpuUsage).c_str(),
std::to_string(data.sCpuUsage).c_str());
} else {
processCpuInfo["ProcId"] = "NA";
processCpuInfo["ProcAppName"] = packageName;

View File

@ -55,7 +55,7 @@ std::map<std::string, std::string> Capture::ItemData()
}
result["capture"] = path;
LOGI("Capture::ItemData map size(%u)", result.size());
LOGD("Capture::ItemData map size(%u)", result.size());
return result;
}
@ -76,16 +76,16 @@ void Capture::ThreadGetCatch()
if (!SPUtils::FileAccess(captureDir)) {
std::string capturePath = CMD_COMMAND_MAP.at(CmdCommand::CREAT_DIR) + captureDir;
if (!SPUtils::LoadCmd(capturePath, cmdResult)) {
LOGI("%s capture not be created!", captureDir.c_str());
LOGE("%s capture not be created!", captureDir.c_str());
return;
} else {
LOGI("%s created successfully!", captureDir.c_str());
LOGD("%s created successfully!", captureDir.c_str());
}
};
std::ostringstream errorRecv;
auto fd = open(savePath.c_str(), O_RDWR | O_CREAT, 0666);
if (fd == -1) {
LOGI("Failed to open file: %s", savePath.c_str());
LOGE("Failed to open file: %s", savePath.c_str());
}
if (!TakeScreenCap(savePath)) {
LOGE("Screen Capture Failed!");
@ -102,10 +102,10 @@ void Capture::ThreadGetCatchSocket(const std::string &captureTime) const
if (!SPUtils::FileAccess(captureDir)) {
std::string capturePath = CMD_COMMAND_MAP.at(CmdCommand::CREAT_DIR) + captureDir;
if (!SPUtils::LoadCmd(capturePath, cmdResult)) {
LOGI("%s capture not be created!", captureDir.c_str());
LOGE("%s capture not be created!", captureDir.c_str());
return;
} else {
LOGI("%s created successfully!", captureDir.c_str());
LOGD("%s created successfully!", captureDir.c_str());
}
};
@ -114,13 +114,13 @@ void Capture::ThreadGetCatchSocket(const std::string &captureTime) const
std::cout << "" << std::endl;
}
auto fd = open(realPath, O_RDWR | O_CREAT, 0644);
auto fd = open(savePath.c_str(), O_RDWR | O_CREAT, 0644);
if (fd == -1) {
LOGI("Failed to open file: %s", savePath.c_str());
LOGE("Failed to open file: %s", savePath.c_str());
}
std::string snapshot = CMD_COMMAND_MAP.at(CmdCommand::SNAPSHOT);
if (!SPUtils::LoadCmd(snapshot + savePath, cmdResult)) {
LOGI("snapshot_display command failed!");
LOGE("snapshot_display command failed!");
close(fd);
return;
}

View File

@ -24,7 +24,7 @@ std::map<std::string, std::string> DDR::ItemData()
if (result.find("ddrFrequency") != result.end() && result["ddrFrequency"].empty()) {
result["ddrFrequency"] = "NA";
}
LOGI("DDR::ItemData map size(%u)", result.size());
LOGD("DDR::ItemData map size(%u)", result.size());
return result;
}
long long DDR::GetDdrFreq()

View File

@ -25,14 +25,12 @@ void Dubai::DumpDubaiBegin()
std::string result;
std::string dumpBubaiB = HIDUMPER_CMD_MAP.at(HidumperCmd::DUMPER_DUBAI_B);
SPUtils::LoadCmd(dumpBubaiB, result);
LOGI("Dubai::DumpDubaiBegin");
}
void Dubai::DumpDubaiFinish()
{
std::string result;
std::string dumpBubaiF = HIDUMPER_CMD_MAP.at(HidumperCmd::DUMPER_DUBAI_F);
SPUtils::LoadCmd(dumpBubaiF, result);
LOGI("Dubai::DumpDubaiFinish");
}
void Dubai::MoveDubaiDb()
@ -44,8 +42,8 @@ void Dubai::MoveDubaiDb()
const std::string PkgEntry = "/entry/rdb";
const std::string cpDubai = "cp -r " + dubaiXpower + XpowerDb + " " + Database + dubaiPkgName + PkgEntry;
const std::string dubaiPathChmod = "chmod 777 " + Database + dubaiPkgName + PkgEntry + XpowerDb;
LOGI("cpDubai: (%s)", cpDubai.c_str());
LOGI("dubaiPathChmod: (%s)", dubaiPathChmod.c_str());
LOGD("cpDubai: (%s), dubaiPathChmod: (%s)",
cpDubai.c_str(), dubaiPathChmod.c_str());
SPUtils::LoadCmd(cpDubai, result);
SPUtils::LoadCmd(dubaiPathChmod, result);
}
@ -54,7 +52,6 @@ void Dubai::CallBeginAndFinish()
{
DumpDubaiBegin();
DumpDubaiFinish();
LOGI("Dubai::CallBeginAndFinish");
}
std::string Dubai::CallMoveDubaiDbFinished()
@ -62,7 +59,6 @@ std::string Dubai::CallMoveDubaiDbFinished()
std::string dubaiMoveFinish;
if (isDumpDubaiFinish) {
MoveDubaiDb();
LOGI("Dubai::MoveDubaiDbFinished");
}
dubaiMoveFinish = "get_dubai_db";
return dubaiMoveFinish;

View File

@ -50,14 +50,12 @@ std::map<std::string, std::string> FPS::ItemData()
result["fps"] = "NA";
result["fpsJitters"] = "NA";
} else {
int fullFrame = 120;
int maxFullFrame = 123;
const int fullFrame = 120;
const int maxFullFrame = 123;
if (fpsInfoResult.fps > fullFrame && fpsInfoResult.fps < maxFullFrame) {
fpsInfoResult.fps = fullFrame;
}
result["fps"] = std::to_string(fpsInfoResult.fps);
LOGI("result.fps: %s", std::to_string(fpsInfoResult.fps).c_str());
LOGI("result.curTime: %s", std::to_string(fpsInfoResult.curTime).c_str());
std::string jitterStr = "";
std::string split = "";
for (size_t i = 0; i < fpsInfoResult.jitters.size(); i++) {
@ -67,7 +65,10 @@ std::map<std::string, std::string> FPS::ItemData()
jitterStr += split + std::to_string(fpsInfoResult.jitters[i]);
}
result["fpsJitters"] = jitterStr;
LOGI("result.jitters: %s", jitterStr.c_str());
LOGD("result.fps: %s, result.curTime: %s, result.jitters: %s",
std::to_string(fpsInfoResult.fps).c_str(),
std::to_string(fpsInfoResult.curTime).c_str(),
jitterStr.c_str());
SetFpsCurrentFpsTime(fpsInfoResult);
}
return result;
@ -127,7 +128,7 @@ FpsInfo FPS::GetFpsInfo()
OHOS::SmartPerf::SPUtils::GetCurrentTime(fifty, prevResultFpsInfo.curTime);
fpsInfoMax = GetSurfaceFrame(uniteLayer);
} else {
LOGI("FPS:app is in the background");
LOGE("FPS:app is in the background");
if (processId.empty()) {
processFlag = true;
fpsInfoMax.Clear();
@ -184,13 +185,12 @@ void FPS::ReadDataFromPipe(int fd)
char tmp[1024];
fpsNum = 0;
prevScreenTimestamp = -1;
LOGI("FPS::dump time: start!");
struct timespec time1 = { 0 };
clock_gettime(CLOCK_MONOTONIC, &time1);
fpsInfo.curTime = static_cast<int>(time1.tv_sec - 1);
fpsInfo.currTimeDump = (time1.tv_sec - 1) * mod + time1.tv_nsec;
LOGI("FPS:fpsInfo.curTime: %d", fpsInfo.curTime);
LOGI("FPS:psInfo.currTimeDump: %lld", fpsInfo.currTimeDump);
LOGD("FPS:fpsInfo.curTime: %d, FPS:psInfo.currTimeDump: %lld",
fpsInfo.curTime, fpsInfo.currTimeDump);
FILE *fp = fdopen(fd, "r");
if (!fp) {
LOGE("FPS::Failed to open file descriptor");

View File

@ -43,7 +43,7 @@ std::map<std::string, std::string> GPU::ItemData()
result["gpuFrequency"] = "NA";
result["gpuLoad"] = "NA";
}
LOGI("GPU::ItemData map size(%u)", result.size());
LOGD("GPU::ItemData map size(%u)", result.size());
return result;
}
@ -51,7 +51,7 @@ int GPU::GetGpuFreq()
{
std::shared_ptr<GpuCollector> collector = GpuCollector::Create();
CollectResult<GpuFreq> result = collector->CollectGpuFrequency();
LOGI("GpuFrequency: %s", std::to_string(result.data.curFeq).c_str());
LOGD("GpuFrequency: %s", std::to_string(result.data.curFeq).c_str());
return result.data.curFeq;
}
@ -59,7 +59,7 @@ float GPU::GetGpuLoad()
{
std::shared_ptr<GpuCollector> collector = GpuCollector::Create();
CollectResult<SysGpuLoad> result = collector->CollectSysGpuLoad();
LOGI("SysGpuLoad: %s", std::to_string(result.data.gpuLoad).c_str());
LOGD("SysGpuLoad: %s", std::to_string(result.data.gpuLoad).c_str());
return float(result.data.gpuLoad);
}

View File

@ -39,7 +39,7 @@ namespace OHOS {
void* handle = dlopen(soFilePathChar, RTLD_LAZY);
if (!handle) {
LOGI("open GpuCounterPlugin so file error.");
LOGE("open GpuCounterPlugin so file error.");
return nullptr;
}
@ -65,15 +65,12 @@ namespace OHOS {
int ret = startGetGpuPerfInfo()->StartGetGpuPerfInfo(duration, std::move(gpuCounterCallback));
if (ret == 0) {
gcStatus = GC_RUNNING;
LOGI("GpuCounter collect start.");
} else {
LOGE("GpuCounter call gameService error, ret = %d", ret);
}
} else if (type == GC_RESTART && gcStatus == GC_RUNNING) {
int ret = startGetGpuPerfInfo()->StartGetGpuPerfInfo(duration, std::move(gpuCounterCallback));
if (ret == 0) {
LOGI("GpuCounter recollect start.");
} else {
if (ret != 0) {
LOGE("GpuCounter call gameService error, ret = %d", ret);
}
} else {
@ -86,7 +83,6 @@ namespace OHOS {
if (gcStatus != GC_RUNNING || gpuCounterData.size() <= 0) {
return;
}
LOGI("GpuCounter collect stop.");
char gpuCounterDataDirChar[PATH_MAX] = {0x00};
if (realpath(path.c_str(), gpuCounterDataDirChar) == nullptr) {
LOGE("data dir %s is nullptr", path.c_str());
@ -177,7 +173,6 @@ namespace OHOS {
int ret = startGetGpuPerfInfo()->StopGetGpuPerfInfo();
if (ret == 0) {
gcStatus = GC_INIT;
LOGI("GpuCounter collect finish.");
}
}
}

View File

@ -237,7 +237,6 @@ namespace OHOS {
}
if (gpuPerfInfos[0].remainTime <= restartTime) {
LOGI("remain time to restart");
gpuCounterInstance.StartCollect(GpuCounter::GC_RESTART);
}
return 0;

View File

@ -33,7 +33,7 @@ namespace SmartPerf {
std::map<std::string, std::string> Network::ItemData()
{
std::map<std::string, std::string> result = Network::GetNetworkInfo();
LOGI("Network ItemData map siez=%u", result.size());
LOGD("Network ItemData map siez=%u", result.size());
if (result.find("networkUp") != result.end() && result["networkUp"].empty()) {
result["networkUp"] = "NA";
}

View File

@ -34,12 +34,10 @@ std::map<std::string, std::string> Power::ItemData()
if (result.find("voltageNow") != result.end() && result["voltageNow"].empty()) {
result["voltageNow"] = "NA";
}
LOGI("currentNow: %s", currentNow.c_str());
LOGI("voltageNow: %s", voltageNow.c_str());
LOGI("Power::ItemData map size(%u)", result.size());
LOGD("Power::ItemData map size(%u)", result.size());
} else {
result["failed"] = "RK does not support power acquisition";
LOGI("failed:RK does not support power acquisition");
LOGE("failed:RK does not support power acquisition");
}
return result;
}

View File

@ -76,7 +76,7 @@ std::map<std::string, std::string> RAM::ItemData()
result.insert(*it);
}
}
LOGI("RAM::ItemData map size(%u)", result.size());
LOGD("RAM::ItemData map size(%u)", result.size());
return result;
}

View File

@ -25,7 +25,7 @@ std::map<std::string, std::string> Temperature::ItemData()
struct dirent *dirp;
std::vector<std::string> dirs;
if (dp == nullptr) {
std::cout << "Open directory failed!" << std::endl;
LOGE("Open directory failed!");
}
while ((dirp = readdir(dp)) != nullptr) {
if (strcmp(dirp->d_name, ".") != 0 && strcmp(dirp->d_name, "..") != 0) {
@ -39,9 +39,7 @@ std::map<std::string, std::string> Temperature::ItemData()
std::map<std::string, std::string> result;
for (auto dir : dirs) {
std::string dirType = dir + "/type";
LOGI("dirType====: %s", dirType.c_str());
std::string dirTemp = dir + "/temp";
LOGI("dirTemp====: %s", dirTemp.c_str());
if (!SPUtils::FileAccess(dirType)) {
continue;
@ -53,9 +51,7 @@ std::map<std::string, std::string> Temperature::ItemData()
SPUtils::LoadFile(dirTemp, temp);
for (auto node : collectNodes) {
if (type.find(node) != std::string::npos) {
LOGI("type====: %s", type.c_str());
float t = SPUtilesTye::StringToSometype<float>(temp);
LOGI("temp====: %s", temp.c_str());
if (node == "gpu") {
result[type] = std::to_string(t);
} else {
@ -65,7 +61,7 @@ std::map<std::string, std::string> Temperature::ItemData()
}
}
LOGI("Temperature::ItemData map size(%u)", result.size());
LOGD("Temperature::ItemData map size(%u)", result.size());
return result;
}
}

View File

@ -51,7 +51,6 @@ int ClientControl::SocketStart(const std::string &args)
OHOS::SmartPerf::StartUpDelay sd;
sd.GetSpClear();
}
LOGI("ClientControl::SocketStart() OK");
return 0;
}
int ClientControl::SocketStop()
@ -74,7 +73,6 @@ int ClientControl::SocketStop()
} else {
std::cout << "SP_daemon Collection ended failed" << std::endl;
}
LOGI("ClientControl::SocketStop() OK");
return 0;
}
int ClientControl::InitSocket()
@ -93,7 +91,6 @@ int ClientControl::InitSocket()
LOGE("Failed to connect to server");
return 1;
}
LOGI("ClientControl::InitSocket() OK");
return 0;
}
void ClientControl::StartSPDaemon() const
@ -102,14 +99,12 @@ void ClientControl::StartSPDaemon() const
std::string server = CMD_COMMAND_MAP.at(CmdCommand::SERVER);
SPUtils::LoadCmd(server, result);
sleep(1);
LOGI("ClientControl::StartSPDaemon() OK");
}
int ClientControl::CloseSocket()
{
shutdown(clientSocket, SHUT_RD);
close(clientSocket);
clientSocket = -1;
LOGI("ClientControl::CloseSocket() OK");
return 0;
}
}

View File

@ -52,11 +52,8 @@ void Heartbeat::HeartbeatRule()
{
while (isrunning) {
auto end = std::chrono::steady_clock::now();
LOGI("endTime: %lld", std::chrono::time_point_cast<std::chrono::microseconds>(end).time_since_epoch().count());
auto duration = std::chrono::duration_cast<std::chrono::seconds>(end - updateStart).count();
LOGI("ListeningTimeJitter: %lld", duration);
if (duration > timeout) {
LOGI("connect timeout have Disconnected successfully!");
KillSpId();
}
sleep(checkMessageTime);
@ -67,7 +64,6 @@ void Heartbeat::UpdatestartTime()
{
std::unique_lock<std::mutex> lock(mtx);
updateStart = std::chrono::steady_clock::now();
LOGI("Listening to messages from edtior or device");
lock.unlock();
}

View File

@ -228,7 +228,7 @@ const std::unordered_map<CmdCommand, std::string> CMD_COMMAND_MAP = {
{ CmdCommand::PIDOF_SP, std::string("pidof SP_daemon") },
{ CmdCommand::SERVER_GREP, std::string("ps -ef | grep -v grep | grep 'SP_daemon -server'") },
{ CmdCommand::EDITOR_SERVER_GREP, std::string("ps -ef | grep -v grep | grep 'SP_daemon -editorServer'") },
{ CmdCommand::UINPUT_BACK, std::string("uinput -T -m 600 2760 600 1300 200") },
{ CmdCommand::UINPUT_BACK, std::string("uinput -K -d 2076 -d 2020 -u 2076 -u 2020") },
{ CmdCommand::TIMESTAMPS, std::string("timestamps") },
{ CmdCommand::USER_PERMISSIONS, std::string("whoami") },
};

View File

@ -70,16 +70,13 @@ public:
void Process(ProtoType type) const
{
std::cout << "Socket Process called!" << std::endl;
LOGI("Socket Process called!");
SpServerSocket spSocket;
spSocket.Init(type);
if (type == ProtoType::TCP) {
std::cout << "Socket TCP Init called!" << std::endl;
LOGI("Socket TCP Init called!");
TypeTcp(spSocket);
}
if (type == ProtoType::UDP || type == ProtoType::UDPEX) {
LOGI("Socket UDP Init called! type(%d)", static_cast<int>(type));
SocketHeartbeat();
while (1) {
spSocket.Recvfrom();
@ -87,7 +84,6 @@ public:
}
}
std::cout << "Socket Process finished!" << std::endl;
LOGI("Socket Process finished!");
spSocket.Close();
}
SocketErrorType CheckToken(std::string recvStr, SpServerSocket &spSocket) const
@ -154,7 +150,6 @@ public:
void StartRecv(SpServerSocket &spSocket) const
{
if (flagRunning) {
LOGI("SP_daemon is running");
spSocket.Send("SP_daemon is running");
return;
}
@ -163,7 +158,7 @@ public:
};
ErrCode code = SPTask::GetInstance().StartTask(lambdaTask);
SPTask::GetInstance().StartRecord();
LOGI("start:::%s", (code == ErrCode::OK) ? "True" : "False");
LOGD("start:::%s", (code == ErrCode::OK) ? "True" : "False");
if (code == ErrCode::OK) {
spSocket.Send("start::True");
flagRunning = true;
@ -175,7 +170,7 @@ public:
{
auto lambdaTask = [&spSocket](const std::string &data) { spSocket.Send(data); };
ErrCode code = SPTask::GetInstance().StartTask(lambdaTask);
LOGI("start::%s", (code == ErrCode::OK) ? "True" : "False");
LOGD("start::%s", (code == ErrCode::OK) ? "True" : "False");
if (code == ErrCode::OK) {
spSocket.Send("start::True");
} else if (code == ErrCode::FAILED) {
@ -320,7 +315,7 @@ public:
}
HandleUDPMsg(spSocket, data, retCode, iterator);
}
LOGI("sendData key(%d) content(%s)", iterator->first, retCode.c_str());
LOGD("sendData key(%d) content(%s)", iterator->first, retCode.c_str());
break;
}
}
@ -415,6 +410,8 @@ public:
spSocket.Sendto(retCode);
} else if (iterator->first == MessageType::BACK_TO_DESKTOP) {
BackDesktop();
} else if (iterator->first == MessageType::START_DUBAI_DB) {
Dubai::CallBeginAndFinish();
} else if (iterator->first == MessageType::SET_DUBAI_DB) {
Dubai::CallBeginAndFinish();
Dubai::isDumpDubaiFinish = true;
@ -423,7 +420,7 @@ public:
} else {
retCode = iterator->second;
spSocket.Sendto(retCode);
LOGI("UDP sendData: (%s)", retCode.c_str());
LOGD("UDP sendData: (%s)", retCode.c_str());
}
}
};

View File

@ -24,7 +24,7 @@ namespace SmartPerf {
std::map<std::string, std::string> Navigation::ItemData()
{
std::map<std::string, std::string> result = Navigation::GetNavInfo();
LOGI("Navigation::ItemData map size(%u)", result.size());
LOGD("Navigation::ItemData map size(%u)", result.size());
return result;
}

View File

@ -63,7 +63,6 @@ std::string ParseRadar::ParseRadarAppStrart(const std::string &string) const
"ms\n"
"CompleteTime:" +
streamComplete.str() + "ms\n";
LOGI("Radar.result====: %s", result.c_str());
return result;
}
double ParseRadar::ParseRadarResponse(const std::string &string) const
@ -149,7 +148,6 @@ std::string ParseRadar::ParseRadarFrame(const std::string &string) const
}
std::string ParseRadar::ExtractString(const std::string &str, const std::string &target) const
{
LOGI("Radar.str: %s", str.c_str());
size_t pos = str.find(target);
if (pos != std::string::npos) {
pos += target.length();

View File

@ -50,21 +50,21 @@ double ParseSlideFpsTrace::CalculateTime()
needTime = true;
frameNow = 0;
touchTime = SPUtilesTye::StringToSometype<double>(ParseSlideFpsTrace::GetLineTime(line));
LOGI("ParseSlideFpsTrace::touchTime: (%s)", std::to_string(touchTime).c_str());
LOGD("ParseSlideFpsTrace::touchTime: (%s)", std::to_string(touchTime).c_str());
swiperFlingFlag = 0;
}
} else if (line.find("H:RSMainThread::DoComposition") != std::string::npos) {
frameNow++;
doCompositionTime = SPUtilesTye::StringToSometype<double>(ParseSlideFpsTrace::GetLineTime(line));
LOGI("ParseSlideFpsTrace::doCompositionTime: (%s)", std::to_string(doCompositionTime).c_str());
LOGD("ParseSlideFpsTrace::doCompositionTime: (%s)", std::to_string(doCompositionTime).c_str());
} else if (line.find("H:WEB_LIST_FLING") != std::string::npos ||
line.find("H:APP_LIST_FLING,") != std::string::npos) {
listFlag++;
if (listFlag == two) {
completeTime = doCompositionTime;
LOGI("ParseSlideFpsTrace::completeTime: (%s)", std::to_string(completeTime).c_str());
frameNum = frameNow;
LOGI("ParseSlideFpsTrace::frameNum: (%d)", frameNum);
LOGD("ParseSlideFpsTrace::completeTime: (%s), ParseSlideFpsTrace::frameNum: (%d)",
std::to_string(completeTime).c_str(), frameNum);
break;
}
}
@ -94,7 +94,7 @@ void ParseSlideFpsTrace::AppSwiperScroll(std::string line)
if (line.find("H:APP_SWIPER_SCROLL,") != std::string::npos) {
if (swiperScrollFlag == 0) {
touchTime = SPUtilesTye::StringToSometype<double>(ParseSlideFpsTrace::GetLineTime(line));
LOGI("AppSwiperScroll.touchTime: (%s)", std::to_string(touchTime).c_str());
LOGD("AppSwiperScroll.touchTime: (%s)", std::to_string(touchTime).c_str());
needTime = true;
swiperScrollFlag = 1;
}
@ -102,9 +102,9 @@ void ParseSlideFpsTrace::AppSwiperScroll(std::string line)
if (line.find("H:APP_SWIPER_FLING,") != std::string::npos) {
if (swiperFlingFlag == 1) {
completeTime = doCompositionTime;
LOGI("AppSwiperScroll.completeTime: (%s)", std::to_string(completeTime).c_str());
frameNum = frameNow;
LOGI("AppSwiperScroll.frameNum: (%d)", frameNum);
LOGD("AppSwiperScroll.completeTime: (%s), AppSwiperScroll.frameNum: (%d)",
std::to_string(completeTime).c_str(), frameNum);
}
swiperFlingFlag++;
}
@ -112,7 +112,7 @@ void ParseSlideFpsTrace::AppSwiperScroll(std::string line)
frameNow = 1;
needTime = false;
responseTime = doCompositionTime;
LOGI("AppSwiperScroll.responseTime: (%s)", std::to_string(responseTime).c_str());
LOGD("AppSwiperScroll.responseTime: (%s)", std::to_string(responseTime).c_str());
}
}

View File

@ -42,14 +42,14 @@ std::map<std::string, std::string> ProfilerFPS::ItemData()
result["fps"] = "NA";
result["fpsJitters"] = "NA";
} else {
int fullFrame = 120;
int maxFullFrame = 123;
const int fullFrame = 120;
const int maxFullFrame = 123;
if (finalResult.fps > fullFrame && finalResult.fps < maxFullFrame) {
finalResult.fps = fullFrame;
}
result["fps"] = std::to_string(finalResult.fps);
LOGI("ProfilerFPS.result.fps: %s", std::to_string(finalResult.fps).c_str());
LOGI("ProfilerFPS.result.curTime: %s", std::to_string(finalResult.curTime).c_str());
LOGD("ProfilerFPS.result.fps: %s, ProfilerFPS.result.curTime: %s",
std::to_string(finalResult.fps).c_str(), std::to_string(finalResult.curTime).c_str());
std::string jitterStr = "";
std::string split = "";
for (size_t i = 0; i < finalResult.jitters.size(); i++) {
@ -59,7 +59,7 @@ std::map<std::string, std::string> ProfilerFPS::ItemData()
jitterStr += split + std::to_string(finalResult.jitters[i]);
}
result["fpsJitters"] = jitterStr;
LOGI("ProfilerFPS.result.jitters: %s", jitterStr.c_str());
LOGD("ProfilerFPS.result.jitters: %s", jitterStr.c_str());
if (isCatchTrace > 0) {
ByTrace::GetInstance().CheckFpsJitters(finalResult.jitters, finalResult.fps);
}
@ -110,15 +110,15 @@ void ProfilerFPS::GetResultFPS(int sectionsNum)
}
time_t now = time(nullptr);
if (now == -1) {
LOGI("Failed to get current time.");
LOGE("Failed to get current time.");
return;
}
char *dt = ctime(&now);
LOGI("printf time is: %s", dt);
LOGD("printf time is: %s", dt);
fflush(stdout);
gettimeofday(&end, nullptr);
runTime = end.tv_sec * 1e6 - start.tv_sec * 1e6 + end.tv_usec - start.tv_usec;
LOGI("printf time is runTime: %s", std::to_string(runTime).c_str());
LOGD("printf time is runTime: %s", std::to_string(runTime).c_str());
if (runTime < sleepTime) {
usleep(sleepTime - runTime);
}
@ -283,7 +283,6 @@ FpsInfoProfiler ProfilerFPS::GetFpsInfo()
uniteLayer = gameLayerName;
isGameSurface = true;
} else if (!rkFlag) {
LOGI("uniteLayer is UniRender");
uniteLayer = "UniRender";
} else {
ProfilerFPS &profilerFps = ProfilerFPS::GetInstance();
@ -293,7 +292,7 @@ FpsInfoProfiler ProfilerFPS::GetFpsInfo()
uniteLayer = GetSurface();
}
if (pkgName.empty() || pkgName.find("sceneboard") != std::string::npos || isGameSurface) {
LOGI("ProfilerFPS.pkgName: %s", pkgName.c_str());
LOGD("ProfilerFPS.pkgName: %s", pkgName.c_str());
OHOS::SmartPerf::SPUtils::GetCurrentTime(fifty, lastFpsInfoResult.curTime);
fpsInfoMax = GetSurfaceFrame(uniteLayer);
} else {
@ -302,7 +301,6 @@ FpsInfoProfiler ProfilerFPS::GetFpsInfo()
OHOS::SmartPerf::SPUtils::GetCurrentTime(fifty, lastFpsInfoResult.curTime);
fpsInfoMax = GetSurfaceFrame(uniteLayer);
} else {
LOGI("ProfilerFPS::app is in the background");
if (processId.empty()) {
processFlag = true;
fpsInfoMax.Clear();
@ -347,12 +345,11 @@ FpsInfoProfiler ProfilerFPS::GetFrameInfoFromMap(std::string name)
}
fpsNum = 0;
prevScreenTimestamp = -1;
LOGI("ProfilerFPS dump time: start!");
struct timespec time1 = { 0 };
clock_gettime(CLOCK_MONOTONIC, &time1);
fpsInfo.curTime = static_cast<int>(time1.tv_sec - 1);
fpsInfo.currTimeDump = (time1.tv_sec - 1) * mod + time1.tv_nsec;
LOGI("ProfilerFPS fpsInfo.curTime: %d", fpsInfo.curTime);
LOGD("ProfilerFPS fpsInfo.curTime: %d", fpsInfo.curTime);
while (fgets(tmp, sizeof(tmp), fp) != nullptr) {
std::string str(tmp);
LOGD("ProfilerFPS dump time: %s", str.c_str());
@ -369,7 +366,7 @@ FpsInfoProfiler ProfilerFPS::GetFrameInfoFromMap(std::string name)
LOGE("Error: Failed to close file");
return fpsInfo;
}
LOGI("ProfilerFPS fpsNum: %d", fpsNum);
LOGD("ProfilerFPS fpsNum: %d", fpsNum);
return fpsInfo;
}
@ -444,14 +441,14 @@ std::string ProfilerFPS::GetGameLayer()
return gameLayer;
}
std::string cmdResult;
std::string dumperSurface = HIDUMPER_CMD_MAP.at(HidumperCmd::DUMPER_SURFACE);
const std::string dumperSurface = HIDUMPER_CMD_MAP.at(HidumperCmd::DUMPER_SURFACE);
char buf[1024] = {'\0'};
std::string start = "NodeId[";
std::string end = "] LayerId";
std::string nodeIdStr;
uint64_t nodeId;
if (dumperSurface.empty()) {
LOGI("ProfilerFPS::DUMPER_SURFACE failed");
LOGE("ProfilerFPS::DUMPER_SURFACE failed");
return gameLayer;
}
FILE *fd = popen(dumperSurface.c_str(), "r");
@ -464,7 +461,7 @@ std::string ProfilerFPS::GetGameLayer()
size_t endPos = line.find(end);
if (startPos != std::string::npos && endPos != std::string::npos) {
nodeIdStr = line.substr(startPos + start.length(), endPos - startPos - start.length());
LOGI("ProfilerFPS::nodeIdStr: (%s)", nodeIdStr.c_str());
LOGD("ProfilerFPS::nodeIdStr: (%s)", nodeIdStr.c_str());
}
const int kShiftAmount = 32;
if (!nodeIdStr.empty()) {
@ -474,7 +471,7 @@ std::string ProfilerFPS::GetGameLayer()
return gameLayer;
}
nodeId = nodeId >> kShiftAmount;
LOGI("ProfilerFPS::nodeId: (%d)", nodeId);
LOGD("ProfilerFPS::nodeId: (%d)", nodeId);
GetLayerName(gameLayer, nodeId, line, endPos);
}
}
@ -482,7 +479,7 @@ std::string ProfilerFPS::GetGameLayer()
LOGE("Error: Failed to close file");
return gameLayer;
}
LOGI("ProfilerFPS::gameLayer: (%s)", gameLayer.c_str());
LOGD("ProfilerFPS::gameLayer: (%s)", gameLayer.c_str());
return gameLayer;
}

View File

@ -132,7 +132,7 @@ namespace OHOS {
params.receiveFd[index] = -1;
return "";
}
LOGI("Fd %d,%d, receove %s", index, params.receiveFd[index], receiveBuf);
LOGD("Fd %d,%d, receove %s", index, params.receiveFd[index], receiveBuf);
receiveBuffer = receiveBuf;
bool processFlag = true;

View File

@ -33,7 +33,7 @@ namespace OHOS {
namespace SmartPerf {
SmartPerfCommand::SmartPerfCommand(std::vector<std::string> argv)
{
LOGI("SmartPerfCommand::SmartPerfCommand size(%u)", argv.size());
LOGD("SmartPerfCommand::SmartPerfCommand size(%u)", argv.size());
if (argv.size() == oneParam) {
OHOS::SmartPerf::StartUpDelay sd;
sd.GetSpTcp();
@ -71,12 +71,10 @@ SmartPerfCommand::SmartPerfCommand(std::vector<std::string> argv)
}
}
}
LOGI("SmartPerfCommand::SmartPerfCommand complete");
}
void SmartPerfCommand::HelpCommand(CommandHelp type, std::string token) const
{
LOGI("SmartPerfCommand::HelpCommand type(%d)", type);
LOGD("SmartPerfCommand::HelpCommand type(%d)", type);
if (type == CommandHelp::HELP) {
std::cout << smartPerfMsg << std::endl;
}
@ -127,7 +125,7 @@ void SmartPerfCommand::CreateSocketThread() const
}
void SmartPerfCommand::HandleCommand(std::string argStr, const std::string &argStr1)
{
LOGI("SmartPerfCommand::HandleCommand argStr(%s) argStr1(%s)", argStr.c_str(), argStr1.c_str());
LOGD("SmartPerfCommand::HandleCommand argStr(%s) argStr1(%s)", argStr.c_str(), argStr1.c_str());
switch (COMMAND_MAP.at(argStr)) {
case CommandType::CT_N:
num = SPUtilesTye::StringToSometype<int>(argStr1.c_str());
@ -257,9 +255,7 @@ std::string SmartPerfCommand::ExecCommand()
SaveGpuCounter();
}
std::this_thread::sleep_for(std::chrono::milliseconds(freq));
LOGI("SmartPerfCommand::WriteCsv start");
SpCsvUtil::WriteCsv(std::string(outPath.c_str()), vmap);
LOGI("SmartPerfCommand::WriteCsv finish");
return std::string("command exec finished!");
}
void SmartPerfCommand::PrintfExecCommand(const std::map<std::string, std::string> data) const
@ -286,7 +282,7 @@ void SmartPerfCommand::InitSomething()
std::string cmdResult;
std::string stat = CMD_COMMAND_MAP.at(CmdCommand::PROC_STAT);
if (SPUtils::LoadCmd(stat, cmdResult)) {
LOGI("SmartPerfCommand::InitSomething Privilege escalation!");
LOGE("SmartPerfCommand::InitSomething Privilege escalation!");
};
}
}

View File

@ -25,7 +25,6 @@
#include "include/ByTrace.h"
#include "include/sp_utils.h"
#include "include/sp_profiler_factory.h"
#include "include/Dubai.h"
#include "include/Capture.h"
#include "include/navigation.h"
#include "include/sp_log.h"
@ -81,9 +80,6 @@ SpProfiler *SpProfilerFactory::GetProfilerItemContinue(MessageType messageType)
Capture::GetInstance().SocketMessage();
profiler = &Capture::GetInstance();
break;
case MessageType::START_DUBAI_DB:
Dubai::CallBeginAndFinish();
break;
case MessageType::CATCH_NETWORK_TRAFFIC:
case MessageType::GET_NETWORK_TRAFFIC:
profiler = &Network::GetInstance();

View File

@ -63,7 +63,7 @@ int SpServerSocket::Init(ProtoType type)
}
}
LOGI("SpServerSocket::Init OK,prot(%d)", sockPort);
LOGD("SpServerSocket::Init OK,prot(%d)", sockPort);
return 0;
}
@ -98,7 +98,7 @@ void SpServerSocket::Close()
local.sin_port = htons(sockPort);
local.sin_addr.s_addr = inet_addr("127.0.0.1");
if (::bind(sock, reinterpret_cast<struct sockaddr *>(&local), sizeof(local)) < 0) {
LOGI("SpServerSocket::Init Socket Bind failed");
LOGE("SpServerSocket::Init Socket Bind failed");
}
}
@ -109,6 +109,9 @@ int SpServerSocket::Recvfrom()
int l = recvfrom(sock, rbuf, sizeof(rbuf) - 1, 0, reinterpret_cast<struct sockaddr *>(&client), &len);
if (l > 0) {
std::cout << "Client:" << rbuf << std::endl;
} else {
LOGE("SpServerSocket::Recvfrom Error(%d)", l);
return -1;
}
return l;
}

View File

@ -111,7 +111,6 @@ static std::string MapToString(std::map<std::string, std::string> myMap)
ErrCode SPTask::InitTask(const std::string &recvStr)
{
LOGI("SPTask::InitTask start param(%s)", recvStr.c_str());
std::string result = "";
std::string hiprofiler = CMD_COMMAND_MAP.at(CmdCommand::HIPROFILER);
SPUtils::LoadCmd(hiprofiler, result);
@ -122,12 +121,11 @@ ErrCode SPTask::InitTask(const std::string &recvStr)
ExceptionMsg exMsg = ParseToTask(recvStr, curTaskInfo);
if (exMsg == ExceptionMsg::NO_ERR) {
isInit = true;
LOGI("SPTask::InitTask Ok");
return ErrCode::OK;
}
std::string errInfo = EXCEPTION_MSG_MAP.at(exMsg);
LOGI("SPTask::InitTask error(%s)", errInfo.c_str());
LOGE("SPTask::InitTask error(%s)", errInfo.c_str());
return ErrCode::FAILED;
}
@ -375,11 +373,10 @@ void SPTask::AsyncGetDataMap(std::function<void(std::string data)> msgTask)
ErrCode SPTask::StartTask(std::function<void(std::string data)> msgTask)
{
LOGI("SPTask::StartTask start ");
RAM &ram = RAM::GetInstance();
ram.SetFirstFlag();
if (!isInit) {
LOGW("SPTask::StartTask initialization failed");
LOGE("SPTask::StartTask initialization failed");
return ErrCode::FAILED;
}
isRunning = true;
@ -394,7 +391,6 @@ ErrCode SPTask::StartTask(std::function<void(std::string data)> msgTask)
AsyncGetDataMap(msgTask);
}
});
LOGI("SPTask::StartTask complete");
return ErrCode::OK;
}
@ -483,7 +479,6 @@ ErrCode SPTask::StopTask()
if (thread.joinable()) {
thread.join();
}
KillHiperfCmd();
return ErrCode::OK;
}
@ -549,10 +544,9 @@ void SPTask::GetHiperf(const std::string &traceName)
std::string result;
std::string tmp = SetHiperf(traceName);
std::cout << tmp << std::endl;
LOGD("hiprofiler exec (%s)", tmp.c_str());
LOGI("hiprofiler exec trace name(%s)", traceName.c_str());
SPUtils::LoadCmd(tmp, result);
LOGI("hiprofiler exec end (%s)", result.c_str());
LOGD("hiprofiler exec (%s), hiprofiler exec trace name(%s), hiprofiler exec end (%s)",
tmp.c_str(), traceName.c_str(), result.c_str());
}
@ -582,7 +576,6 @@ void SPTask::KillHiperfCmd()
runTime = now > startCaptuerTime ? now - startCaptuerTime : LLONG_MAX - startCaptuerTime + now;
runTime = runTime / RM_1000; // Convert to seconds
LOGI("Preparing to exit run time(%lld)", runTime);
do {
out.clear();
std::string hiprofilerPid = CMD_COMMAND_MAP.at(CmdCommand::HIPROFILER_PID);
@ -599,7 +592,6 @@ void SPTask::KillHiperfCmd()
std::string hiprofilerPid = CMD_COMMAND_MAP.at(CmdCommand::HIPROFILER_PID);
SPUtils::LoadCmd(hiprofilerPid, result);
SPUtils::StrSplit(result, " ", out);
LOGI("pidof hiprofiler_cmd size(%u)", out.size());
for (auto it = out.begin(); out.end() != it; ++it) {
result.clear();
SPUtils::LoadCmd(killCmd + (*it), result);
@ -625,7 +617,6 @@ bool SPTask::GetRecordState()
}
ErrCode SPTask::StartRecord()
{
LOGI("SPTask::StartRecord");
startTime = SPUtils::GetCurTime();
InitDataFile();
recordState = true;
@ -634,7 +625,6 @@ ErrCode SPTask::StartRecord()
ErrCode SPTask::StopRecord()
{
LOGI("SPTask::StopRecord");
std::string outGpuCounterDataPath = baseOutPath + "/" + curTaskInfo.sessionId;
if (isInit) {

View File

@ -293,7 +293,7 @@ std::string SPUtils::GetDeviceInfoMap()
deviceInfoMap.insert(deviceInfo.begin(), deviceInfo.end());
deviceInfoMap["activeMode"] = screenSize;
if (deviceInfoMap.empty()) {
LOGI("Failed to obtain device information");
LOGE("Failed to obtain device information");
}
for (auto iter = deviceInfoMap.cbegin(); iter != deviceInfoMap.cend(); ++iter) {
printf("%s: %s\n", iter->first.c_str(), iter->second.c_str());
@ -629,7 +629,7 @@ std::string SPUtils::GetCpuNum()
cpuCores += std::to_string(cpuNum);
if (cpuNum == 0) {
std::cout << "CPU frequency collection failed." << std::endl;
LOGI("CPU frequency collection failed.");
LOGE("CPU frequency collection failed.");
}
return cpuCores;
}
@ -720,7 +720,7 @@ bool SPUtils::GetPathPermissions(const std::string &path)
std::string result = cmdResult.substr(0, 10);
return result == "-rw-r--r--";
} else {
LOGI("THE path is empty");
LOGE("THE path is empty");
return false;
}
}

View File

@ -32,7 +32,7 @@ double StallingRateTrace::StallingRateResult(std::string file)
}
infile.open(realPath);
if (infile.fail()) {
LOGI("StallingRateTrace open file(%s) fialed ", file.c_str());
LOGE("StallingRateTrace open file(%s) fialed ", file.c_str());
return stalligRate;
}
stalligRate = SmartPerf::StallingRateTrace::CalculateTime();
@ -70,21 +70,22 @@ void StallingRateTrace::CalcFrameRate()
} else {
appFrameLossRate = -1;
}
LOGI("result.appFrameLossRate: (%s)", std::to_string(appFrameLossRate).c_str());
if (swiperDynamicFinishTime != 0 && swiperDynamicStartTime != 0) {
swiperFrameLossRate = (frameLossSwiperTime / (swiperDynamicFinishTime - swiperDynamicStartTime) * oneThousand);
} else {
swiperFrameLossRate = -1;
}
LOGI("result.swiperFrameLossRate: (%s)", std::to_string(swiperFrameLossRate).c_str());
if (appTabsDynamicStartTime != 0 && appTabsDynamicFinishTime != 0) {
tabsFrameLossRate = (frameLossTabsTime / (appTabsDynamicFinishTime - appTabsDynamicStartTime) * oneThousand);
} else {
tabsFrameLossRate = -1;
}
LOGI("result.tabsFrameLossRate: (%s)", std::to_string(tabsFrameLossRate).c_str());
LOGD("result.appFrameLossRate: (%s), result.swiperFrameLossRate: (%s), result.tabsFrameLossRate: (%s)",
std::to_string(appFrameLossRate).c_str(),
std::to_string(swiperFrameLossRate).c_str(),
std::to_string(tabsFrameLossRate).c_str());
}
void StallingRateTrace::JudgFrameRate()
@ -98,15 +99,12 @@ void StallingRateTrace::JudgFrameRate()
bool tabsDynamicExists = hasDynamic(appTabsDynamicFinishTime, appTabsDynamicStartTime);
if (!appListDynamicExists) {
LOGI("no app list Dynamic");
frameLossRate = swiperDynamicExists ? swiperFrameLossRate :
tabsDynamicExists ? tabsFrameLossRate : -1;
} else if (!swiperDynamicExists) {
LOGI("no swiper Dynamic");
frameLossRate = appListDynamicExists ? appFrameLossRate :
tabsDynamicExists ? tabsFrameLossRate : -1;
} else if (!tabsDynamicExists) {
LOGI("no tabs Dynamic");
frameLossRate = appListDynamicExists ? appFrameLossRate :
swiperDynamicExists ? swiperFrameLossRate : -1;
} else {
@ -117,7 +115,6 @@ void StallingRateTrace::JudgFrameRate()
void StallingRateTrace::MultiLaneFrameRate()
{
if (appFrameLossRate == 0) {
LOGI("no app list hitchTime");
if (swiperFrameLossRate > 0) {
frameLossRate = swiperFrameLossRate;
} else if (tabsFrameLossRate > 0) {
@ -126,7 +123,6 @@ void StallingRateTrace::MultiLaneFrameRate()
frameLossRate = 0;
}
} else if (swiperFrameLossRate == 0) {
LOGI("no swiper list hitchTime");
if (appFrameLossRate > 0) {
frameLossRate = appFrameLossRate;
} else if (tabsFrameLossRate > 0) {
@ -135,7 +131,6 @@ void StallingRateTrace::MultiLaneFrameRate()
frameLossRate = 0;
}
} else if (tabsFrameLossRate == 0) {
LOGI("no tabs list hitchTime");
if (appFrameLossRate > 0) {
frameLossRate = appFrameLossRate;
} else if (swiperFrameLossRate > 0) {
@ -182,14 +177,14 @@ void StallingRateTrace::AppList(const std::string &line, const std::string &sign
line.find("H:LAUNCHER_APP_LAUNCH_FROM_DOCK,") != std::string::npos ||
line.find("H:LAUNCHER_APP_LAUNCH_FROM_APPCENTER,") != std::string::npos) {
if (listFlag) {
LOGI("AppList line start: (%s)", line.c_str());
appListDynamicFinishTime = GetTimes(line, signF);
LOGI("appListDynamicFinishTime: (%s)", std::to_string(appListDynamicFinishTime).c_str());
LOGD("AppList line start: (%s), appListDynamicFinishTime: (%s)",
line.c_str(), std::to_string(appListDynamicFinishTime).c_str());
listFlag = false;
} else {
LOGI("AppList line finish: (%s)", line.c_str());
appListDynamicStartTime = GetTimes(line, signS);
LOGI("appListDynamicStartTime: (%s)", std::to_string(appListDynamicStartTime).c_str());
LOGD("AppList line finish: (%s), appListDynamicStartTime: (%s)",
line.c_str(), std::to_string(appListDynamicStartTime).c_str());
listFlag = true;
frameLossTime = 0;
}
@ -199,13 +194,12 @@ void StallingRateTrace::AppList(const std::string &line, const std::string &sign
if (upperScreenFlag) {
if (line.find("|H:Present Fence ") != std::string::npos) {
fenceId = GetFenceId(line);
LOGI("fenceId: (%d)", fenceId);
}
std::string waitFenceId = "|H:Waiting for Present Fence " + std::to_string(fenceId);
if (line.find(waitFenceId) != std::string::npos) {
nowTime = SPUtilesTye::StringToSometype<double>(StallingRateTrace::GetOnScreenTimeStart(line));
GetFrameLossTime(nowTime, lastTime, roundTime, frameLossTime);
LOGI("frameLossTime: (%s)", std::to_string(frameLossTime).c_str());
LOGD("frameLossTime: (%s)", std::to_string(frameLossTime).c_str());
lastTime = nowTime;
upperScreenFlag = false;
}
@ -217,9 +211,9 @@ void StallingRateTrace::GetFrameLossTime(double curTime, double prevTime, double
{
if ((curTime - prevTime) > drawTime && prevTime != 0) {
double diffTime = (curTime - prevTime) - drawTime;
LOGI("diffTime: (%s)", std::to_string(diffTime).c_str());
totalFrameLossTime += diffTime;
LOGI("totalFrameLossTime: (%s)", std::to_string(totalFrameLossTime).c_str());
LOGD("diffTime: (%s), totalFrameLossTime: (%s)",
std::to_string(diffTime).c_str(), std::to_string(totalFrameLossTime).c_str());
}
}
@ -240,7 +234,6 @@ void StallingRateTrace::GetRsHardWareRate(double curFrameRate, const std::string
break;
}
curFrameRate = GetFrameRate(line);
LOGI("curFrameRate1: (%s)", std::to_string(curFrameRate).c_str());
if (curFrameRate != 0) {
UpdateRoundTime(curFrameRate, type);
}
@ -259,7 +252,6 @@ void StallingRateTrace::GetRsHardWareRate(double curFrameRate, const std::string
break;
}
curFrameRate = GetFrameRate(line);
LOGI("curFrameRate2: (%s)", std::to_string(curFrameRate).c_str());
if (curFrameRate != 0) {
UpdateRoundTime(curFrameRate, type);
}
@ -293,9 +285,9 @@ void StallingRateTrace::AppSwiperScroll(const std::string &line, const std::stri
line.find("H:APP_SWITCH_FRAME_ANIMATION") != std::string::npos ||
line.find("H:APP_SWIPER_SCROLL,") != std::string::npos) {
if (swiperScrollFlag == 0) {
LOGI("AppSwiperScroll line start: (%s)", line.c_str());
swiperDynamicStartTime = GetTimes(line, signS);
LOGI("swiperDynamicStartTime: (%s)", std::to_string(swiperDynamicStartTime).c_str());
LOGD("AppSwiperScroll line start: (%s), swiperDynamicStartTime: (%s)",
line.c_str(), std::to_string(swiperDynamicStartTime).c_str());
frameLossSwiperTime = 0;
swiperScrollFlag = 1;
swiperFlag = true;
@ -305,9 +297,9 @@ void StallingRateTrace::AppSwiperScroll(const std::string &line, const std::stri
line.find("H:APP_SWIPER_NO_ANIMATION_SWITCH") != std::string::npos ||
line.find("H:APP_SWITCH_FRAME_ANIMATION") != std::string::npos) {
if (swiperFlingFlag == 1) {
LOGI("AppSwiper FinishTime line: (%s)", line.c_str());
swiperDynamicFinishTime = GetTimes(line, signF);
LOGI("swiperDynamicFinishTime: (%s)", std::to_string(swiperDynamicFinishTime).c_str());
LOGD("AppSwiper FinishTime line: (%s), swiperDynamicFinishTime: (%s)",
line.c_str(), std::to_string(swiperDynamicFinishTime).c_str());
swiperFlag = false;
}
if (swiperDynamicFinishTime == 0) {
@ -320,14 +312,13 @@ void StallingRateTrace::AppSwiperScroll(const std::string &line, const std::stri
if (upperScreenSwiperFlag) {
if (line.find("|H:Present Fence ") != std::string::npos) {
fenceIdSwiper = GetFenceId(line);
LOGI("fenceIdSwiper: (%d)", fenceIdSwiper);
}
std::string waitFenceId = "|H:Waiting for Present Fence " + std::to_string(fenceIdSwiper);
if (line.find(waitFenceId) != std::string::npos) {
nowSwiperTime = SPUtilesTye::StringToSometype<double>(StallingRateTrace::GetOnScreenTimeStart(line));
LOGI("nowSwiperTime: (%s)", std::to_string(nowSwiperTime).c_str());
GetFrameLossTime(nowSwiperTime, lastSwiperTime, roundSwiperTime, frameLossSwiperTime);
LOGI("frameLossSwiperTime: (%s)", std::to_string(frameLossSwiperTime).c_str());
LOGD("nowSwiperTime: (%s), frameLossSwiperTime: (%s)",
std::to_string(nowSwiperTime).c_str(), std::to_string(frameLossSwiperTime).c_str());
lastSwiperTime = nowSwiperTime;
upperScreenSwiperFlag = false;
}
@ -345,14 +336,14 @@ void StallingRateTrace::APPTabs(const std::string &line, const std::string &sign
line.find(appTabsFrameAnimation) != std::string::npos ||
line.find(appTabsScroll) != std::string::npos) {
if (tabsFlag) {
LOGI("APPTabs line start: (%s)", line.c_str());
appTabsDynamicFinishTime = GetTimes(line, signF);
LOGI("appTabsDynamicFinishTime: (%s)", std::to_string(appTabsDynamicFinishTime).c_str());
LOGD("APPTabs line start: (%s), appTabsDynamicFinishTime: (%s)",
line.c_str(), std::to_string(appTabsDynamicFinishTime).c_str());
tabsFlag = false;
} else {
LOGI("APPTabs line finish: (%s)", line.c_str());
appTabsDynamicStartTime = GetTimes(line, signS);
LOGI("appTabsDynamicStartTime: (%s)", std::to_string(appTabsDynamicStartTime).c_str());
LOGD("APPTabs line finish: (%s), appTabsDynamicStartTime: (%s)",
line.c_str(), std::to_string(appTabsDynamicStartTime).c_str());
tabsFlag = true;
frameLossTabsTime = 0;
}
@ -362,16 +353,11 @@ void StallingRateTrace::APPTabs(const std::string &line, const std::string &sign
if (upperScreenTabsFlag) {
if (line.find("|H:Present Fence ") != std::string::npos) {
fenceIdTabs = GetFenceId(line);
LOGI("fenceIdTabs: (%s)", std::to_string(fenceIdTabs).c_str());
}
std::string waitFenceId = "|H:Waiting for Present Fence " + std::to_string(fenceIdTabs);
if (line.find(waitFenceId) != std::string::npos) {
nowTabsTime = std::stod(SmartPerf::StallingRateTrace::GetOnScreenTimeStart(line));
LOGI("nowTabsTime: (%s)", std::to_string(nowTabsTime).c_str());
LOGI("lastTabsTime: (%s)", std::to_string(lastTabsTime).c_str());
LOGI("roundTabsTime: (%s)", std::to_string(roundTabsTime).c_str());
GetFrameLossTime(nowTabsTime, lastTabsTime, roundTabsTime, frameLossTabsTime);
LOGI("app tabs frameLossTabsTime: (%s)", std::to_string(frameLossTabsTime).c_str());
lastTabsTime = nowTabsTime;
upperScreenTabsFlag = false;
}

View File

@ -171,7 +171,7 @@ void StartUpDelay::ClearOldServer() const
if (token != curPid) {
SPUtils::LoadCmd(killCmd + token, killResult);
LOGI("Find old server: %s, killed.", token.c_str());
LOGD("Find old server: %s, killed.", token.c_str());
}
}
}
@ -227,7 +227,7 @@ std::string StartUpDelay::GetPidByPkg(const std::string &curPkgName)
std::string resultProcId = ExecuteCommand(args);
if (!resultProcId.empty() && resultProcId.back() == '\n') {
resultProcId.pop_back();
LOGI("startup_delay::output: (%s)", resultProcId.c_str());
LOGD("startup_delay::output: (%s)", resultProcId.c_str());
}
return resultProcId;
}

View File

@ -60,6 +60,7 @@ ohos_unittest("plugin_module_api_ut") {
"googletest:gtest",
"hidumper:lib_dump_usage",
"hilog:libhilog_base",
"hisysevent:libhisysevent",
"hiview:libucollection_graphic",
"protobuf:protobuf_lite",
]