在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

基于linux eBPF的進(jìn)程off-cpu的方法

454398 ? 來源: Chinaunix ? 作者:lvyilong316 ? 2020-09-25 15:41 ? 次閱讀

提起off-CPU就不得不提on-cpu,on-cpu是在線程(進(jìn)程)在CPU上運(yùn)行的消耗,off-cpu就是進(jìn)程(線程)由于某種原因阻塞的消耗,如等待IO,等待鎖,等待定時(shí)器,等待內(nèi)存頁面的swap等。如下圖所示,紅色部分屬于on-cpu部分,藍(lán)色部分屬于off-cpu。

一般我們用的perf命令等都是采樣on-cpu的指令進(jìn)行CPU的消耗分析的,這篇文章主要介紹一下分析進(jìn)程off-cpu的方法。

要想風(fēng)險(xiǎn)一個(gè)進(jìn)程的off-cpu消耗,首先就是要確保程序編譯時(shí)有完整的堆棧信息。例如有些C程序?yàn)榱藘?yōu)化性能添加了gcc的-fomit-frame-pointer編譯選項(xiàng),這就導(dǎo)致程序中不再有堆棧信息,對于這種情況是無法分析出off-cpu的堆棧消耗的。

這里講的分析off-cpu的工具是基于linux eBPF的offcputime(要求linux內(nèi)核版本在4.8以上),當(dāng)然使用perf sched timehist工具也可以(linux內(nèi)核版本大于4.10),但是開銷要大一些。我們首先yum安裝bpfcc-tools(tools for BPF Compiler Collection),以及git clone了

我們想看一下pgrep -nx tar命令的off-cpu執(zhí)行消耗可以使用如下命令。

如果我們只想查看內(nèi)核態(tài)的off-cpu消耗可以加上-K參數(shù)。如果想把TASK_UNINTERRUPTIBLE狀態(tài)過濾掉可以添加--state 2,其中TASK_RUNNING狀態(tài)為0, TASK_INTERRUPTIBLE狀態(tài)為1 TASK_UNINTERRUPTIBLE狀態(tài)為2。

當(dāng)然也可以查看off-cpu的火焰圖,如下方式

sudo offcputime-bpfcc -df -p `pgrep -nx a.out` 30 > out.stacks

./flamegraph.pl --color=io --title="Off-CPU Time Flame Graph" --countname=us~/out.stacks > output.svg

打開output.svg圖片即可。

然后我們再來講一下off-cpu的原理。當(dāng)進(jìn)程由于某種原因block或者要發(fā)送切換時(shí),記錄一下當(dāng)前的堆棧和時(shí)間,當(dāng)切換回來的時(shí)候再次記錄下堆棧和時(shí)間即可。
編輯:hfy

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

    關(guān)注

    68

    文章

    10873

    瀏覽量

    212093
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11314

    瀏覽量

    209783
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3251

    瀏覽量

    114959
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    505

    瀏覽量

    19703
