一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

線上機(jī)器CPU占用高分析實(shí)踐

京東云 ? 來(lái)源:京東零售 王江波 ? 作者:京東零售 王江波 ? 2025-02-18 14:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:京東零售 王江波

1. 線程運(yùn)行狀態(tài)

1.1 total

wKgZO2e0K4iAUWSmAAPq2vdj1K0085.png

??

1.2 timed_waiting

wKgZPGe0K4mAXzE4AAMUL7ckbRY633.png

??

wKgZO2e0K4qAKhnsAAEfBtxpT6g700.png

??

通過(guò)上圖我們可以發(fā)現(xiàn)timed_waiting的topN線程都是查詢國(guó)補(bǔ)資質(zhì)的。

1.3 waiting

wKgZPGe0K4uAEqx2AAIxDoYW2JQ568.png

??

wKgZO2e0K4uAEslDAALKeLlm70w870.png

??

通過(guò)上圖我們可以發(fā)現(xiàn)waiting的topN線程都是查詢國(guó)補(bǔ)活動(dòng)的。

1.4 線程分析

下面我們分析上述兩種狀態(tài):

1. WAITING 狀態(tài)

?定義:當(dāng)一個(gè)線程處于 WAITING 狀態(tài)時(shí),它在等待另一個(gè)線程的特定操作(如通知或中斷),并且不會(huì)繼續(xù)執(zhí)行。

?觸發(fā)條件:線程進(jìn)入 WAITING 狀態(tài)的常見(jiàn)情況包括:

調(diào)用 Object.wait() 方法:線程在等待某個(gè)對(duì)象的監(jiān)視器(鎖)被其他線程通知。

調(diào)用 Thread.join() 方法:等待另一個(gè)線程完成。

調(diào)用 LockSupport.park() 方法:線程被阻塞,直到它被其他線程喚醒。

?恢復(fù):線程在 WAITING 狀態(tài)下將一直保持此狀態(tài),直到其他線程調(diào)用 notify() 或 notifyAll()(對(duì)于 Object.wait()),或者被中斷。

2. TIMED_WAITING 狀態(tài)

?定義:當(dāng)一個(gè)線程處于 TIMED_WAITING 狀態(tài)時(shí),它在等待某個(gè)條件的發(fā)生,但它會(huì)在指定的時(shí)間后自動(dòng)返回。

?觸發(fā)條件:線程進(jìn)入 TIMED_WAITING 狀態(tài)的常見(jiàn)情況包括:

調(diào)用 Thread.sleep(milliseconds):線程休眠指定的毫秒數(shù)。

調(diào)用 Object.wait(milliseconds):線程在等待某個(gè)對(duì)象的監(jiān)視器(鎖),并且在指定的時(shí)間內(nèi)等待。

調(diào)用 Thread.join(milliseconds):等待另一個(gè)線程完成,但有時(shí)間限制。

調(diào)用 LockSupport.parkNanos() 或 LockSupport.parkUntil()。

?恢復(fù):線程在 TIMED_WAITING 狀態(tài)下會(huì)在指定的時(shí)間結(jié)束后自動(dòng)恢復(fù),或者在其他線程調(diào)用 notify() 或 notifyAll() 時(shí)恢復(fù)。

| 狀態(tài)           | 描述                                     | 觸發(fā)條件                                    | 恢復(fù)方式                                   |
|----------------|------------------------------------------|---------------------------------------------|--------------------------------------------|
| **WAITING**    | 線程等待另一個(gè)線程的特定操作,不會(huì)繼續(xù)執(zhí)行 | `Object.wait()`, `Thread.join()`, `LockSupport.park()` | 其他線程調(diào)用 `notify()`/`notifyAll()` 或被中斷 |
| **TIMED_WAITING** | 線程等待某個(gè)條件的發(fā)生,但有時(shí)間限制   | `Thread.sleep(milliseconds)`, `Object.wait(milliseconds)`, `Thread.join(milliseconds)` | 超過(guò)指定時(shí)間后自動(dòng)恢復(fù),或其他線程調(diào)用 `notify()`/`notifyAll()` |

下面我們結(jié)合實(shí)際代碼情況分析:

wKgZPGe0K42ALX4tAAPnywM_5ZI317.png

??

