第一章策略谦去、方法和方法論

建議將性能調優(yōu)集成到軟件開發(fā)過程中。

性能問題的現(xiàn)狀

傳統(tǒng)的軟件開發(fā)過程:分析蹦哼、設計鳄哭、編碼、測試纲熏。
分析:用于評估需求妆丘、權衡各種架構的利弊以及構思高層抽象。
設計:依據分析階段的基本架構和高層抽象局劲,進行更精細的抽象并著手考慮具體實現(xiàn)勺拣。
測試:通常只包含功能測試。

遵循傳統(tǒng)軟件開發(fā)過程的應用鱼填,通常要到測試或即將發(fā)布時才會關注性能或擴展性药有。


對于分析階段提煉出來的性能需求,建議以用例的方式特別標識出來苹丸,這有助于在分析階段制定性能評估指標愤惰。

性能測試階段:基準測試 性能測試
軟件開發(fā)周期中的軟件缺陷、低劣設計和糟糕實現(xiàn)發(fā)現(xiàn)得越晚赘理,修復的代價就越大宦言。
自動構建 自動測試 自動性能測試(統(tǒng)計方法、自動統(tǒng)計分析)

將性能測試集成到自動構建過程中后商模,每次代碼變更提交到源代碼庫時奠旺,都能很容易地追蹤因變更而導致的性能變化,也就能在軟件開發(fā)的早期發(fā)現(xiàn)性能衰減阻桅。

性能分析的兩種方法:自頂向下和自底向上

自頂向下:著眼于軟件棧頂層的應用凉倚,從上往下尋找優(yōu)化機會和問題。(應用開發(fā)人員)
自底向上:從軟件棧最底層的CPU統(tǒng)計數據開始嫂沉,逐漸上升到應用自身的結構或應用常見的使用方式稽寒。(性能問題專家)
自底向上,用以辨別因不同硬件架構趟章、操作系統(tǒng)或不同的Java虛擬機實現(xiàn)所導致的性能差異杏糙。

自頂向下

從發(fā)現(xiàn)性能問題的負載開始監(jiān)控應用。
需要持續(xù)監(jiān)控應用蚓土。
自頂向下的第一步總是對運行在特定負載之下的應用進行監(jiān)控宏侍。
監(jiān)控的范圍:操作系統(tǒng)、Java虛擬機蜀漆、Java EE容器谅河、應用的性能測量統(tǒng)計指標。

自底向上場景

在不同平臺上

自底向上 監(jiān)控CPU

需要收和監(jiān)控最底層CPU的性能統(tǒng)計數據。
監(jiān)控的CPU統(tǒng)計數據包括執(zhí)行特定任務所需要的CPU指令數(路徑長度)绷耍,以及應用在一定負載下運行時的CPU高速緩存未命中率吐限。

自底向上作用

自底向上關注的是在不更改應用的前提下,改善CPU使用率褂始。但也可以給修改應用提交建議诸典。
將經常使用的數據放在一起,使得只要訪問一條CPU高速緩存行就能獲取所有這些數據崎苗,而不用從內存獲取數據狐粱。這可以降低CPU高速緩存未命中率,從而減少CPU等待內存數據的時間胆数。

自底向上 操作

先從收集操作系統(tǒng)和JVM的統(tǒng)計數據開始肌蜻。據此判斷對應用和JVM進行性能分析是否有意義。

Java虛擬機集成了JIT編譯期

現(xiàn)代Java虛擬機集成了JIT編譯器幅慌,可以在Java應用的執(zhí)行過程中進行優(yōu)化宋欺。
依據應用的內存訪問模式或應用特定的代碼路徑,生成更有效的機器碼胰伍。
調整操作系統(tǒng)的設置來改善性能,比如更改CPU調度算法酸休,修改操作系統(tǒng)的等待時間(操作系統(tǒng)在將應用執(zhí)行線程遷移到其他CPU硬件線程之前所花費的時間)

選擇正確的平臺并評估系統(tǒng)性能

CPU架構
每核多硬件線程(CMT骂租,Chip Multithreading)
隨著CPU架構的演變發(fā)展,評估系統(tǒng)性能的方法也需要與時俱進斑司。

選擇正確的CPU架構

每核多硬件線程:在一個時鐘周期內渗饮,每核多硬件線程中只有一個可以運行,如果發(fā)生長延遲宿刮,例如CPU高速緩存未命中互站,如果同一個核中還有其他就緒的硬件線程,下一個時鐘周期就會讓這個硬件線程運行僵缺。
每核單硬件線程:如果就緒的應用線程已經準備好運行去沒有可用的硬件線程胡桃,運行前就必須進行線程上下文切換。
線程上下文切換需要耗費數百個時鐘周期磕潮。
每核多硬件線程的CPU相對每核單硬件線程或者無法在下一個周期切換的CPU相比翠胰,運行的時鐘頻率較低。

每核多硬件線程:需要大量并發(fā)的線程自脯,讓大量硬件線程保持負荷之景,從而在發(fā)生例如CPU高速緩存未命中這樣的事件時,發(fā)揮它在下一時鐘周期切換到另一硬件線程的能力膏潮。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末锻狗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轻纪,老刑警劉巖油额,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桐磁,居然都是意外死亡悔耘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門我擂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衬以,“玉大人,你說我怎么就攤上這事校摩】淳” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵衙吩,是天一觀的道長互妓。 經常有香客問我,道長坤塞,這世上最難降的妖魔是什么冯勉? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮摹芙,結果婚禮上灼狰,老公的妹妹穿的比我還像新娘。我一直安慰自己浮禾,他們只是感情好交胚,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盈电,像睡著了一般蝴簇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匆帚,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天熬词,我揣著相機與錄音,去河邊找鬼卷扮。 笑死荡澎,一個胖子當著我的面吹牛,可吹牛的內容都是我干的晤锹。 我是一名探鬼主播摩幔,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鞭铆!你這毒婦竟也來了或衡?” 一聲冷哼從身側響起焦影,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎封断,沒想到半個月后斯辰,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡坡疼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年彬呻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柄瑰。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡闸氮,死狀恐怖,靈堂內的尸體忽然破棺而出教沾,到底是詐尸還是另有隱情蒲跨,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布授翻,位于F島的核電站或悲,受9級特大地震影響,放射性物質發(fā)生泄漏堪唐。R本人自食惡果不足惜巡语,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淮菠。 院中可真熱鬧捌臊,春花似錦、人聲如沸兜材。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曙寡。三九已至,卻和暖如春寇荧,著一層夾襖步出監(jiān)牢的瞬間举庶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工揩抡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留户侥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓峦嗤,卻偏偏與公主長得像蕊唐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烁设,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內容