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

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

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

使用valgrind的callgrind工具進(jìn)行多線程性能分析

如意 ? 來源:CSDN ? 作者:CaspianSea ? 2020-06-22 09:51 ? 次閱讀

valgrind是開源的性能分析利器。 根據(jù)它的文檔,可以用它來檢查內(nèi)存泄漏等問題,還可以用來生成函數(shù)的調(diào)用圖,就這兩個功能就足夠有吸引力了。

本文主要是介紹如何使用valgrind的callgrind工具進(jìn)行性能分析。

分析過程

使用callgrind工具生成性能分析數(shù)據(jù)

命令格式如下:

valgrind --tool=callgrind 。/exproxy

其中 ./exproxy就是我們要分析的程序。執(zhí)行完畢后,就會在當(dāng)前目錄下生成一個文件。文件名為“callgrind.out.進(jìn)程號”。如,callgrind.out.31113。注意,對于daemon進(jìn)程的調(diào)試,不要通過kill -9方式停止。

如果你調(diào)試的程序是多線程,你也可以在命令行中加一個參數(shù) -separate-threads=yes。這樣就會為每個線程單獨(dú)生成一個性能分析文件。如下:

valgrind --tool=callgrind --separate-threads=yes 。/exproxy

生成的文件除了callgrind.out.31113外,還會多出一些子線程的文件。文件名如下:

callgrind.out.31113-01 callgrind.out.31113-02 callgrind.out.31113-03

把callgrind生成的性能數(shù)據(jù)轉(zhuǎn)換成dot格式數(shù)據(jù)

可以使用gprof2dot.py腳本,把callgrind生成的性能分析數(shù)據(jù)轉(zhuǎn)換成dot格式的數(shù)據(jù)。方便使用dot把分析數(shù)據(jù)圖形化。

腳本可以 這里下載。腳本使用方式如下:

使用dot把數(shù)據(jù)生成圖片

