99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

3天內不再提示

linux下那些經典性能排查工具

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2022-07-22 10:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

借助或者研發(fā)好的分析工具對系統(tǒng)工程師的工作效率提升很重要

系統(tǒng)分析優(yōu)化工程師的工作職責跟app工程師有很大的不同,系統(tǒng)工程師需要具備cover住整個系統(tǒng)的能力。

現在的嵌入式系統(tǒng)比如android的代碼量有幾千萬行,而且系統(tǒng)架構搞得相當龐大復雜。搞系統(tǒng)性能優(yōu)化的,嵌入式產品比如手機上隨意出現個性能問題,可能都需要從fwk層(java代碼)一直搞到內核底層,然后到存儲芯片層也需要熟悉(如果是搞存儲性能優(yōu)化的話)。

所以系統(tǒng)工程師,尤其是搞性能問題解決優(yōu)化的,需要調研關注的代碼量相當龐大,不止linux內核。

所以搞系統(tǒng)性能工作的,往往需要借助或者研發(fā)一些高效的工具來提升工作效率。好的工具對于性能工程師的工作質量提升是非常重要的。

嵌入式平臺性能工作特點

嵌入式行業(yè)更關注系統(tǒng)性能工作

嵌入式行業(yè)和互聯網行業(yè)在性能問題解決優(yōu)化方面還是有著很大的不同,嵌入式行業(yè)比如手機產品,可以說是比互聯網公司更關注性能問題的解決優(yōu)化。

因為互聯網公司出性能問題了,可以搞內存或者存儲設備擴容,性能不好,再多加塊內存條就解決了。

手機產品出廠后,內存和存儲容量有限已經定死了,但是隨著移動互聯網時代的到來,各種app在不斷消耗爭用著手機的cpu/io/內存資源,所以會產生很多性能問題,會比互聯網公司更影響用戶體驗。

手機系統(tǒng)性能方面工作的關注點

嵌入式行業(yè)和互聯網行業(yè)在性能問題的關注點上也有不同。

1) 嵌入式行業(yè)關注點:

嵌入式行業(yè),比如手機很關注特定進程/線程(比如前臺app)的工作時延。性能問題的解決和優(yōu)化,往往圍繞著如何減少特定進程/線程的工作時延,使其運行更快一些。這樣前臺app運行快了,用戶操作手機時才不會感到有卡頓。

手機產品里面有相當多的一部分性能工作是做這樣事情:

跑特定的性能測試程序(比如手機zip解壓縮或者io跑分),需要調查為啥測試機:高通某機型比對比機: mtk某機型慢了2秒,慢2秒是系統(tǒng)的哪部分原因導致的。

如果是軟件原因,需要精確到具體是測試機和對比機的android系統(tǒng)(幾千萬行代碼)的哪部分代碼差異導致的性能慢2秒。

如果是硬件原因,需要知道高通和mtk機型的哪部分硬件差異導致的性能慢2秒。

2)互聯網行業(yè)關注點:

互聯網行業(yè),由于系統(tǒng)工程師的角色是優(yōu)化后臺服務器集群,所以搞性能工作,首要關注點是查找整個系統(tǒng)的性能瓶頸在哪里,提高整個系統(tǒng)運行任務的吞吐量。優(yōu)化局部特定重要進程工作時延方面,沒有嵌入式行業(yè)那么重要迫切。

嵌入式平臺性能工具運用特點

由于上面講了手機和互聯網公司在性能工作方面的不同,手機性能優(yōu)化更關注前臺app的工作時延,所以嵌入式平臺上性能工具運用也和互聯網公司有不同。

會linux下那些經典性能排查工具僅僅是最基本的要求

一談到操作系統(tǒng)比如linux上的性能問題分析,大家首先會想到要靈活運用各種shell命令和開源性能分析工具(比如free, top, df, vmstat, iostat, strace等)。

典型的就是那個美國性能大師brendangregg的那篇經典博文《十分鐘幫你排查出性能問題在哪里》中介紹的性能工具分析問題思路。

