色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony標準系統開機時長優化

OpenAtom OpenHarmony ? 來源:未知 ? 2023-04-08 02:50 ? 次閱讀

點擊藍字 ╳ 關注我們


開源項目 OpenHarmony
是每個人的 OpenHarmony

戴學躍

深圳市優博終端科技有限公司

OpenHarmony知識體系工作組

簡介

萬物互聯時代,產品性能至關重要,而系統啟動時間是系統性能的重要組成部分,因為用戶必須等待系統啟動完成后才能使用設備。對于經常需要進行冷啟動的汽車等設備而言,較短的啟動時間至關重要(沒有人喜歡在等待幾十秒后才能輸入導航目的地),在金融交易設備、電子商務服務器、實時通信設備同樣也有較高的應用場景,那我們該如何在OpenAtom OpenHarmony(簡稱OpenHarmony ) 標準系統現有的能力下,完成秒級開機?本文由深圳市優博終端科技有限公司的研發同學介紹一套關于優化OpenHarmony標準系統開機時長優化的方案,通過對硬件、Kernel、 Framework的相應優化讓系統開機時長盡量縮短。

效果展示

下面給出系統開機時長優化前后的對比效果視頻,優化前的開機時長在18秒左右,優化后的開機時間在7秒左右。



開發環境

硬件平臺:RK3588
系統版本:OpenHarmony 3.1 Release
開發語言:C、 C++

四步帶你體驗OpenHarmony標準系統開機時長優化

一、調整硬件資源使用率
調整硬件資源相應配置參數使之盡可能地達到最優運行狀態,這里所指的硬件資源是指 RAM、FLASH。

RAM:運存的調優需要根據廠商的指導文檔在設備樹文件<.dtsi文件>中進行調整,比如設定運存的時鐘頻率 memory-frequency、
設定內存帶寬 memory-bandwidth、內存時序 memory-timings 等,Kernel 層可以對 swappiness、dirty_ratio、dirty_background_ratio、min_free_kbytes等相應值進行調整,來達到運存的性能調優。

FLASH:比如對 physical_block_size 項進行調整,目前 OpenHarmony 采用的文件系統為 ext4,可以在熟悉ext4文件系統后,然后對其中緩存、模式、壓縮、清理等方向進行調優。減少KMSG與HiLog 日志輸出,調整其輸出等級。

二、Kernel 啟動時長優化
Kernel 啟動階段會進行硬件檢測、驅動加載、文件系統掛載、設置網絡等,其中耗時比較長的基本上為驅動加載,因為這中間會有重復嘗試跟 Sleep 的時間,需要重點關注,在 Kernel 啟動的過程中可以將一些無用的子系統進行裁剪,比如 bootchart。

三、系統框架啟動時長優化
在系統層啟動時,需要啟動很多服務,可以采用并行啟動系統必要服務,延遲啟動非必要服務,這些服務從加載到啟動完成、其中比較耗時的有 so 加載,可采用多線程的方式對其進行加載,下面貼出多線程加載多個 so 文件的 Demo 代碼;
#include 
#include
#include
#include
#include
void thread_func(void* handle){
// 空函數
}
int main(){
std::vector<std::string> lib_names = {"mpp1.so", "mpp2.so", "mpp3.so"};
std::vector<void*> handles;
for (const auto& lib_name : lib_names) {
void* handle = dlopen(lib_name.c_str(), RTLD_LAZY);
if (handle == nullptr) {
std::cerr << "Error loading library " << lib_name << ": " << dlerror() << std::endl;
return 1;
}
handles.push_back(handle);
}
std::vector<std::thread> threads;
for (const auto& handle : handles) {
threads.emplace_back(thread_func, handle);
}
for (auto& thread : threads) {
thread.join();
}
for (const auto& handle : handles) {
dlclose(handle);
}
return 0;
}
如果發現加載的單個so文件過大時,可采用多線程分段加載此so 文件。

四、 開機動畫顯示優化
優化思路大致為進入 bootAnimation 的 main 函數后,將動畫圖片采用數組或者鏈表的方式進行預加載,開啟每秒60幀的刷新率,此處為什么要開60幀,因為如果設定為30幀時,出現掉幀的情況后,會出現肉眼可見的卡頓。當圖片播放完成后,延遲幾百毫秒左右再進入桌面,因為Launcher 加載已安裝的 app ,需要一定的時間。下面是開機動畫優化的部分內容 :
1.提高開機動畫、渲染進程優先級;
"services" : [{
"name" : "render_service",
"path" : ["/system/bin/render_service"],
"uid" : "root",
"importance" : -20,
"gid" : ["system", "shell", "uhid", "root"]
}, {
"name" : "bootanimation",
"path" : ["/system/bin/bootanimation"],
"once" : 1,
"importance" : -20,
"uid" : "root",
"gid" : ["system", "shell", "uhid", "root"]
}
]
2. 提前加載開機動畫圖片;
ReadZipFile(BOOT_PIC_ZIP, imageVector_, jsonConfig);
imgVecSize_ = static_cast<int32_t>(imageVector_.size());
if (imgVecSize_ <= 0) {
PostTask(std::bind(&AppExecFwk::Stop, runner_));
LOGE("zip pic num is 0.");
return;
}


