Linux系統效能優化思路和工具

2021-09-14 03:49:36 字數 1902 閱讀 5261

有人覺得現如今硬體的效能越來越強,在系統和軟體上深度優化的必要性是否存在。硬體效能確實是越來卻強,我不知道摩爾定律目前是否失效,但是總會有失效的一天。因此,是否有必要也因人因公司而異,系統優化的目的是更高效地使用cpu和記憶體等硬體資源,最終還是為了省錢。因此,如果你們公司想省錢,可能是有必要對伺服器系統進行優化的。

具體一點,我們只談論linux系統的效能優化思路,目前大多伺服器也是安裝linux系統的。系統優化從**著手呢?我們一般分為以下幾個步驟:

1.理解什麼是系統效能,系統效能指標有哪些;

2.哪些效能分析工具可以查詢到指標裡包含的資料;

3.定位到效能問題後,如何進行優化;

系統效能指標主要包括:

cpu負載:可以粗略理解為乙個cpu上等待執行的程序數;

cpu使用率:cpu非空閒時間佔總時間的比例;

記憶體使用率:記憶體使用數和總記憶體大小的比例;

磁碟/網路吞吐量:讀寫的速率、中斷次數、等待次數等;

知道要找到這些指標資料之後,我們就開始找相應的分析工具了。

對於cpu負載率高的情況,我們可以知道是系統中活躍的程序數比較多,一般是每個cpu都有好多個程序在等待著使用,就會出現負載高的狀況。cpu負載可以使用top、uptime命令檢視,能分別看到一分鐘前、五分鐘前、十五分鐘前的cpu負載率。那麼我們是不是降低系統程序數就能降低cpu負載率呢?答案是不盡然。降低程序數當然是可以稍微降低cpu負載率,但真正引起負載率高的不一定是程序數多的原因,還有可能是因為某個程序進行io等待的時間比較長,導致其它程序搶占不到cpu,從而出現負載率高的狀況。這個時候,我們需要分析具體引起cpu負載高的特定程序,然後找出該程序引起高cpu負載率高的原因,再對症下藥才能解決問題。因此,在優化這項指標之前,關鍵的一步是我們要找出引發問題的根本原因。

我們可以使用top命令檢視每個程序的cpu使用率,一目了然。cpu使用率高,一般來說是程序使用者層**進行計算的時間比較長。當然如果非要深入的話,也可能是系統核心部分耗費了比較多的時間,還有可能是io等待時間長,也可能是軟硬中斷次數過於頻繁或者中斷處理程式的執行時間過長。但是後面說的這幾個原因是屬於系統核心層的,如果是核心**出現問題,也往往是因為使用者層**不合理的呼叫引起的,所以我們還是要分析使用者程式的問題,而傾向於相信系統核心層是沒有多大問題的。

我們可以使用strace、perf等工具跟蹤系統呼叫,找出耗費時間比較長的系統介面,然後可以知道使用者程式****呼叫了這些系統介面,進行針對性的優化。如果使用者層不是我們自己寫的第三方**,那麼可能需要去了解哪些配置引起第三方程式這樣的行為,再進行針對性的優化。

系統的記憶體使用情況,可以使用free命令檢視,輸出如下圖:

可以看到系統總物理記憶體數、已使用數、剩餘數、共享數、快取數、可用數、交換分割槽大小和使用數、剩餘數。這是整個系統的記憶體使用情況,比如上面的輸出結果中,使用到了交換分割槽,也就是位於磁碟上的虛擬記憶體。然後可以使用top命令檢視具體的程序使用的記憶體百分比。對linux系統,可以進行大頁設定、刷快取、更改交換分割槽設定等系統級的調整,但一般來說,除非你非常清楚自己在幹嘛,否則不建議自己去調整這些引數,而對自己的應用程式,則需要多考慮記憶體優化。

磁碟/網路相關的,可調整的東西太多了,比如光tcp相關就有很多可配置項,最大傳輸單元mtu大小也是可設定的,還有網絡卡模式、網絡卡緩衝區大小、檔案系統快取等等。假設這些設定已經沒有問題了,系統的磁碟/網路io還是有效能問題,那就要考慮應用程式的效能問題了。對於應用程式引起的效能問題,解決的思路一般也就是優化演算法、使用分治策略減少大迴圈、同步改非同步等。以我的經驗來看的話,程式設計師遇到不可理喻的問題而怪罪作業系統的時候,99%的情況下其實還是自己程式的問題。因此建議開發人員多花心思在如何編寫高效、可讀、可維護的**上,然後再考慮系統的效能優化問題。

這篇文章沒有寫得特別詳細,一方面是時間問題,另一方面也是自己水平經驗所限,而我想做的就是提供一些解決問題的思路和工具,有這些東西作指導,當我們遇到具體的系統效能問題時,不至於手足無措,可以按照這樣的思路去找出問題所在,解決掉具體的問題。

Linux系統效能優化思路和方法

影響linux效能的cpu 記憶體 磁碟 網路等因素分析 1.系統硬體資源 cpu,多核與超執行緒 消耗cpu的業務 動態web服務,mail伺服器 2.記憶體 物理記憶體與swap的取捨,64作業系統 消耗記憶體的業務 記憶體資料庫 redis hbase mongodb 3.磁碟 raid技術 ...

Linux系統效能優化

由於各種的i o負載情形各異,linux系統中檔案系統的預設配置一般來說都比較中庸,強調普遍適用性。然而在特定應用下,這種配置往往在i o效能方面不能達到最優。因此,如果應用對i o效能要求較高,除了採用效能更高的硬體 如磁碟 hba卡 cpu mem等 外,我們還可以通過對檔案系統進行效能調優,來...

優化系統效能

程式框架 hibernate3 struts2 spring2 資料庫 sqlserver2008 伺服器 tomcat6 優化方法 1 配置連線池 採用的c3p0連線池 2 在程式中獲取列表時,用iterator代替list 3 在查詢之後可以使用session.clear 方法釋放快取 4 用資...