上文中 queryActTp 為 getActivityInfo 執(zhí)行并發(fā)任務(wù),其中包含兩個(gè)子任務(wù)、 queryQualityTp 為 getQualityInfo 執(zhí)行并發(fā)任務(wù),其中五個(gè)子任務(wù)。同時(shí)將這倆任務(wù)放到queryActAndQualityTp中并行。

getActivityInfo所在的秒級(jí)監(jiān)控如下:

wKgZO2e0K46AE1-PAAIoNZXJJLE768.png

??

getQualityInfo所在的秒級(jí)監(jiān)控如下;

wKgZPGe0K4-AT78sAALfDAaj9hY787.png

??

上文中同樣的調(diào)用方式,但是出現(xiàn)了兩種線程狀態(tài),理論上應(yīng)該都是TIMED_WAITING。針對(duì)queryActTp我們可以發(fā)現(xiàn)堆棧信息中也是LockSupport.park而不是LockSupport.parkNanos。具體原因有待進(jìn)一步分析。

上述代碼中還有一個(gè)問(wèn)題就是A線程池中又并行調(diào)用了B、C線程池,在大流量情況下,CPU頻繁切換也會(huì)造成一定的CPU壓力,我們改寫這塊邏輯用一個(gè)線程池實(shí)現(xiàn)活動(dòng)和資質(zhì)的并發(fā)查詢。鑒于改動(dòng)較大,本次先不動(dòng)。

2. 火焰圖分析

wKgZO2e0K5CADIzrAAFlIjl_MMk997.png

??

2.1 wait線程

wKgZPGe0K5KAbzQ4AAS-vXOvmLQ104.png

??

2.2 鎖性能

wKgZO2e0K5OAbT9fAABVTv8WRRg556.png

??

2.3 CPU采樣

wKgZPGe0K5SAEN51AAVJrQt6tI8976.png

??

2.3.1 getFatherActivity分析

wKgZO2e0K5WAJnlpAASFE89Jb-A955.png

??

Q1:調(diào)用場(chǎng)景:循環(huán)中調(diào)用getFatherActivity

Q2:查看配置數(shù)據(jù),json格式化后50000字符,大對(duì)象的反序列化

Q3:使用new ArrayList() 創(chuàng)建新對(duì)象

Q4:分組后只用了對(duì)象中的第一個(gè)元素,這里用toMap更佳

優(yōu)化1:

wKgZPGe0K5aAKN8XAAJwzhk-DqE043.png

??

我們可以發(fā)現(xiàn)上文在循環(huán)中還是會(huì)存在多次的stream調(diào)用,繼而將toMap邏輯提到循環(huán)外,如下:

wKgZO2e0K5iAJn0PAASLwbZPUT8987.png

??

其他方法確實(shí)占用CPU較高,這里先不處理。

下文再優(yōu)化一項(xiàng)獲取并發(fā)線程執(zhí)行結(jié)果的工具類:

wKgZPGe0K5qAe7g2AAkqVb6pW3o510.png

??

1、 allOf異常后,取消所有線程的繼續(xù)執(zhí)行。這么做為了防止有些線程超時(shí)后仍在執(zhí)行,浪費(fèi)部分CPU資源,線上發(fā)現(xiàn)確實(shí)存在較多的超時(shí)情況。
2、 這里的異常日志較多,根據(jù)異常類型進(jìn)行區(qū)分,去掉沒(méi)用的堆棧日志。

并發(fā)線程中所有的等待統(tǒng)一都使用了上文的方法,前文中的queryActTp處于WAITING狀態(tài)可能也是執(zhí)行沒(méi)取消導(dǎo)致,修改部署后再觀察分析。同樣的調(diào)用方式 queryQualityTp 處于Timed_waiting狀態(tài)可能與一次父任務(wù)中子任務(wù)的執(zhí)行耗時(shí)有關(guān),見(jiàn)上文監(jiān)控,活動(dòng)和資質(zhì)相差較大,具體原因有待進(jìn)一步分析。

