18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

3天內不再提示

為什么使用trace-event解決系統(tǒng)還不能深度睡眠問題?

Linux閱碼場 ? 來源:Linuxer ? 作者:Linuxer ? 2021-01-15 14:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近遇到一個問題,系統(tǒng)不能睡眠到c7s, 只能睡眠到c3. (c-state不能到c7s, cpu的c-state, c0是運行態(tài),其它狀態(tài)都是idle態(tài),睡眠的越深,c-state的值越大)

a01734c0-56f1-11eb-8b86-12bb97331649.png

這時候第一感覺是不是系統(tǒng)很忙導致, 使用pert top看一下耗cpu的進程和熱點函數(shù):

1perf top -E 100 --stdio 》 perf-top.txt2 19.85% perf [。] __symbols__insert 3 7.68% perf [。] rb_next 4 4.60% libc-2.26.so [。] __strcmp_sse2_unaligned 5 4.20% libelf-0.168.so [。] gelf_getsym 6 3.92% perf [。] dso__load_sym 7 3.86% libc-2.26.so [。] _int_malloc 8 3.60% libc-2.26.so [。] __libc_calloc 9 3.30% libc-2.26.so [。] vfprintf 10 2.95% perf [。] rb_insert_color 11 2.61% [kernel] [k] prepare_exit_to_usermode 12 2.51% perf [。] machine__map_x86_64_entry_trampolines 13 2.31% perf [。] symbol__new 14 2.22% [kernel] [k] do_syscall_64 15 2.11% libc-2.26.so [。] __strlen_avx2