SortZipFile(imageVector_);
3.指定開機動畫顯示幀率;
OHOS::FrameCallback fcb = {
.userData_ = this,
.callback_ = std::bind(&BootAnimation::onVsync, this),
};
int32_t changefreq = static_cast<int32_t>((1000.0 / freq_) / 16);
ret=receiver_->SetVSyncRate(fcb,changefreq);
開機優化需要借助一些工具來分析比如串口工具、bootchart 生成的可視化圖表來進行分析。
OpenHarmony 標準系統默認集成了bootchart,下面介紹如何使用bootchart 工具來獲取開機性能數據及生成性能圖片:
(1)開機完成后,運行 hdc_std shell
(2)運行 begetctl bootchart enable
(3)運行 reboot 或者斷電重啟
(4)運行 begetctl bootchart stop
(5)運行 begetctl bootchart disable
(6)進入到/data/bootchart/文件夾下查看是否有
(7)header、proc_diskstats.log、proc_ps.log、proc_stat.log
(8)在/data/bootchart/目錄下執行命令:tar -czf bootchart.tgz *
(9)將bootchart.tgz 導出到本地磁盤上
(10)hdc_std file recv /data/bootchart/bootchart.tgz ./
(11)生成開機性能圖片 java -jar bootchart.jar bootchart.tgz
上面的bootchart.jar 需要下載源碼去編譯生成或者下載他人已經編譯好的jar包。源碼下載地址 https://sourceforge.net/projects/bootchart/ 。

下圖為 bootchart 生成的 OpenHarmony性能可視化視圖


總結

通過本篇文章介紹,您對OpenHarmony標準系統下性能優化的功能應該有了初步的了解。如果您對本篇文章內容感興趣,可以根據本篇文章介紹進行研究和使用。同時也歡迎更多開發者與我們共享開發成果,分享技術解讀與經驗心得。


原文標題:OpenHarmony標準系統開機時長優化

文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2362

    瀏覽量

    42884
  • OpenHarmony
    +關注

    關注

    25

    文章

    3725

    瀏覽量

    16369