審核編輯 黃宇

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

    關(guān)注

    68

    文章

    11080

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    單核CPU網(wǎng)關(guān)和雙核CPU網(wǎng)關(guān)有什么區(qū)別

    單核CPU網(wǎng)關(guān)與雙核CPU網(wǎng)關(guān)的核心區(qū)別在于處理能力、多任務(wù)效率、性能表現(xiàn)及適用場(chǎng)景,雙核CPU網(wǎng)關(guān)在多任務(wù)處理、復(fù)雜計(jì)算和響應(yīng)速度上具有顯著優(yōu)勢(shì),而單核CPU網(wǎng)關(guān)則更適合輕量級(jí)、低負(fù)
    的頭像 發(fā)表于 07-05 14:37 ?265次閱讀

    熱重分析儀在高分子材料中的應(yīng)用

    高分子材料以其輕質(zhì)、高強(qiáng)度、耐腐蝕等特性廣泛應(yīng)用于工業(yè)、醫(yī)療、電子等領(lǐng)域。然而,其熱穩(wěn)定性直接影響加工性能、使用壽命及安全性。熱重分析儀作為一種表征材料熱性能的關(guān)鍵儀器,能夠精準(zhǔn)測(cè)定高分子材料在升溫
    的頭像 發(fā)表于 05-27 14:19 ?142次閱讀
    熱重<b class='flag-5'>分析</b>儀在<b class='flag-5'>高分</b>子材料中的應(yīng)用

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】視覺(jué)實(shí)現(xiàn)的基礎(chǔ)算法的應(yīng)用

    : 一、機(jī)器人視覺(jué):從理論到實(shí)踐 第7章詳細(xì)介紹了ROS2在機(jī)器視覺(jué)領(lǐng)域的應(yīng)用,涵蓋了相機(jī)標(biāo)定、OpenCV集成、視覺(jué)巡線、二維碼識(shí)別以及深度學(xué)習(xí)目標(biāo)檢測(cè)等內(nèi)容。通過(guò)學(xué)習(xí),我認(rèn)識(shí)到: 相機(jī)標(biāo)定的重要性
    發(fā)表于 05-03 19:41

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】機(jī)器人入門的引路書

    ROS的全稱:Robot Operating System 機(jī)器人操作系統(tǒng) ROS的 目的 :ROS支持通用庫(kù),是通信總線,協(xié)調(diào)多個(gè)傳感器 為了解決機(jī)器人里各廠商模塊不通用的問(wèn)題,讓機(jī)器人快速開發(fā)
    發(fā)表于 04-30 01:05

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】+ROS2應(yīng)用案例

    的知識(shí),還需要對(duì)ROS 2的節(jié)點(diǎn)通信和數(shù)據(jù)處理有一定的了解。通過(guò)實(shí)踐這一部分內(nèi)容,我掌握了如何在ROS 2中實(shí)現(xiàn)二維碼識(shí)別,這對(duì)于提高機(jī)器人的智能性和交互性具有重要意義。 地圖構(gòu)建:SLAM技術(shù)
    發(fā)表于 04-27 11:42

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】+內(nèi)容初識(shí)

    控制機(jī)器人沿著路徑行駛,同時(shí)實(shí)時(shí)檢測(cè)環(huán)境變化,調(diào)整路徑規(guī)劃和導(dǎo)航控制策略。書中提供了完整的導(dǎo)航系統(tǒng)搭建示例,包括代碼實(shí)現(xiàn)和參數(shù)配置,幫助讀者快速掌握導(dǎo)航系統(tǒng)的開發(fā)。 3. 案例分析實(shí)踐 機(jī)器
    發(fā)表于 04-27 11:24

    名單公布!【書籍評(píng)測(cè)活動(dòng)NO.58】ROS 2智能機(jī)器人開發(fā)實(shí)踐

    Jazzy長(zhǎng)期穩(wěn)定版推出,這也代表著ROS 2走向成熟?!禦OS 2智能機(jī)器人開發(fā)實(shí)踐》 一書全部代碼便基于長(zhǎng)期穩(wěn)定版撰寫。 ROS的發(fā)展 從2012年開始,使用ROS的人越來(lái)越多,ROS社區(qū)開始舉辦
    發(fā)表于 03-03 14:18

    DLPC的boot flash在上機(jī)貼片之前需要預(yù)先燒寫程序嗎?

    您好,請(qǐng)問(wèn)下,DLPC的boot flash在上機(jī)貼片之前需要預(yù)先燒寫程序嗎?是否可以先貼片后經(jīng)過(guò)USB 燒寫img啟動(dòng)?
    發(fā)表于 02-21 16:56

    設(shè)計(jì)基于機(jī)器視覺(jué)的高分辨率雙遠(yuǎn)心物鏡

    摘要:小倍率大視場(chǎng)的雙遠(yuǎn)心物鏡具有低畸變、大景深的優(yōu)點(diǎn),在機(jī)器視覺(jué)工業(yè)在線檢測(cè)領(lǐng)域應(yīng)用廣泛。根據(jù)雙遠(yuǎn)心鏡頭對(duì)結(jié)構(gòu)參數(shù)的要求,運(yùn)用光學(xué)設(shè)計(jì)軟件Zemax設(shè)計(jì)了一款高分辨率、大視場(chǎng)、結(jié)構(gòu)簡(jiǎn)單的雙遠(yuǎn)心物
    的頭像 發(fā)表于 11-14 16:33 ?970次閱讀
    設(shè)計(jì)基于<b class='flag-5'>機(jī)器</b>視覺(jué)的<b class='flag-5'>高分</b>辨率雙遠(yuǎn)心物鏡

    CPU占用率過(guò)高的常見(jiàn)原因

    排查系統(tǒng)問(wèn)題時(shí),CPU 飆升是一個(gè)常見(jiàn)的問(wèn)題。
    的頭像 發(fā)表于 10-23 09:33 ?2480次閱讀

    服務(wù)器cpu占用率高怎么解決

    服務(wù)器CPU占用率高是一個(gè)常見(jiàn)的問(wèn)題,它可能會(huì)導(dǎo)致服務(wù)器性能下降,甚至影響用戶體驗(yàn)。 一、了解服務(wù)器CPU占用率高的原因 應(yīng)用程序問(wèn)題 應(yīng)用程序設(shè)計(jì)不合理,導(dǎo)致
    的頭像 發(fā)表于 10-10 15:14 ?1859次閱讀

    CPU時(shí)鐘周期、機(jī)器周期和指令周期的關(guān)系

    CPU時(shí)鐘周期、機(jī)器周期和指令周期是計(jì)算機(jī)體系結(jié)構(gòu)中三個(gè)緊密相連且至關(guān)重要的概念,它們共同構(gòu)成了CPU執(zhí)行指令和處理數(shù)據(jù)的基本時(shí)間框架。以下是對(duì)這三個(gè)周期之間關(guān)系的詳細(xì)解析。
    的頭像 發(fā)表于 09-26 15:38 ?6014次閱讀

    優(yōu)秀實(shí)踐:I3C共享總線上的I2C器件

    電子發(fā)燒友網(wǎng)站提供《優(yōu)秀實(shí)踐:I3C共享總線上的I2C器件.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 09:49 ?0次下載
    優(yōu)秀<b class='flag-5'>實(shí)踐</b>:I3C共享總<b class='flag-5'>線上</b>的I2C器件

    【「時(shí)間序列與機(jī)器學(xué)習(xí)」閱讀體驗(yàn)】+ 簡(jiǎn)單建議

    這本書以其系統(tǒng)性的框架和深入淺出的講解,為讀者繪制了一幅時(shí)間序列分析機(jī)器學(xué)習(xí)融合應(yīng)用的宏偉藍(lán)圖。作者不僅扎實(shí)地構(gòu)建了時(shí)間序列分析的基礎(chǔ)知識(shí),更巧妙地展示了機(jī)器學(xué)習(xí)如何在這一領(lǐng)域發(fā)揮巨
    發(fā)表于 08-12 11:21

    Imagination CPU 系列研討會(huì) | RISC-V 平臺(tái)的性能分析和調(diào)試

    為了讓開發(fā)者及工程師深入了解Imagination的CPU產(chǎn)品及相關(guān)解決方案,Imagination將陸續(xù)推出5期線上研討會(huì),包含:RISC-V平臺(tái)的性能分析和調(diào)試;RISC-V安全和全球平臺(tái)可信
    的頭像 發(fā)表于 08-10 08:28 ?551次閱讀
    Imagination <b class='flag-5'>CPU</b> 系列研討會(huì) | RISC-V 平臺(tái)的性能<b class='flag-5'>分析</b>和調(diào)試