成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

性能優化技巧之工具選擇

運維 系統運維
性能優化,不僅需要對系統和代碼熟悉,更需要一個強有力的工具支持。本文是性能優化系列文章的第三篇,從性能優化要考慮工具的哪些問題開始說起,到性能優化工具都有哪些?本文為您一一介紹。

編者按:性能優化,不僅需要對系統和代碼熟悉,更需要一個強有力的工具支持。本文是性能優化系列文章的第三篇,從性能優化要考慮工具的哪些問題開始說起,到性能優化工具都有哪些?本文為您一一介紹。

 “工欲善其事,必先利其器”(孔子),雖然“思想比工具更重要”(彎曲網友),但是,如果沒有工具支持,性能優化就會非常累。思想不好掌握,但是使用工具還是比較好學習的,有了工具支持,可以讓初級開發者更容易入門。

性能優化用到的工具,需要考慮哪些方面的問題?

1)使用工具是否需要重新編譯代碼?

一般來說,性能優化工具基本上都需要重新編譯代碼。因為在生產環境里面使用的image,應該是已經優化過的image。不應該在用戶環境里面去調試性能問題。但Build-in的工具有一個好處就是性能測試所用的image和性能調試所用的image是相同的,這樣可以避免重新編譯所帶來的誤差。

2)工具本身對測量結果的影響

如果是Build-in的工具,需要減小工具對性能的影響,啟用工具和不啟用工具對性能的影響應該在一定范圍之內,比如5%,否則不清楚是工具本身影響性能還是被測量的代碼性能下降。

如果是需要重新編譯使用的工具,這里的測試是一個相對值,不能做為性能指標的依據。因為編譯會修改代碼的位置,也可能會往代碼里面加一個測量函數,它生成的image和性能測試的image不一樣。

在這里要列出幾個我用過的Linux工具,其他系統應該也有對應的工具,讀者可以自己搜索。

性能測試工具一般分這么幾種

1)收集CPU的performance counter。CPU里面有很多performance counter,打開之后,會記錄CPU某些事件的數量,比如cache miss, 指令數,指令時間等等。這些counter需要編程才能使用。測量哪一段代碼完全由自己掌握。

2)利用編譯器的功能,在函數入口和出口自動加回調函數,在回調函數里面,記錄入口和出口的時間。收集這些信息,可以得到函數的調用流程和每個函數所花費的時間。

3)自己在代碼里面加入時間測量點,測量某段代碼執行的時間。這種工具看起來和#1的作用差不多,但是由于performance counter編程有很多限制,所以這種工具有時還是有用處的。

在Linux里面,我們經常會用到

1)Oprofile

Oprofile已經加入了linux的內核代碼庫,所以不需要打patch,但是還需要重新編譯內核才可以使用。這是使用最廣泛的linux工具,網上有很多使用指南,讀者可以自己搜索參考。

http://oprofile.sourceforge.net/news/

http://people.redhat.com/wcohen/Oprofile.pdf

2) KFT and Gprof

KFT是kernel的一個patch,只對kernel有效;Gprof是gcc里面的一個工具,只對用戶空間的程序有效。這兩個工具都需要重新編譯代碼,它們都用到了gcc里面的finstrument-functions選項。編譯時會在函數入口,出口加回調函數,而且inline函數也會改成非inline的。它的工作原理可以參考:

http://blog.linux.org.tw/~jserv/archives/001870.html

http://blog.linux.org.tw/~jserv/archives/001723.html

http://elinux.org/Kernel_Function_Trace

http://www.network-theory.co.uk/docs/gccintro/gccintro_80.html

個人認為這是一個非常有用的工具,對讀代碼也有幫助,是居家旅行的必備。這里還有一個slide比較各種工具的,可以看看。

 

 

 

KFT

 

3) Performance counter

http://anton.ozlabs.org/blog/2009/09/04/using-performance-counters-for-linux/

Linux performance counter,用于收集CPU的performance counter,已經加入了內核代碼庫。通常來說,performance counter的粒度太大,基本沒有什么用處,因為沒法定位問題出在哪里;如果粒度太小,就需要手工編程,不能靠加幾個檢查點就可以了。所以還是要結合上面兩個工具一起用才有好的效果。

工具解決哪些問題?

1)幫助建立基線。沒有基線,就沒辦法做性能優化。性能優化是個迭代的過程,指望一次搞定是不現實的。

2)幫助定位問題。這里有兩個涵義:一是性能問題出現在什么地方,是由哪一段代碼引起的;二是性能問題的原因,cache miss,TLB miss還是其他。

3)幫助驗證優化方案。優化的結果應該能在工具里面體現出來,而不是靠蒙。

原文:性能優化的方法和技巧:工具

【編輯推薦】

  1. 性能優化技巧之代碼層次優化
  2. 新的技術產業:Web性能優化
  3. Linux網絡性能優化方法簡析
  4. 網站性能優化最佳實踐

 

責任編輯:黃丹 來源: kernelchina
相關推薦

2011-07-11 15:26:49

性能優化算法

2011-06-14 14:32:46

性能優化

2011-06-14 14:17:23

性能優化系統層次

2011-06-14 11:14:10

性能優化代碼

2017-12-23 14:38:41

Android編程開發優化

2011-03-11 15:53:02

LAMP優化

2011-09-29 09:50:44

JavaScript

2009-06-16 16:39:49

Hibernate性能

2024-09-26 08:36:11

JavaScript性能優化

2021-06-17 08:59:45

React前端優化

2011-03-11 15:52:57

LAMP優化

2018-11-20 10:50:00

Java性能優化編程技巧

2013-06-08 14:19:05

性能優化KVM

2019-08-21 10:53:29

.NET性能優化

2019-02-25 07:07:38

技巧React 優化

2012-07-23 10:22:15

Python性能優化優化技巧

2009-12-09 17:33:22

PHP性能優化

2011-03-11 15:53:00

LAMP優化

2021-05-12 06:02:56

性能優化工具WebPageTest

2011-03-11 15:52:59

LAMP優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a欧美| 亚洲视频一区在线播放 | 成人午夜毛片 | 精品国产精品三级精品av网址 | .国产精品成人自产拍在线观看6 | 亚洲精品二区 | 射欧美 | 精品美女久久久 | 天天碰日日操 | 欧美精产国品一二三区 | 91在线精品视频 | 精品综合久久久 | 性一爱一乱一交一视频 | 99久久99久久精品国产片果冰 | 欧美一区二区三区在线看 | 一级黄色短片 | 国产一级淫片免费视频 | 国产精品一区二区三区四区 | 亚洲一区二区av | 欧美精品一区二区三区一线天视频 | 日韩免费视频一区二区 | 国产一区二区三区精品久久久 | 精品国产乱码久久久久久丨区2区 | 亚洲激情在线 | 精品www| 精品日韩在线 | 久久伊人精品 | 在线观看国产91 | 亚洲国产精品精华素 | 亚洲视频在线观看 | 九九福利 | 福利视频网 | 在线成人av| 成人福利在线视频 | 婷婷99 | 日日操夜夜摸 | 毛片一级电影 | 九九精品久久久 | 欧美精品一区三区 | 久综合| 国产一区二区在线免费观看 |