收藏 人收藏

    評論

    相關(guān)推薦

    Linux進(jìn)程怎么綁定CPU

    昨天在群里有朋友問:把進(jìn)程綁定到某個(gè) CPU 上運(yùn)行是怎么實(shí)現(xiàn)的。
    發(fā)表于 10-26 10:26 ?1860次閱讀

    實(shí)戰(zhàn)eBPF kprobe函數(shù)插樁

    本文作者為團(tuán)隊(duì)小伙伴阿松,在Linux文件監(jiān)控領(lǐng)域?qū)崙?zhàn)經(jīng)驗(yàn)豐富。本次引入eBPF在文件監(jiān)控上應(yīng)用,提升文件變更的關(guān)聯(lián)進(jìn)程信息等。在實(shí)現(xiàn)過程中,分享了eBPF kbproe時(shí),被插樁函數(shù)
    發(fā)表于 11-29 09:03 ?2100次閱讀

    Linux進(jìn)程的睡眠和喚醒

    Linux中,僅等待CPU時(shí)間的進(jìn)程稱為就緒進(jìn)程,它們被放置在一個(gè)運(yùn)行隊(duì)列中,一個(gè)就緒進(jìn)程的狀 態(tài)標(biāo)志位為 TASK_RUNNING。一旦
    發(fā)表于 06-07 12:26 ?486次閱讀

    Linux下常用的查看進(jìn)程及強(qiáng)制關(guān)掉進(jìn)程方法

    1、TOP命令:查看當(dāng)前運(yùn)行的進(jìn)程,及系統(tǒng)資源消耗狀況。  有點(diǎn)類似Windows的系統(tǒng)資源管理器,有時(shí)可以看看CPU占用情況,有時(shí)可以看看內(nèi)存占用狀況,有時(shí)也可以看看硬盤IO使用情況,當(dāng)然它支持多
    發(fā)表于 11-14 14:08

    干貨分享:基于嵌入式Linux進(jìn)程調(diào)度實(shí)現(xiàn)方法

    可運(yùn)行隊(duì)列中。Linux進(jìn)程調(diào)度采用了動態(tài)優(yōu)先級 和權(quán)值調(diào)控的方法,既可實(shí)現(xiàn)上述三種調(diào)度策略,又能保證實(shí)時(shí)進(jìn)程總是比普通進(jìn)程優(yōu)先使用
    發(fā)表于 12-10 14:17

    openEuler 倡議建立 eBPF 軟件發(fā)布標(biāo)準(zhǔn)

    《The future of eBPF in the Linux Kernel》展望了 eBPF 的發(fā)展方向,具體的演進(jìn)方向包括幾個(gè)方面:更完備的編程能力:當(dāng)前 eBPF 的編程能力
    發(fā)表于 12-23 16:21

    Linux進(jìn)程管理

    Linux進(jìn)程管理 本章主要介紹進(jìn)程的概念、狀態(tài)、構(gòu)成以及Linux進(jìn)程的相關(guān)知識。 掌握進(jìn)程
    發(fā)表于 04-28 14:57 ?0次下載

    如何使用OFF-CPU火焰圖調(diào)查分析Linux性能問題概述

    本文用off-cpu火焰圖分析一個(gè)程序的延遲(主要在拿鎖上),找出來瓶頸,并消除該瓶頸的故事。本文非常值得一讀,但是"Linux閱碼場"沒有足夠的時(shí)間將其翻譯為中文,希望童鞋們直接讀英文。
    的頭像 發(fā)表于 12-23 13:47 ?7101次閱讀

    如何設(shè)置Linux進(jìn)程的睡眠和喚醒

    Linux中,僅等待CPU時(shí)間的進(jìn)程稱為就緒進(jìn)程,它們被放置在一個(gè)運(yùn)行隊(duì)列中,一個(gè)就緒進(jìn)程的狀 態(tài)標(biāo)志位為TASK_RUNNING。
    發(fā)表于 04-23 14:29 ?952次閱讀

    學(xué)會Linux進(jìn)程管理的方法

    Linux 是一種動態(tài)系統(tǒng),能夠適應(yīng)不斷變化的計(jì)算需求。Linux 計(jì)算需求的表現(xiàn)是以進(jìn)程 的通用抽象為中心的。進(jìn)程可以是短期的(從命令行執(zhí)行的一個(gè)命令),也可以是長期的(一種網(wǎng)絡(luò)服務(wù)
    發(fā)表于 05-16 17:19 ?781次閱讀
    學(xué)會<b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b>管理的<b class='flag-5'>方法</b>

    Linux CPU的性能應(yīng)該如何優(yōu)化

    Linux系統(tǒng)中,由于成本的限制,往往會存在資源上的不足,例如 CPU、內(nèi)存、網(wǎng)絡(luò)、IO 性能。本文,就對 Linux 進(jìn)程CPU
    的頭像 發(fā)表于 01-18 08:52 ?3393次閱讀

    虛擬機(jī):查看進(jìn)程內(nèi)存和CPU占用的方法

    虛擬機(jī):查看進(jìn)程內(nèi)存和CPU占用的方法
    的頭像 發(fā)表于 06-22 11:06 ?8515次閱讀

    eBPF是什么以及eBPF能干什么

    一、eBPF是什么 eBPF是extended BPF的縮寫,而BPF是Berkeley Packet Filter的縮寫。對linux網(wǎng)絡(luò)比較熟悉的伙伴對BPF應(yīng)該比較了解,它通過特定的語法
    的頭像 發(fā)表于 07-05 15:17 ?1.2w次閱讀
    <b class='flag-5'>eBPF</b>是什么以及<b class='flag-5'>eBPF</b>能干什么

    Linux進(jìn)程間通信方法之管道

    上文中我們介紹了進(jìn)程間通信的方法之一:信號,本文將繼續(xù)介紹另一種進(jìn)程間通信的方法,即管道。管道是Linux中使用shell經(jīng)常用到的一個(gè)技術(shù)
    的頭像 發(fā)表于 05-14 15:47 ?1981次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b>間通信<b class='flag-5'>方法</b>之管道

    linux查看weblogic進(jìn)程

    Linux操作系統(tǒng)中,WebLogic是一種常用的Java應(yīng)用服務(wù)器,用于部署和管理企業(yè)級Java應(yīng)用程序。為了確保WebLogic服務(wù)器正常運(yùn)行,有時(shí)我們需要查看WebLogic進(jìn)程以了解其狀態(tài)
    的頭像 發(fā)表于 12-05 16:07 ?1932次閱讀
    主站蜘蛛池模板: 国产自产视频在线观看香蕉| 天天看天天爽| 日本系列 1页 亚洲系列| 特级aaa毛片| 五月婷婷综合在线| 色偷偷人人| 欧美成人aaaa免费高清| 噜噜色网| 国产成人永久免费视频| 91久久另类重口变态| 色天天综合网| 国产美女主播一级成人毛片| 黄色的视频网站| 美女扒开尿囗给男人玩的动图| tom影院亚洲国产日本一区| 偷偷狠狠的日日日日| 全国男人天堂网| 国产亚洲人成网站观看| 亚洲午夜日韩高清一区| 欧美福利二区| sese亚洲| 性生活黄色毛片| 人人爽天天碰天天躁夜夜躁| 国产丝袜va丝袜老师| 天天射天天射天天射| 国产片一级| 女同性大尺度床戏视频| 天天色天天射综合网| 久久综合欧美| 亚洲zscs综合网站| 真人午夜a一级毛片| 九九热免费在线观看| 四虎影在永久地址在线观看| 玖玖在线| 午夜黄色一级片| 1024手机看片你懂得的 日韩欧美| 视频在线一区二区| 色香蕉视频| 国产色婷婷亚洲| 清纯漂亮小美女准备啪啪| 一区三区三区不卡|