命令格式如下:

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

    關(guān)注

    0

    文章

    278

    瀏覽量

    19961
  • Valgrind
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    6811
收藏 人收藏

    評論

    相關(guān)推薦

    Java多線程的用法

    本文將介紹一下Java多線程的用法。 基礎(chǔ)介紹 什么是多線程 指的是在一個進(jìn)程中同時運(yùn)行多個線程,每個線程都可以獨(dú)立執(zhí)行不同的任務(wù)或操作。 與單線程
    的頭像 發(fā)表于 09-30 17:07 ?953次閱讀

    如何合理的進(jìn)行線程切換與調(diào)度

    基于STM32F4XX+RTOS的多線程程序開發(fā)及線程性能分析與狀態(tài)查看前言STM32F4xx系列是ST公司高性價比產(chǎn)品,由于可以很方便的移植RTOS系統(tǒng),在
    發(fā)表于 08-24 07:33

    QNX環(huán)境下多線程編程

    介紹了QNX 實時操作系統(tǒng)和多線程編程技術(shù),包括線程間同步的方法、多線程程序的分析步驟、線程基本程序結(jié)構(gòu)以及實用編譯方法。QNX 是由加拿大
    發(fā)表于 08-12 17:37 ?30次下載

    LINUX系統(tǒng)下多線程與多進(jìn)程性能分析

    采用多進(jìn)程處理多個任務(wù),會占用很多系統(tǒng)資源(主要是CPU 和內(nèi)存的使用)。在LINUX 中,則對這種弊端進(jìn)行了改進(jìn),在用戶態(tài)實現(xiàn)了多線程處理多任務(wù)。本文系統(tǒng)論述了多線程
    發(fā)表于 08-13 08:31 ?20次下載

    數(shù)控測井軟件中的多線程編程技術(shù)

    為滿足實時測井需求,提高系統(tǒng)資源的利用率和系統(tǒng)性能,在數(shù)控測井軟件開發(fā)中將多線程編程技術(shù)應(yīng)用其中,并對多線程編程技術(shù)應(yīng)用的可行性和必要性進(jìn)行分析
    發(fā)表于 01-14 17:17 ?32次下載

    LabWindows_CVI多線程技術(shù)的應(yīng)用研究

    分析線程與進(jìn)程的關(guān)系,研究了LabWindows/CVI多線程技術(shù)運(yùn)行機(jī)制及其數(shù)據(jù)保護(hù)機(jī)制,對利用異步定時器實現(xiàn)的多線程軟件與傳統(tǒng)單線程
    發(fā)表于 08-29 14:53 ?68次下載
    LabWindows_CVI<b class='flag-5'>多線程</b>技術(shù)的應(yīng)用研究

    MFC下的多線程編程

    計算機(jī)上的上位機(jī)制作工具語言之MFC下的多線程編程
    發(fā)表于 09-01 14:55 ?0次下載

    Windows多線程編程

    計算機(jī)上的上位機(jī)制作工具語言之Windows多線程編程,感興趣的可以看看。
    發(fā)表于 09-01 15:27 ?0次下載

    關(guān)于多線程編程教程及經(jīng)典應(yīng)用案例的匯總分析

    在一個程序中,這些獨(dú)立運(yùn)行的程序片段叫作線程,利用它編程的概念就叫作多線程處理。具有多線程能力的計算機(jī)因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,進(jìn)而提升整體處理
    發(fā)表于 10-16 16:46 ?0次下載

    多線程好還是單線程好?單線程多線程的區(qū)別 優(yōu)缺點(diǎn)分析

    摘要:如今單線程多線程已經(jīng)得到普遍運(yùn)用,那么到底多線程好還是單線程好呢?單線程多線程的區(qū)別又
    發(fā)表于 12-08 09:33 ?8.1w次閱讀

    什么是多線程編程?多線程編程基礎(chǔ)知識

    摘要:多線程編程是現(xiàn)代軟件技術(shù)中很重要的一個環(huán)節(jié)。要弄懂多線程,這就要牽涉到多進(jìn)程。本文主要以多線程編程以及多線程編程相關(guān)知識而做出的一些結(jié)論。
    發(fā)表于 12-08 16:30 ?1.3w次閱讀

    如何利用基于字節(jié)碼插樁實現(xiàn)的多線程調(diào)試工具

    在軟件演化過程中,代碼的調(diào)試是不可或缺的重要環(huán)節(jié)。對于多線程程序,線程的交錯和調(diào)度是非確定的,不同的線程調(diào)度會產(chǎn)生不同的結(jié)果,程序員較難調(diào)試多線程程序。為此,對實際項目中
    發(fā)表于 07-06 14:13 ?13次下載
    如何利用基于字節(jié)碼插樁實現(xiàn)的<b class='flag-5'>多線程</b>調(diào)試<b class='flag-5'>工具</b>

    Python多線程的使用

    最近常常需要處理大量的crash數(shù)據(jù),對這些數(shù)據(jù)進(jìn)行分析,在此之前需要將存量的數(shù)據(jù)導(dǎo)入自己的數(shù)據(jù)庫,開始一天一天的去導(dǎo),發(fā)現(xiàn)太慢了,后來嘗試通過python多線程并行導(dǎo)入多天數(shù)據(jù),以此記錄對于Python
    的頭像 發(fā)表于 03-17 14:57 ?1097次閱讀

    多線程如何保證數(shù)據(jù)的同步

    。本文將詳細(xì)介紹多線程數(shù)據(jù)同步的概念、問題、以及常見的解決方案。 一、多線程數(shù)據(jù)同步概念 在多線程編程中,數(shù)據(jù)同步指的是通過某種機(jī)制來確保多個線程對共享數(shù)據(jù)的操作按照一定的順序和規(guī)則
    的頭像 發(fā)表于 11-17 14:22 ?1237次閱讀

    mfc多線程編程實例

    (圖形用戶界面)應(yīng)用程序的開發(fā)。在這篇文章中,我們將重點(diǎn)介紹MFC中的多線程編程。 多線程編程在軟件開發(fā)中非常重要,它可以實現(xiàn)程序的并發(fā)執(zhí)行,提高程序的效率和響應(yīng)速度。MFC提供了豐富的多線程支持,可以輕松地實現(xiàn)
    的頭像 發(fā)表于 12-01 14:29 ?1507次閱讀