原文標題:OpenHarmony標準系統開機時長優化

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AM574x延長開機時間(POH)

    電子發燒友網站提供《AM574x延長開機時間(POH).pdf》資料免費下載
    發表于 10-10 09:22 ?0次下載
    AM574x延長<b class='flag-5'>開機時</b>間(POH)

    基于ArkTS語言的OpenHarmony APP應用開發:HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標準系統編寫的UI應用類:HelloOpenHarmony。本案例是基于API9接口開發。本案例已在OpenHarmony凌蒙派-RK35
    的頭像 發表于 09-15 08:09 ?408次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應用開發:Hello<b class='flag-5'>Openharmony</b>

    AM62x延長開機時間應用說明

    電子發燒友網站提供《AM62x延長開機時間應用說明.pdf》資料免費下載
    發表于 09-13 10:01 ?0次下載
    AM62x延長<b class='flag-5'>開機時</b>間應用說明

    瑞芯微RK3566鴻蒙開發板OpenHarmony標準系統應用兼容性測試指導

    本文OpenHarmony標準系統應用兼容性測試指導,適用鴻蒙系統軟件開發測試的新手入門學習課程,設備為觸覺智能的瑞芯微RK3566開發板,型號Purple Pi OH。是Laval官方社區主薦的一款鴻蒙開發主板。
    的頭像 發表于 09-10 11:56 ?400次閱讀
    瑞芯微RK3566鴻蒙開發板<b class='flag-5'>OpenHarmony</b><b class='flag-5'>標準系統</b>應用兼容性測試指導

    基于OpenHarmony標準系統的C++公共基礎類庫案例:SafeMap

    1、程序簡介該程序是基于OpenHarmony的C++公共基礎類庫的安全關聯容器:SafeMap。OpenHarmony提供了一個線程安全的map實現。SafeMap在STLmap基礎上封裝互斥鎖
    的頭像 發表于 08-30 12:42 ?377次閱讀
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>標準系統</b>的C++公共基礎類庫案例:SafeMap

    基于OpenHarmony標準系統的C++公共基礎類庫案例:SafeQueue

    1、程序簡介該程序是基于OpenHarmony的C++公共基礎類庫的線程安全隊列:SafeQueue。線程安全隊列,是在dequeue的基礎上封裝std::lock_guard,以此實現線程的相關
    的頭像 發表于 08-30 12:41 ?321次閱讀
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>標準系統</b>的C++公共基礎類庫案例:SafeQueue

    基于OpenHarmony標準系統的C++公共基礎類庫案例:SafeStack

    1、程序簡介該程序是基于OpenHarmony的C++公共基礎類庫的線程安全隊列:SafeQueue。線程安全隊列,是在dequeue的基礎上封裝std::lock_guard,以此實現線程的相關
    的頭像 發表于 08-30 12:41 ?342次閱讀
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>標準系統</b>的C++公共基礎類庫案例:SafeStack

    基于OpenHarmony標準系統的C++公共基礎類庫案例:SafeBlockQueue

    1、程序簡介該程序是基于OpenHarmony的C++公共基礎類庫的讀寫鎖:SafeBlockQueue。線程安全阻塞隊列SafeBlockQueue類,提供阻塞和非阻塞版的入隊入隊和出隊接口,并提
    的頭像 發表于 08-30 12:41 ?321次閱讀
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>標準系統</b>的C++公共基礎類庫案例:SafeBlockQueue

    基于OpenHarmony標準系統的C++公共基礎類庫案例:SafeStack

    /a28_utils_safestack 2、基礎知識 C++公共基礎類庫為標準系統提供了一些常用的C++開發工具類,包括: 文件、路徑、字符串相關操作的能力增強接口 讀寫鎖、信號量、定時器、線程增強及線程池等接口
    發表于 08-21 14:51

    基于OpenHarmony標準系統的C++公共基礎類庫案例:SafeQueue

    /a27_utils_safequeue 2、基礎知識 C++公共基礎類庫為標準系統提供了一些常用的C++開發工具類,包括: 文件、路徑、字符串相關操作的能力增強接口 讀寫鎖、信號量、定時器、線程增強及線程池等
    發表于 08-21 10:56

    請求推薦無需NPU的OpenHarmony標準系統ARM開發板

    請教一下大佬們,目前的需求是在國產ARM開發板上跑OpenHarmony標準系統,無需NPU/GPU,其它配置(CPU、RAM等)可以盡量高點,價位在2k以內,球球推薦!感謝大佬們!
    發表于 08-16 16:25

    OpenHarmony標準系統C++公共基礎類庫案例:HelloWorld

    1、程序簡介該程序是基于凌蒙派OpenHarmony-v3.2.1標準系統C++公共基礎類庫的簡單案例:HelloWorld。主要講解C++公共基礎類庫案例如何搭建和編譯。2、程序解析2.1、創建
    的頭像 發表于 08-13 08:23 ?536次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>標準系統</b>C++公共基礎類庫案例:HelloWorld

    基于OpenHarmony標準系統的C++公共基礎類庫案例:ThreadPoll

    1、程序簡介 該程序是基于OpenHarmony標準系統的C++公共基礎類庫的線程池處理:ThreadPoll。 本案例完成如下工作: 創建1個線程池,設置該線程池內部有1024個線程空間。 啟動5
    發表于 08-12 11:42

    OpenHarmony開機優化

    對其進行詳細的性能分析,從而優化系統啟動速度和運行效率。 三丶開機優化 開機優化的主要目的是為了
    發表于 07-01 16:39

    鴻蒙OpenHarmony南向:【Hi3516標準系統入門(命令行方式)】

    除小型系統外,Hi3516DV300開發板還支持標準系統。此章節簡要介紹如何使用命令行在Hi3516DV300開發板上進行標準系統的開發。
    的頭像 發表于 05-08 09:26 ?896次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>南向:【Hi3516<b class='flag-5'>標準系統</b>入門(命令行方式)】
    主站蜘蛛池模板: 99久久国产综合精品网成人影院| 护士们的母狗| 第一次破女视频出血视频| 国产精品A久久777777| 精品午夜久久影视| 欧美夜夜噜2017最新| 午夜精品久久久久久99热蜜桃| 诱受H嗯啊巨肉各种play| 被窝伦理午夜电影网| 国产在线午夜| 欧美一区二区VA毛片视频| 亚色九九九全国免费视频| 2022国产精品不卡a| 国产成人综合在线观看| 快播电影频道| 玩高中女同桌肉色短丝袜脚文| 在线 自拍 综合 亚洲 欧美| 插我一区二区在线观看| 精品人妻伦一二三区久久AAA片| 秋霞电影网午夜鲁丝片| 亚洲中文字幕在线第六区| 超碰v| 久久亚洲精品无码A片大香大香| 色欲AV精品一区二区入口| 131美女爱做视频午夜剧场| 亚洲qingse中文字幕久久| 99国产精品免费视频| 国产在线精彩视频| 啪啪激情婷婷久久婷婷色五月| 亚洲一区成人| 国产精品成人免费视频99| 免费精品国产人妻国语麻豆| 亚洲国产日韩欧美视频二区| 波多野结衣教师系列6| 久久视频这有精品63在线国产| 无码欧美XXXXX在线观看裸| 97在线观看成人免费视频| 精品国产成a人在线观看| 双腿被绑成M型调教PLAY照片| 99re久久精品在线播放| 九九热在线观看|