1.
對於linux
系統來說,
free mem
很少並不一定代表記憶體不足,成為瓶頸。實際上這是由於
linux
的記憶體管理機制造成的,
linux
會把free
的記憶體(完全沒使用過的記憶體)盡可能的利用起來,作為
buffers/cached
(當有程序申請記憶體時,如果沒有
free
,會把buffers/cached
分配給程序),以提高系統的效能,尤其是在有大量
i/o的情況下,增大
buffers/cached
會很大地提高
i/o,可以提高多達
20%的
i/o效能,因此實際是
linux
的這一特性造成
free mem
幾乎沒有。當伺服器存在大量
i/o時,比較容易出現
free mem
幾乎沒有這樣的情況。
used-buffers-cached
得到的結果才是應用程式用掉的記憶體,如果這個數字已經接近或超過總的記憶體數,那麼記憶體成為瓶頸。如下圖所示:
第二行(
-/+ buffers/cache
)的used
是扣除了
buffers/cache
後的used
記憶體,這才是真正的被應用程式使用掉的記憶體(包括核心級程序和使用者級程序)。也可以通過
swap
來判斷記憶體是否是瓶頸,如果
swap
大量used
,並且頻繁的發生
swap in
和swap out
,那麼記憶體一定是瓶頸;有時用
free
會看到少量的
swap used
,這並不影響效能,記憶體不是瓶頸。ps:
buffers
和cached
的區別。兩者都是快取,都是為了提高
i/o的效能,不同的是
buffers
是塊裝置的快取,而
cached
是字元裝置的快取,簡單地說,
buffers
用來儲存目錄下面有什麼內容、什麼許可權等等,
cached
則儲存檔案的內容,例如,
ls一下,可以發現
buffers
有明顯增長(
buffers
其實一直在緩慢增長),而開啟乙個檔案後,可以發現
cached
明顯增長。
2. 現象:還沒有開始效能測試,伺服器的
load達到1
以上,cpu
使用user接近0
,sys
有些情況下也接近
0,有些情況下會達到
10%以上,用
vmstat
檢視,r
(執行佇列中的等待程序數)=0,
b(等待
i/o的程序數)
>0
原因:產生這種現象的原因很多,比如,作業系統中存在狀態為d(
uninterruptible sleep
)或狀態為z(
zombie
)的程序,這兩種程序會把系統
load
弄高(因為這兩種狀態的程序會滯留在
cpu
執行佇列中);或者系統對同乙個目錄
mount
了多次,會導致
load
公升高,sys cpu>10%
;一般都是跟
i/o相關。
判斷及解決方法:
top或者
ps afux
一下,看看程序的狀態;
df一下看看是否有重複的
mount
;vmstat
檢視一下;可以根據不同的情況採用不同的辦法來解決,由於是測試環境,最簡單有效的辦法就是
reboot
。不過有時
reboot
前也要做一些工作,比如已經
mount
了nfs
服務端上的乙個目錄,並寫入了
fstab
中,而nfs
服務端關閉了,那麼需要把
fstab
中的相應內容刪除後再
reboot
,否則reboot
後仍然會自動
mount
。
作業系統效能觀測工具
1.工具型別 效能觀測工具可以按照系統級別和程序級別來分類,多數的工具要麼基於計數器要麼基於跟蹤。我們把這些效能放在如下圖中,包括一些常見工具作為示例 有一些工具不止適合乙個象限,例如 top還有乙個系統級別的檢視,dtrace也有程序級別的能力。還有一些效能工具是基於剖析 profiling 的。...
系統效能指標
概念吞吐量 指在單位時間內系統處理的請求數,吞吐量是判斷乙個系統處理能力的常用指標 tps 每秒通過的事務數。事務 不是對頁面的一次操作,而是定義的乙個行為。eg 事務開始 登入 url 登入 事務結束 登入成功 概念指系統對請求作出響應的時間,現實中不同功能響應時間不盡相同,甚至同一功能在不同輸入...
通訊系統效能指標
1 資料傳輸速率 越高有效性越好 單位時間傳送的資料量 2 吞吐量 throughout 單位時間內通訊系統接收傳送的位元數,位元組數或幀數 3 頻帶利用率 單位頻帶內的傳輸速度,單位為 bit s hz,即每赫茲寬頻所能實現的位元率 4 協議效率 指所傳輸的資料報中,有效資料位與整個資料報長度的比...