但這些都是互聯網服務器行業(yè)的性能分析套路。手機產品上會運用上面提的這些linux性能分析工具只是最基本的要求,僅僅會這些工具還不能滿足嵌入式產品的高性能質量需求。

比如上文提的慢2秒,如果要調查其中原因,會上面提的基本性能排查工具還是查不出慢2秒的原因的。

嵌入式平臺(比如手機)性能工具運用思路介紹

1 對于復現概率比較大或者必現的性能問題的調查思路

比如針對前臺app卡頓或者操作性能慢這樣問題的分析:

1》 首先會用到systrace排查性能問題出現的大致范圍地方

systrace就是嵌入式系統(tǒng)性能分析中的倚天劍。

最常用的而且首要分析工具會是systrace,用它來做系統(tǒng)整體分析,也是對性能問題的初步分析。

看看比如上面提的慢2秒這種性能問題大致出現在什么地方,是出在測試機的on cputime還是off cputime耗時。

如果是oncputime耗時,需要關注是cpu頻率不夠,還是有后臺進程干擾,或者是cpu調度問題(都跑大核或者小核)造成的。

或者還需要關注測試程序本身,測試程序自身在很多關鍵地方代碼都加的有systrace tag,這樣比較容易看到是哪部分代碼導致的耗時。

如果是offcputime耗時,那么需要看看是runable狀態(tài)耗時,還是D狀態(tài)耗時。

runable耗時可能是cpu上排隊進程太多導致,或者kswapd過于活躍(內存原因)。

D狀態(tài)耗時可以通過進入D狀態(tài)前的代碼位置,來判斷出是鎖同步,或者內存/io原因導致的。

這個也可以通過測試程序本身加的關鍵地方systrace tag,來看出offcputime耗時出現在程序的哪個代碼階段。

總之,上面說的這些導致出性能問題的因素都可以通過systrace看出來,通過systrace可以首先看出性能問題的大致出現范圍。

2》 其次會用到simpleperf排查性能問題出現原因對應的詳細代碼

simpleperf則是性能分析中的屠龍刀。

光systrace工具還不夠的,systrace只能看到橫向性能分析結果。

比如通過對比測試機和對比機的systrace,看到了慢2秒的性能問題是由于測試機頻繁調用了內核里面misc_open函數,而導致耗時的。

這時需要查出為啥測試機會頻繁調用misc_open,這就要分析測試程序自身的業(yè)務邏輯代碼了。

如果分析測試程序涉及代碼量很龐大的話,手動分析耗時,往往就要借助simpleperf(嵌入式平臺上的perf工具)進行縱向性能分析了。

用simpleperf對測試程序的oncputime/offcputime進行采樣,并且附帶采樣點的?;厮菪畔?,最后以火焰圖形式輸出,這樣很容易看到是哪部分上層業(yè)務代碼導致的底層內核的misc_open被頻繁帶用。

3》 對于存儲性能問題還會用到ftrace log分析

如果該性能問題大概率是跟手機存儲io性能相關的,那么上面兩個排查方法還不一定能看出問題真正原因所在。

因為即使是simpleperf,也只能看出測試程序涉及的各個地方代碼的整體耗時分布,類似火焰圖效果。但是某些熱點函數為什么這么耗時,還需要進一步觀測它的參數變化。

如果是內核io方面的熱點函數耗時,這個時候就需要開啟內核文件系統(tǒng)層,塊設備層相關的trace event跟蹤事件,同時需要對內核存儲io棧代碼比較熟悉才行。

這樣會進一步詳細看出類似上面的測試機慢2秒這種性能問題原因。

這方面解過的問題有:

1) 某測試機Q版本比P版本zip解壓縮耗時慢3秒,最后發(fā)現是Q版本的文件預讀窗口過小(和p版本相比)導致。

2) 某測試機連接u盤,首次播放u盤高清視頻卡住必現問題,最后查到是塊設備層usbotg設備設置的參數不對,導致bio合并失敗引起的性能問題。

4》 bcc工具也有很大的用武之地

在實際應用上面提的工具解決性能問題時,會發(fā)現還存在一些缺陷和改進:

(1) 存儲IO跑分差這類性能問題,用上面提的這些工具都不合適,還是用bcc工具最合適

因為內核io棧分文件系統(tǒng)層,塊設備層和存儲芯片層。每個層面代碼差異都會影響io跑分。

而實際測試場景下,經常會有測試機和對比機的要么文件系統(tǒng)層不一樣,要么塊設備層代碼或者存儲芯片有差異,就是這些差異導致的測試機io跑分性能不如對比機。

所以針對這類性能問題,最好用bcc工具,在具體跑分時,能夠對上面內核io棧的每個層面的處理耗時數據進行歸納統(tǒng)計,能夠計算出每個層面的總耗時,平均耗時還有最大最小耗時等。

這樣便能看出來是文件系統(tǒng)層耗時引起的跑分性能差,還是塊設備層,或者存儲芯片層引起的。

systrace和ftrace log都做不到,perf工具只能在用戶態(tài)對數據做歸納處理,內核態(tài)只是采樣或者trace event事件觸發(fā)收集性能信息直接匯報給用戶態(tài)。

io跑分需要在內核態(tài)直接對性能數據做第一手的歸納處理,這個就是bcc工具最大用武之地了。

怎么用bcc工具處理io跑分類性能問題的,可以看看我的那個存儲性能工具介紹文章。

(2) 對內核熱點函數進行長時間的性能監(jiān)控時,perf工具會產生比較大的數據量和性能負荷,并且會有丟事件發(fā)生

這個是perf工具的自身缺陷問題,內核態(tài)不能做太多的數據過濾和歸納處理,只能采樣返回到用戶態(tài)做數據聚合處理。

自己在調查相機gpu內存泄漏問題時,用simpleperf監(jiān)控過內核gpu內存分配釋放事件活動,內核gpu分配/釋放事件是很頻繁的,每秒幾千次都有。

如果用perf監(jiān)控時間長,產生的perf.data監(jiān)控log體積會特別大,達到1G多。并且還會有丟事件發(fā)生。

這個時候就需要有一種工具,能夠在內核態(tài)對性能數據做些業(yè)務邏輯方面的過濾,或者直接內核態(tài)對數據做歸納處理,最后返回到用戶態(tài)的只是處理過的精簡版的結論數據。

這樣便會大大減輕性能監(jiān)控任務自身產生的負荷,降低對手機使用的影響。

這個工具目前最好的就是ebpf/bcc工具了。

(3)bcc工具還有更大的好處

之前我推廣我的存儲io跑分工具時,有人曾提疑問,bcc工具操作比較麻煩,還得新增內核配置項,還得望手機data分區(qū)push一整套200多M的bcc工具集。

為啥這么費勁,為啥不直接在內核io棧上加些trace event,不也能看出性能問題出現原因嗎。

我后來想了想,答復是:

其實也可以不用bcc工具啊,如果直接加trace event,還是不行的,那么產生的數據量大,而且都是raw數據,沒有歸納處理。

最好用內核模塊+kprobe接口/新增trace event事件,這樣自己在內核模塊里面手動加代碼,計算或者過濾監(jiān)控數據的處理耗時,在io跑分前,加載該模塊開啟監(jiān)控工作。

但是這樣有點問題,針對io跑分做個性能監(jiān)控工具,然后有其他方面性能監(jiān)控需求時,可能需要再搞個另外的監(jiān)控程序。這樣時間長了,性能監(jiān)控程序搞的種類多了,還得解決代碼復用性問題,版本兼容工作。

這樣下來性能監(jiān)控工作就會開發(fā)效率低了。

bcc工具最大好處是:

提供了一整套的性能監(jiān)控框架,可以使得很方便地快速定制和開發(fā)自己的性能監(jiān)控工具,尤其是自己面臨很多方面的性能監(jiān)控工作需求時。

上面提的那些數據歸納處理過濾,其實bcc工具里面有現成的成熟接口可以調用。

有了bcc工具那個成熟的性能監(jiān)控框架,開發(fā)者可以專注于自己的性能監(jiān)控業(yè)務邏輯開發(fā),不需要理會什么內核代碼編寫一些坑坑洼洼的工作。

