mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2024-10-07 00:13:44 +00:00
丢帧事件上报rss
Signed-off-by: xufu <xufu7@huawei.com>
This commit is contained in:
parent
bcd3f9143a
commit
bc69917e9b
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2021-2023 Huawei Device Co., Ltd.
|
||||
# Copyright (c) 2021-2024 Huawei Device Co., Ltd.
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
@ -100,6 +100,12 @@ template("ace_osal_ohos_source_set") {
|
||||
defines += [ "SOC_PERF_ENABLE" ]
|
||||
}
|
||||
|
||||
if (defined(global_parts_info) && defined(
|
||||
global_parts_info.resourceschedule_resource_schedule_service)) {
|
||||
external_deps += [ "resource_schedule_service:ressched_client" ]
|
||||
defines += [ "RESOURCE_SCHEDULE_SERVICE_ENABLE" ]
|
||||
}
|
||||
|
||||
if (defined(resourceschedule_ffrt_support) &&
|
||||
resourceschedule_ffrt_support) {
|
||||
sources += [ "long_frame_report_impl.cpp" ]
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2021 Huawei Device Co., Ltd.
|
||||
* Copyright (c) 2021-2024 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
@ -25,6 +25,10 @@
|
||||
#include "base/json/json_util.h"
|
||||
#include "core/common/ace_application_info.h"
|
||||
#include "core/common/ace_engine.h"
|
||||
#ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
#include "res_sched_client.h"
|
||||
#include "res_type.h"
|
||||
#endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
|
||||
namespace OHOS::Ace {
|
||||
namespace {
|
||||
@ -85,6 +89,9 @@ constexpr char EVENT_KEY_WINDOW_MODE[] = "WINDOW_MODE";
|
||||
constexpr char EVENT_KEY_PAGE_NAME[] = "PAGE_NAME";
|
||||
|
||||
constexpr int32_t MAX_PACKAGE_NAME_LENGTH = 128;
|
||||
#ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
constexpr int32_t MAX_JANK_FRAME_TIME = 32;
|
||||
#endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
|
||||
constexpr char DUMP_LOG_COMMAND[] = "B";
|
||||
|
||||
@ -393,6 +400,21 @@ void EventReport::ReportEventComplete(DataBase& data)
|
||||
static_cast<long long>(inputTime), static_cast<long long>(e2eLatency));
|
||||
}
|
||||
|
||||
#ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
void EventReport::ReportAppFrameDropToRss(const bool isInteractionJank, const std::string &bundleName,
|
||||
const int64_t maxFrameTime)
|
||||
{
|
||||
uint32_t eventType = ResourceSchedule::ResType::RES_TYPE_APP_FRAME_DROP;
|
||||
int32_t subType = isInteractionJank ? ResourceSchedule::ResType::AppFrameDropType::INTERACTION_APP_JANK
|
||||
: ResourceSchedule::ResType::AppFrameDropType::JANK_FRAME_APP;
|
||||
std::unordered_map<std::string, std::string> payload = {
|
||||
{ "bundleName", bundleName },
|
||||
{ "maxFrameTime", std::to_string(maxFrameTime) },
|
||||
};
|
||||
ResourceSchedule::ResSchedClient::GetInstance().ReportData(eventType, subType, payload);
|
||||
}
|
||||
#endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
|
||||
void EventReport::ReportEventJankFrame(DataBase& data)
|
||||
{
|
||||
std::string eventName = "INTERACTION_APP_JANK";
|
||||
@ -401,10 +423,6 @@ void EventReport::ReportEventJankFrame(DataBase& data)
|
||||
const auto& bundleName = data.baseInfo.bundleName;
|
||||
const auto& processName = data.baseInfo.processName;
|
||||
const auto& abilityName = data.baseInfo.abilityName;
|
||||
const auto& pageUrl = data.baseInfo.pageUrl;
|
||||
const auto& versionCode = data.baseInfo.versionCode;
|
||||
const auto& versionName = data.baseInfo.versionName;
|
||||
const auto& pageName = data.baseInfo.pageName;
|
||||
auto startTime = data.beginVsyncTime;
|
||||
ConvertRealtimeToSystime(data.beginVsyncTime, startTime);
|
||||
const auto& durition = (data.endVsyncTime - data.beginVsyncTime) / NS_TO_MS;
|
||||
@ -424,10 +442,10 @@ void EventReport::ReportEventJankFrame(DataBase& data)
|
||||
EVENT_KEY_PROCESS_NAME, processName,
|
||||
EVENT_KEY_MODULE_NAME, bundleName,
|
||||
EVENT_KEY_ABILITY_NAME, abilityName,
|
||||
EVENT_KEY_PAGE_URL, pageUrl,
|
||||
EVENT_KEY_VERSION_CODE, versionCode,
|
||||
EVENT_KEY_VERSION_NAME, versionName,
|
||||
EVENT_KEY_PAGE_NAME, pageName,
|
||||
EVENT_KEY_PAGE_URL, data.baseInfo.pageUrl,
|
||||
EVENT_KEY_VERSION_CODE, data.baseInfo.versionCode,
|
||||
EVENT_KEY_VERSION_NAME, data.baseInfo.versionName,
|
||||
EVENT_KEY_PAGE_NAME, data.baseInfo.pageName,
|
||||
EVENT_KEY_STARTTIME, static_cast<uint64_t>(startTime),
|
||||
EVENT_KEY_DURITION, static_cast<uint64_t>(durition),
|
||||
EVENT_KEY_TOTAL_FRAMES, totalFrames,
|
||||
@ -442,6 +460,11 @@ void EventReport::ReportEventJankFrame(DataBase& data)
|
||||
ACE_SCOPED_TRACE("INTERACTION_APP_JANK: sceneId =%s, startTime=%lld(ms),"
|
||||
"maxFrameTime=%lld(ms)", sceneId.c_str(),
|
||||
static_cast<long long>(startTime), static_cast<long long>(maxFrameTime));
|
||||
#ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
if (isDisplayAnimator && maxFrameTime > MAX_JANK_FRAME_TIME) {
|
||||
ReportAppFrameDropToRss(true, bundleName, maxFrameTime);
|
||||
}
|
||||
#endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
}
|
||||
|
||||
void EventReport::ReportJankFrameApp(JankInfo& info)
|
||||
@ -466,6 +489,9 @@ void EventReport::ReportJankFrameApp(JankInfo& info)
|
||||
EVENT_KEY_PAGE_NAME, pageName,
|
||||
EVENT_KEY_SKIPPED_FRAME_TIME, static_cast<uint64_t>(skippedFrameTime));
|
||||
ACE_SCOPED_TRACE("JANK_FRAME_APP: skipppedFrameTime=%lld(ms)", static_cast<long long>(skippedFrameTime / NS_TO_MS));
|
||||
#ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
ReportAppFrameDropToRss(false, bundleName);
|
||||
#endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
}
|
||||
|
||||
void EventReport::ReportJankFrameFiltered(JankInfo& info)
|
||||
|
@ -103,6 +103,7 @@
|
||||
"zlib",
|
||||
"skia",
|
||||
"libuv",
|
||||
"resource_schedule_service",
|
||||
"background_task_mgr",
|
||||
"egl"
|
||||
],
|
||||
|
@ -199,6 +199,10 @@ public:
|
||||
|
||||
private:
|
||||
static void SendEventInner(const EventInfo& eventInfo);
|
||||
#ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
static void ReportAppFrameDropToRss(const bool isInteractionJank, const std::string &bundleName,
|
||||
const int64_t maxFrameTime = 0);
|
||||
#endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
|
||||
};
|
||||
|
||||
} // namespace OHOS::Ace
|
||||
|
Loading…
Reference in New Issue
Block a user