天天看點

Linux性能優化:性能追蹤方法

目錄

記錄

以腳本代替手動輸入

選擇低開銷的工具

同時使用多個工具

确定名額和基線

追蹤近似問題

檢視問題是否早已解決

分離問題

一次隻改變一件事

始終在優化後重新測量

在調查性能問題時,你可以做的最重要的事情大概就是記錄下看到的每一個輸出、執行的每一條指令,以及研究的每一個資訊。結構清晰的記錄能讓你隻檢視記錄就可以檢驗關于性能問題原因的猜想,而不是重新運作測試。這能節約大量時間。寫下來并且建立性能記錄。

每一步操作、每個輸出結果,可以直接截圖或者複制儲存在文檔,便于後期對比分析。

使用腳本自動執行,可以節省時間,并有助于避免因不當工具和測試調用造成的誤導性資訊。

舉個例子,你想在特定工作負載下或某段時間内監控系統,但是在測試結束時,你可能不在現場。這種情況下,腳本就很好用了,在測試完成時,可以自動收集、命名、儲存全部生成的性能資料,并将它們自動放到“Results”目錄中。有了這些基礎之後,你就能按照不同的優化和調整重新運作測試,并且不用擔心資料是否已經儲存好。你反而可以集中精力找出問題的原因,而不是去管理測試結果。

使用工具觀察性能變化的同時,也會占用系統的資源,是以盡量選擇低開銷的工具來降低對系統的影響。

有些性能工具能夠給出高度精确的系統資訊,但其檢索資訊的開銷也很高。高開銷工具對系統行為帶來的變化大于低開銷工具。如果你隻需要了解系統的粗略資訊,那麼使用低開銷的工具是更好的選擇,即使它們不夠準确。

雖然在找出性能問題原因的時候,如果隻需要用一個工具那将是非常友善的,但這種情況相當少見。實際上,你使用的每一種工具都會為問題的原因提供線索,是以,你必須同時使用多個工具來真正搞清楚發生了什麼。比如,一種性能工具會告訴你系統存在大量的磁盤I/O,而另一種工具則告訴你系統使用了大量的交換。如果隻以第一個工具的結論制定解決方案,你可能會簡單地選擇更快的磁盤驅動器(然後發現性能問題僅僅改善了一點點)。而将兩種工具的結果放在一起,你就會判斷出:大量的磁盤I/O是由大量使用的交換造成的。在這種情況下,你可能會買更多的主存以減少交換(這樣就不會再有大量的磁盤I/O)。

明确性能峰值有助于你設定合理的性能期望值,并能給你一個性能目标,這樣你就知道何時應該停止優化。你可能總是沒有目标地時不時對系統做一點調整,這會浪費大量的時間,隻為得到一些額外的性能,即使你可能并不真的需要它們。

要想知道什麼時候結束優化,你必須為系統自行确立或是使用已釋出的名額。名額是一種客觀的度量,用于訓示系統的執行情況。例如,如果你要優化一個Web伺服器,你就可以選擇“每秒服務的Web請求數”。如果你沒有一個客觀的途徑來度量性能,那麼在調整系統的時候,你幾乎無法确定是否取得了進展。

在調整和優化之前,運作應用程式并記錄其性能,這就是基線值,它是性能調查的起點。

通過初始的粗略嘗試,你能對問題形成大緻的看法。這個簡單切口的目的就是收集足夠的資訊傳遞給程式的其他使用者和開發者,以便他們提出意見和建議。這裡非常重要的一點是要有良好的書面記錄來解釋你認為問題是怎樣的,以及什麼樣的測試使你得出了這個結論。

通過搜尋引擎(谷歌、百度或國内常見的技術部落格平台,比如部落格園、CSDN等)查找相似的錯誤資訊/問題。

Web搜尋常常會揭示很多與應用程式以及你正在查找的具體錯誤情況相關的資訊。它們還可以指向其他使用者所嘗試的系統優化,還可能提示哪些有作用、哪些沒有作用。成功的搜尋可以産生好幾頁能夠直接用于你的性能問題的資訊。

如果可能的話,删去任何運作于被調查系統的多餘的程式或應用。運作許多不同應用程式的系統,其負載較重,會影響性能工具收集資訊的準确性,并最終将你引導到錯誤的方向。

這點非常重要。要真正确定問題出在哪兒,一次隻能有一個變化。這可能會很花時間,并讓你運作多個不同的測試,但它的确是發現你是否解決了問題的唯一途徑。

如果你稍稍調整了系統,那麼在調整後對所有的事情重新進行測量是很重要的。當你開始修改系統配置時,所有之前生成的性能資訊可能不再有效。通常,在你解決一個性能問題時,别的問題會随之而來。新問題可能與老問題有着極大的不同,是以,你真的需要重新運作性能工具來確定正在調查的問題沒有出錯。

繼續閱讀