衡阳派盒市场营销有限公司

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

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

3天內不再提示

基于linux eBPF的進程off-cpu的方法

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

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

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

要想風險一個進程的off-cpu消耗,首先就是要確保程序編譯時有完整的堆棧信息。例如有些C程序為了優化性能添加了gcc的-fomit-frame-pointer編譯選項,這就導致程序中不再有堆棧信息,對于這種情況是無法分析出off-cpu的堆棧消耗的。

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

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

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

當然也可以查看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的原理。當進程由于某種原因block或者要發送切換時,記錄一下當前的堆棧和時間,當切換回來的時候再次記錄下堆棧和時間即可。
編輯:hfy

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

    關注

    68

    文章

    10902

    瀏覽量

    213007
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210391
  • 定時器
    +關注

    關注

    23

    文章

    3255

    瀏覽量

    115369
  • 線程
    +關注

    關注

    0

    文章

    505

    瀏覽量

    19756
收藏 人收藏

    評論

    相關推薦

    Linux進程怎么綁定CPU

    昨天在群里有朋友問:把進程綁定到某個 CPU 上運行是怎么實現的。
    發表于 10-26 10:26 ?1878次閱讀

    實戰eBPF kprobe函數插樁

    本文作者為團隊小伙伴阿松,在Linux文件監控領域實戰經驗豐富。本次引入eBPF在文件監控上應用,提升文件變更的關聯進程信息等。在實現過程中,分享了eBPF kbproe時,被插樁函數
    發表于 11-29 09:03 ?2126次閱讀

    Linux進程的睡眠和喚醒

    Linux中,僅等待CPU時間的進程稱為就緒進程,它們被放置在一個運行隊列中,一個就緒進程的狀 態標志位為 TASK_RUNNING。一旦
    發表于 06-07 12:26 ?509次閱讀

    Linux下常用的查看進程及強制關掉進程方法

    1、TOP命令:查看當前運行的進程,及系統資源消耗狀況。  有點類似Windows的系統資源管理器,有時可以看看CPU占用情況,有時可以看看內存占用狀況,有時也可以看看硬盤IO使用情況,當然它支持多
    發表于 11-14 14:08

    干貨分享:基于嵌入式Linux進程調度實現方法

    可運行隊列中。Linux進程調度采用了動態優先級 和權值調控的方法,既可實現上述三種調度策略,又能保證實時進程總是比普通進程優先使用
    發表于 12-10 14:17

    openEuler 倡議建立 eBPF 軟件發布標準

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

    Linux進程管理

    Linux進程管理 本章主要介紹進程的概念、狀態、構成以及Linux進程的相關知識。 掌握進程
    發表于 04-28 14:57 ?0次下載

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

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

    如何設置Linux進程的睡眠和喚醒

    Linux中,僅等待CPU時間的進程稱為就緒進程,它們被放置在一個運行隊列中,一個就緒進程的狀 態標志位為TASK_RUNNING。
    發表于 04-23 14:29 ?964次閱讀

    學會Linux進程管理的方法

    Linux 是一種動態系統,能夠適應不斷變化的計算需求。Linux 計算需求的表現是以進程 的通用抽象為中心的。進程可以是短期的(從命令行執行的一個命令),也可以是長期的(一種網絡服務
    發表于 05-16 17:19 ?787次閱讀
    學會<b class='flag-5'>Linux</b><b class='flag-5'>進程</b>管理的<b class='flag-5'>方法</b>

    Linux CPU的性能應該如何優化

    Linux系統中,由于成本的限制,往往會存在資源上的不足,例如 CPU、內存、網絡、IO 性能。本文,就對 Linux 進程CPU
    的頭像 發表于 01-18 08:52 ?3428次閱讀

    虛擬機:查看進程內存和CPU占用的方法

    虛擬機:查看進程內存和CPU占用的方法
    的頭像 發表于 06-22 11:06 ?8570次閱讀

    eBPF是什么以及eBPF能干什么

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

    Linux進程間通信方法之管道

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

    linux查看weblogic進程

    Linux操作系統中,WebLogic是一種常用的Java應用服務器,用于部署和管理企業級Java應用程序。為了確保WebLogic服務器正常運行,有時我們需要查看WebLogic進程以了解其狀態
    的頭像 發表于 12-05 16:07 ?2018次閱讀
    新加坡百家乐规则| 多台百家乐官网的玩法技巧和规则| 大发888娱乐场下载 制度| 大发888在线娱乐合作伙伴| 大发888客户端的 软件| 棋牌源码论坛| 淘金盈娱乐城| 银河国际| 利高百家乐官网娱乐城| 百家乐官网代理博彩正网| 缅甸百家乐官网赌博有假吗| 蓝盾百家乐官网庄家利润分| 百家乐官网看图赢钱| 百家乐庄和闲的赌法| 诸子百家乐的玩法技巧和规则| 新全讯网3344666| 四海资迅| 百家乐官网休闲游戏| 百家乐官网游戏规范| 最新百家乐游戏机| 加州百家乐的玩法技巧和规则| 大发888娱乐城游戏| 香港六合彩官方网站| 百家乐官网赢钱| 24山飞星图| 澳门档百家乐的玩法技巧和规则 | 大发888刮刮了下载| tt线上娱乐城| 百家乐官网桌定制| 24山龙合向向合水秘诀| 线上百家乐平台| 大发888 备用6222.com| 百家乐官网模拟投注器| 曼哈顿百家乐官网的玩法技巧和规则| 百家乐等投注网改单| 大发888游戏平台黄埔网| 百家乐官网怎么玩了| 百家乐官网平客户端| 查找百家乐群| bet365体育投注心得| 百家乐官网客户端软件|