發(fā)現(xiàn)系統(tǒng)中只有perf工具本身比較耗cpu :(

然后就想到是不是系統(tǒng)中某個進程搞的鬼,不讓cpu睡眠到c7s. 這時候使用trace event監(jiān)控一下系統(tǒng)中sched_switch事件。 使用trace-cmd工具監(jiān)控所有cpu上的sched_switch(進程切換)事件30秒:

#trace-cmd record -e sched:sched_switch -M -1 sleep 302CPU0 data recorded at offset=0x63e000 3 102400 bytes in size 4CPU1 data recorded at offset=0x657000 5 8192 bytes in size 6CPU2 data recorded at offset=0x659000 7 20480 bytes in size 8CPU3 data recorded at offset=0x65e000 9 20480 bytes in size

使用trace-cmd report 查看一下監(jiān)控結果,但是查看這樣的原始數(shù)據不夠直觀,沒有某個進程被切換到的統(tǒng)計信息:

1#trace-cmd report2cpus=4 3 trace-cmd-19794 [001] 225127.464466: sched_switch: trace-cmd:19794 [120] S ==》 swapper/1:0 [120] 4 trace-cmd-19795 [003] 225127.464601: sched_switch: trace-cmd:19795 [120] S ==》 swapper/3:0 [120] 5 sleep-19796 [002] 225127.464792: sched_switch: sleep:19796 [120] S ==》 swapper/2:0 [120] 6 《idle》-0 [003] 225127.471948: sched_switch: swapper/3:0 [120] R ==》 rcu_sched:11 [120] 7 rcu_sched-11 [003] 225127.471950: sched_switch: rcu_sched:11 [120] W ==》 swapper/3:0 [120] 8 《idle》-0 [003] 225127.479959: sched_switch: swapper/3:0 [120] R ==》 rcu_sched:11 [120] 9 rcu_sched-11 [003] 225127.479960: sched_switch: rcu_sched:11 [120] W ==》 swapper/3:0 [120] 10 《idle》-0 [003] 225127.487959: sched_switch: swapper/3:0 [120] R ==》 rcu_sched:11 [120] 11 rcu_sched-11 [003] 225127.487961: sched_switch: rcu_sched:11 [120] W ==》 swapper/3:0 [120] 12 《idle》-0 [002] 225127.491959: sched_switch: swapper/2:0 [120] R ==》 kworker/2:2:19735 [120] 13 kworker/2:2-19735 [002] 225127.491972: sched_switch: kworker/2:2:19735 [120] W ==》 swapper/2:0 [120]。..

trace-cmd report 的結果使用正則表達式過濾一下,然后排序統(tǒng)計:

1trace-cmd report | grep -o ‘==》 [^ ]+:?’ | sort | uniq -c 2 3 ==》 irqbalance:1034 3 3 ==》 khugepaged:43 4 20 ==》 ksoftirqd/0:10 5 1 ==》 ksoftirqd/1:18 6 18 ==》 ksoftirqd/3:30 7 1 ==》 kthreadd:19798 8 1 ==》 kthreadd:2 9 4 ==》 kworker/0:0:19785 10 1 ==》 kworker/0:1:19736 11 5 ==》 kworker/0:1:19798 12 5 ==》 kworker/0:1H:364 13 53 ==》 kworker/0:2:19614 14 19 ==》 kworker/1:1:7665 15 30 ==》 tuned:19498 19 。..

發(fā)現(xiàn)可疑線程tuned,30秒內被切換到運行了30次,其它線程都是常規(guī)線程。

此時查看一下系統(tǒng)中是否開啟了tuned服務:

a05369ea-56f1-11eb-8b86-12bb97331649.png

果真是系統(tǒng)開啟了tuned服務,然后拉起了名字為tuned的線程。

查看一下tuned服務的配置文件:

localhost:/home/jeff # tuned-adm active Current active profile: sap-hana localhost:/home/jeff # cat /usr/lib/tuned/sap-hana/tuned.conf [main] summary=Optimize for SAP NetWeaver, SAP HANA and HANA based products [cpu] force_latency = 70

發(fā)現(xiàn)關于cpu這一項,設置強制延遲時間為70秒 force_latency = 70 ,這個是為了優(yōu)化HANA數(shù)據庫。

到底force_latency怎樣起作用,經過一頓搜索,發(fā)現(xiàn)這個值是被設置進了/dev/cpu_dma_latency

使用lsof /dev/cpu_dma_latency, 發(fā)現(xiàn)tuned線程確實是在操作這個文件

#lsof /dev/cpu_dma_latency COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME tuned 18734 root 9w CHR 10,60 0t0 11400 /dev/cpu_dma_latency

而且Linux內核文檔也說明了/dev/cpu_dma_latency文件,如果要對它進行寫操作,要open之后寫數(shù)據之后不close,如果釋放掉了文件描述符它就又會恢復到默認值,這也印證了上面lsof /dev/cpu_dma_latency是有輸出結果的。

https://github.com/torvalds/linux/blob/v5.8/Documentation/trace/coresight/coresight-cpu-debug.rst As specified in the PM QoS documentation the requested parameter will stay in effect until the file descriptor is released. For example: # exec 3《》 /dev/cpu_dma_latency; echo 0 》&3 。.. Do some work.。. 。.. # exec 3《》-

查看一下/dev/cpu_dma_latency文件的內容,確實是70,也就是(force_latency = 70)

localhost:/home/jeff # cat /dev/cpu_dma_latency | hexdump -Cv 00000000 46 00 00 00 |F.。.| localhost:/home/jeff # echo $((0x46)) 70

此時查看一下系統(tǒng)中cpu各個睡眠態(tài)的描述和延遲時間值:

# cd /sys/devices/system/cpu/cpu0/cpuidle/ # for state in * ; do echo -e “STATE: $state DESC: $(cat $state/desc) NAME: $(cat $state/name) LATENCY: $(cat $state/latency) RESIDENCY: $(cat $state/residency)” done

發(fā)現(xiàn)C3態(tài)的延遲時間是33微秒,C4的延時時間是133微秒,所以(force_latency = 70) ,

系統(tǒng)就只能睡眠到C3了 。(延遲時間就是從此睡眠態(tài)喚醒到運行態(tài)的時間)

STATE: state0 DESC: CPUIDLE CORE POLL IDLE NAME: POLL LATENCY: 0 RESIDENCY: 0 STATE: state1 DESC: MWAIT 0x00 NAME: C1 LATENCY: 2 RESIDENCY: 2 STATE: state2 DESC: MWAIT 0x01 NAME: C1E LATENCY: 10 RESIDENCY: 20 STATE: state3 DESC: MWAIT 0x10 NAME: C3 LATENCY: 33 RESIDENCY: 100 STATE: state4 DESC: MWAIT 0x20 NAME: C6 LATENCY: 133 RESIDENCY: 400 STATE: state5 DESC: MWAIT 0x32 NAME: C7s LATENCY: 166 RESIDENCY: 500

此時關閉tuned 服務, 再查看一下 /dev/cpu_dma_latency的值,變成了默認的2000秒

localhost:/home/jeff # tuned-adm off localhost:/home/jeff # cat /dev/cpu_dma_latency | hexdump -Cv 00000000 00 94 35 77 |。.5w| localhost:/home/jeff # echo $((0x77359400)) 2000000000

然后驗證一下,此時系統(tǒng)可以睡眠到C7s了,此問題得到解決 :)