5》 其他的分析方法

除了用上面性能分析工具外,還可以通過用戶反饋的log,來看性能問題出現原因的。這些都放到偶現性能問題解決里面來說了。

2 偶現性能問題的調查思路

1》利用Linux內核的task delay數據統(tǒng)計可以看出用戶手機端的性能問題是由于cpu,內存還是io三大因素中哪個導致。

這個開啟后對用戶的嵌入式產品產生的性能負荷很小的,不影響其運行的,但只能看出大致性能原因在哪里。

2》在容易出性能問題的層面加些性能打點log,進一步輔助排查性能問題出在哪里。前提是不影響嵌入式產品正常運行。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 嵌入式系統(tǒng)

    關注

    41

    文章

    3683

    瀏覽量

    131434
  • Linux
    +關注

    關注

    87

    文章

    11512

    瀏覽量

    213899
  • 服務器
    +關注

    關注

    13

    文章

    9797

    瀏覽量

    88029

原文標題:手機性能優(yōu)化工具的使用思路比較

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    電子工程師的“偵探術”:高溫熱態(tài)電阻率測試儀常見電路故障排查邏輯與工具

    偵探”,依嚴謹邏輯與工具排查修復。 常見電路故障類型 電源故障 輸入電壓異常 :外部電源波動或適配器性能下降,致輸入電壓偏離正常范圍,儀器無法正常工作。 電源模塊損壞 :內部元件因過熱等損壞,導致部分或整體無供電或輸
    的頭像 發(fā)表于 06-30 09:27 ?123次閱讀
    電子工程師的“偵探術”:高溫熱態(tài)電阻率測試儀常見電路故障<b class='flag-5'>排查</b>邏輯與<b class='flag-5'>工具</b>

    Linux系統(tǒng)性能指南

    Linux服務器運行了很多應用,在高負載,服務器可能會出現性能瓶頸,例如CPU利用率過高、內存不足、磁盤I/O瓶頸等,從而導致系統(tǒng)卡頓,服務無法正常運行等問題。所以針對以上問題,可以通過調整內核參數和系統(tǒng)的相關組件,優(yōu)化應用程
    的頭像 發(fā)表于 06-23 14:12 ?786次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>性能</b>指南

    云原生環(huán)境里Nginx的故障排查思路

    本文聚焦于云原生環(huán)境Nginx的故障排查思路。隨著云原生技術的廣泛應用,Nginx作為常用的高性能Web服務器和反向代理服務器,在容器化和編排的環(huán)境中面臨著新的故障場景和挑戰(zhàn)。
    的頭像 發(fā)表于 06-17 13:53 ?242次閱讀
    云原生環(huán)境里Nginx的故障<b class='flag-5'>排查</b>思路

    手持工業(yè)平板電腦使用中遇到故障怎么辦?聚徽解碼排查與維修方案

    在工業(yè)生產與日常作業(yè)中,手持工業(yè)平板電腦憑借其便攜性與強大功能,成為不可或缺的工具。然而,長時間使用或復雜環(huán)境因素影響,設備難免出現故障。掌握系統(tǒng)的故障排查與維修方案,能夠有效減少停機時間,保障
    的頭像 發(fā)表于 06-04 15:52 ?380次閱讀

    研發(fā)排查問題的利器:一款方法調用棧跟蹤工具

    作者:京東物流 郭忠強 導語 本文從日常值班問題排查痛點出發(fā),分析方法復用的調用鏈路和上下文業(yè)務邏輯,通過思考分析,借助棧幀開發(fā)了一個方法調用棧的鏈式跟蹤工具,便于展示一次請求的方法串行調用鏈
    的頭像 發(fā)表于 05-06 17:24 ?2714次閱讀
    研發(fā)<b class='flag-5'>排查</b>問題的利器:一款方法調用棧跟蹤<b class='flag-5'>工具</b>

    Linux主要的性能有哪些?

    都有確定的用途。它支持32位和64位硬件,能運行主要的unix工具軟件、應用程序和網絡協(xié)議。linux繼承了unix以網絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網絡操作系統(tǒng)。 Linux
    的頭像 發(fā)表于 04-30 18:09 ?246次閱讀
    <b class='flag-5'>Linux</b>主要的<b class='flag-5'>性能</b>有哪些?

    配電柜—斷電危機?配電柜故障排查優(yōu)先級指南

    排查配電柜故障過程中,合理安排排查優(yōu)先級至關重要。下面聊一如何科學合理安排配電柜故障排查優(yōu)先級順序。
    的頭像 發(fā)表于 03-06 18:55 ?425次閱讀
    配電柜—斷電危機?配電柜故障<b class='flag-5'>排查</b>優(yōu)先級指南

    機房精密空調故障?排查步驟看這!

    機房精密空調作為維持機房環(huán)境穩(wěn)定的關鍵設備,其故障排查工作至關重要。下面聊一下排查機房精密空調故障的詳細步驟。
    的頭像 發(fā)表于 02-17 15:48 ?568次閱讀
    機房精密空調故障?<b class='flag-5'>排查</b>步驟看這!

    泰克示波器模擬電路故障排查

    在現代電子設備的設計和維修過程中,模擬電路的故障排查一直是工程師們面臨的重大挑戰(zhàn)之一。電路中微小的故障可能導致設備功能失常、信號失真甚至完全失效,因此準確、高效地定位故障點是解決問題的關鍵。此時,一款高性能的示波器,尤其是泰克示波器,便成為了工程師們不可或缺的
    的頭像 發(fā)表于 02-15 10:30 ?397次閱讀
    泰克示波器模擬電路故障<b class='flag-5'>排查</b>

    RZ T2H PCIe裸機程序開發(fā)和Linux的配置介紹

    瑞薩電子最新推出RZ/T2H工業(yè)專用MPU,單芯片提供強大應用處理性能,多協(xié)議工業(yè)網絡及高達9軸高精度實時控制,支持Linux,RTOS及baremetal操作。除了強大CPU性能和9軸控制外設外
    的頭像 發(fā)表于 12-18 11:14 ?1741次閱讀
    RZ T2H PCIe裸機程序開發(fā)和<b class='flag-5'>Linux</b><b class='flag-5'>下</b>的配置介紹

    如何設計ADC和DAC的基準源,以及基準源如何影響ADC與DAC那些性能

    如何設計ADC和DAC的基準源,以及基準源如何影響ADC與DAC那些性能?有沒有相關的資料參考?
    發(fā)表于 12-17 06:27

    Kali Linux常用工具介紹

    Kali Linux 虛擬機中自帶了大量滲透測試工具,涵蓋了信息收集、漏洞利用、口令破解、漏洞掃描等多個方面。 以下是按分類簡要介紹一部分常用工具的使用方法: 使用方法只能當做參考,**詳細
    的頭像 發(fā)表于 11-11 09:29 ?1625次閱讀

    如何優(yōu)化Linux服務器的性能

    優(yōu)化Linux服務器的性能是一個綜合性的任務,涉及硬件、軟件、配置、監(jiān)控等多個方面。以下是一個詳細的指南,旨在幫助系統(tǒng)管理員和運維人員提升Linux服務器的性能和穩(wěn)定性。
    的頭像 發(fā)表于 09-29 16:50 ?682次閱讀

    Linux服務器性能查看方法

    Linux服務器性能查看是系統(tǒng)管理員和開發(fā)人員在日常工作中經常需要進行的任務,以確保系統(tǒng)穩(wěn)定運行并優(yōu)化資源使用。以下將詳細介紹多種Linux服務器性能查看的方法,這些方法涵蓋了CPU、
    的頭像 發(fā)表于 09-02 11:15 ?1805次閱讀

    光纖故障怎么排查

    光纖故障的排查是一個細致且系統(tǒng)的過程,涉及多個方面的檢查和測試。以下是一系列光纖故障排查的步驟和方法: 一、初步檢查 確認物理連接:首先檢查光纖網絡的物理連接是否正常,包括光纖端口是否正確連接到設備
    的頭像 發(fā)表于 08-20 10:25 ?2771次閱讀