a094b06c-56f1-11eb-8b86-12bb97331649.png

解決此問題,主要用到了Linux內核本身提供的trace-event.

所以任何一個功能都不能小看,內核就是這樣,一般看上去很無聊的功能,被一些工程師用很認真的態(tài)度打磨出來之后,潛力還是非常大的:)

原文標題:使用trace-event解決系統(tǒng)不能深度睡眠的問題

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

責任編輯:haq

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

    關注

    68

    文章

    11192

    瀏覽量

    221838
  • Linux
    +關注

    關注

    88

    文章

    11581

    瀏覽量

    217144

原文標題:使用trace-event解決系統(tǒng)不能深度睡眠的問題

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何利用Trace機制實現(xiàn)LLCP預覽功能

    在藍牙協(xié)議棧開發(fā)過程中,有時需要預先知道 LLCP。本文將介紹如何利用 Trace 機制實現(xiàn) LLCP 預覽功能。
    的頭像 發(fā)表于 10-09 17:55 ?1279次閱讀

    【NCS隨筆】如何進入system_off深度睡眠模式以及配置GPIO中斷喚醒

    【NCS隨筆】如何進入system_off深度睡眠模式以及配置GPIO中斷喚醒 本文章主要是講解NCS下面使用nRF54L15如何進入system_off模式,以及如何配置通過按鍵喚醒 一、如何進
    的頭像 發(fā)表于 09-29 00:56 ?328次閱讀
    【NCS隨筆】如何進入system_off<b class='flag-5'>深度</b><b class='flag-5'>睡眠</b>模式以及配置GPIO中斷喚醒

    【直播預告】RT-Trace調試工具V1.1.0版本功能全解析 | 問學直播

    RT-Thread一直致力于為開發(fā)者提供更高效的工具和技術支持。RT-Trace調試工具自面世以來持續(xù)演進,功能不斷豐富:2025年5月:RT-Trace首次亮相,開創(chuàng)性地實現(xiàn)了基于SWO
    的頭像 發(fā)表于 09-05 11:53 ?781次閱讀
    【直播預告】RT-<b class='flag-5'>Trace</b>調試工具V1.1.0版本功能全解析 | 問學直播

    芯動力,好睡眠:WT2003HX語音芯片打造智能白噪音睡眠

    在當下快節(jié)奏的生活中,優(yōu)質睡眠逐漸成為稀缺資源。面對失眠、淺眠等困擾,越來越多的人開始借助科技手段改善睡眠質量,白噪音睡眠儀便是其中備受青睞的產品之一。作為其“核心指揮官”,廣州唯創(chuàng)電子
    的頭像 發(fā)表于 09-03 09:24 ?405次閱讀
    芯動力,好<b class='flag-5'>睡眠</b>:WT2003HX語音芯片打造智能白噪音<b class='flag-5'>睡眠</b>儀

    打造沉浸式安眠體驗:唯創(chuàng)電子WT2003H-16S語音芯片賦能智能睡眠

    在快節(jié)奏的現(xiàn)代生活中,優(yōu)質的睡眠已成為珍貴的健康資源。為滿足人們對深度放松與高效睡眠的迫切需求,智能睡眠儀應運而生。其中,廣州唯創(chuàng)電子的WT2003H-16S高品質語音芯片,憑借其卓越
    的頭像 發(fā)表于 07-07 08:28 ?352次閱讀
    打造沉浸式安眠體驗:唯創(chuàng)電子WT2003H-16S語音芯片賦能智能<b class='flag-5'>睡眠</b>儀

    RT-Trace初體驗一之使用Trace功能調試Cortex-M4 | 技術集結

    隨著嵌入式系統(tǒng)規(guī)模和復雜度不斷提升,傳統(tǒng)的調試手段已難以滿足對系統(tǒng)運行狀態(tài)的精細化分析需求。為提升開發(fā)效率、優(yōu)化系統(tǒng)性能,RT-Thread推出了一款全新調試工具——RT-Trace。
    的頭像 發(fā)表于 07-06 10:03 ?982次閱讀
    RT-<b class='flag-5'>Trace</b>初體驗一之使用<b class='flag-5'>Trace</b>功能調試Cortex-M4 | 技術集結

    請問 CYW20829 深度睡眠模式是否可以通過遠程 BLE 喚醒,還是必須從主機喚醒?

    請問 CYW20829 深度睡眠模式是否可以通過遠程 BLE 喚醒,還是必須從主機喚醒? 謝謝!
    發(fā)表于 07-01 07:55

    RT-Trace調試工具正式發(fā)布!

    嵌入式開發(fā)者打造的高性能調試工具。RT-Trace支持SWD/JTAG高速連接,搭載板載顯示屏離線交互系統(tǒng)與WebUI實時監(jiān)控平臺,助力代碼調試、性能分析、故障排查全流程
    的頭像 發(fā)表于 06-18 12:02 ?1054次閱讀
    RT-<b class='flag-5'>Trace</b>調試工具正式發(fā)布!

    Lauterbach TRACE32開發(fā)工具現(xiàn)在支持PX5 RTOS

    資源實現(xiàn)更快、更輕松的開發(fā)。TRACE32 PowerView軟件不僅提供PX5操作系統(tǒng)對象當前狀態(tài)的靜態(tài)顯示,還提供操作系統(tǒng)對象隨著時間的推移的動態(tài)行為,(例如,操作系統(tǒng)任務調度分析
    的頭像 發(fā)表于 06-12 16:38 ?705次閱讀

    重磅預售!RT-Trace調試工具

    嵌入式開發(fā)者注意!調試神器RT-Trace即將登陸淘寶!嵌入式開發(fā)從業(yè)者們:您是否常被調試效率低下、線程分析不清、故障定位困難所困擾?別愁!專為嵌入式開發(fā)者打造的高性能調試工具RT-Trace即將
    的頭像 發(fā)表于 05-20 18:15 ?885次閱讀
    重磅預售!RT-<b class='flag-5'>Trace</b>調試工具

    HarmonyOS Next V2 @Event

    的,而且子自己內部不能直接修改 按照一個組件最基本的功能, 既能接收外部傳入的數(shù)據 , 也要向外部傳遞數(shù)據 。那么 @Even t 修飾符就是來解決這個問題的了。 介紹 @Event 是 子組件向父
    的頭像 發(fā)表于 03-31 09:42 ?525次閱讀

    如何使用MCUXpresso IDE中內置的SWO Trace功能?

    如何使用MCUXpresso IDE中內置的SWO Trace功能?
    發(fā)表于 03-17 08:08

    直播預告|智算時代,如何通過 N-Trace 助力 RISC-V 性能優(yōu)化

    RISC-VN-Trace(基于Nexus的跟蹤)是針對RISC-V體系結構的調試和跟蹤技術。該技術通過定義一個跟蹤編碼器組件,并建立在廣為人知的NexusIEEE-ISTO5001標準之上
    的頭像 發(fā)表于 01-10 17:53 ?1130次閱讀
    直播預告|智算時代,如何通過 N-<b class='flag-5'>Trace</b> 助力 RISC-V 性能優(yōu)化

    linux是實時系統(tǒng)還是分時操作系統(tǒng)

    系統(tǒng)就難以滿足實時性需求,但是目前l(fā)inux社區(qū)已經增加了較多版本的實時性補丁,給linux內核打上實時補丁后其實時性會得到大幅度提升,那么我們一起來看看兩者的區(qū)別。 如下分享一下:“l(fā)inux是實時系統(tǒng)還是分時操作系統(tǒng)” 1
    的頭像 發(fā)表于 11-11 11:43 ?1437次閱讀

    一文搞懂Linux進程的睡眠和喚醒

    睡眠機制: 1)主動睡眠(Blocking Sleep): 進程自愿進入睡眠狀態(tài),通常是通過系統(tǒng)調用如sleep()、wait()等。 2)被動
    發(fā)表于 11-04 15:15