1、前言
前面咱們談了的內容以下:緩存
(1)Linux性能調優之Linux進程管理bash
(2)Linux性能調優之Linux內存體系服務器
(3)Linux性能調優之Linux文件系統網絡
(4)Linux性能調優之磁盤I/O子系統工具
(5)Linux性能調優之網絡子系統post
這一節咱們將談下Linux的性能指標。性能
2、概覽
在咱們學習各種調優參數和性能分析工具以前,咱們先理解各個衡量指標和它們在系統性能 中所表示的含義。由於Linux是開源操做系統,因此它有不少性能測試工具。你最終選擇的工 具,是根據你的偏好和具體需求來決定的。儘管有不少工具可用,可是它們所衡量的指標是 同樣的,因此理解了指標,你可使用任何工具。學習
3、處理器指標
處理器指標以下:測試
- CPU利用率(CPU utilization) 這個多是最直接的指標,它全面展現了每一個處理器的利用率。通常狀況下,若是CPU利用率持續高於80%,就可能遇到了處理器瓶頸。
- 用戶時間(User time) 表示CPU在用戶進程上的時間百分比,包括nice時間。用戶時間值高是一個較好的狀 態,在這種狀況下,系統在處理真正的任務。
- 系統時間(System time) 表示CPU花在內核操做上的時間百分比,包括IRQ和softirq時間。持續的高系統時間多是網絡和驅動棧的瓶頸。CPU花在內核上的時間越少越好。
- 等待(Waiting) CPU花在等待I/O操做上的時間總和。相似blocked值,系統不該該把大量時間花在等待 I/O操做上;不然,你應該調查I/O子系統的性能。
- 空閒時間(Idle time) 表示系統處於空閒等待任務的時間比。
- Nice時間(Nice time) 表示CPU花在re-nicing進程,改變進程執行順序和優先級上的時間。
- 平均負載(Load average) 平均負載不是百分比,是下面的和的滾動平均值:
1.在隊列中等待被處理的進程數
2.等待非中斷任務完成的進程數
複製代碼
是TASK_RUNNING和TASK_UNINTERRUPTIBLE的和的平均值。若是進程請求 CPU時間被阻塞(表示CPU沒有時間處理它們),平均負載就會升高。另外一方面, 若是每一個進程直接就能得到CPU時間而且沒有CPU週期丟失,負載就會降下來。spa
- 可運行進程(Runable processes) 表示已經準備好要執行的進程。這個值不該該持續超過CPU個數的10倍,不然就是出現 了CPU瓶頸。
- 阻塞的(Blocked) 在等待I/O操做完成的時候,進程不能執行。阻塞進程能夠指出你的I/O瓶頸。
- 上下文切換(Context switch) 系統上有大量的切換在線程間發生,在有大量中斷和上下文切換髮生時,表示驅動或應 用程序出現了問題。通常來講,上下文切換不是好現象,由於CPU緩存須要刷新,可是 有些上下文切換是必要的。
- 中斷(Interrupts) 中斷值包含硬中斷和軟中斷。硬中斷對系統性能有更大的影響。高中斷值指示了軟件瓶 頸,不管是內核仍是驅動程序層面的。記住中斷值包含CPU時鐘引發的中斷。
4、內存指標
以下是內存度量值:
- 空閒內存(Free memory) 和其它操做系統相比,不該該過度擔憂Linux內存的問題。在「虛擬內存管理」一節中已經 說過,Linux把大部分沒用到的內存做爲文件系統緩存,因此計算空閒內存的時候還得加 上已用內存中的緩衝(buffer)和緩存(cache)大小。
- Swap利用率(Swap usage) 這個數值代表已經使用的swap的空間。如「虛擬內存管理」一節中所說的那樣,swap使用 率只是代表Linux的內存管理有多麼高效。Swap In/Out纔是識別內存瓶頸的手段,長時間 每秒200到300以上的swap in/out次數代表可能出現內存瓶頸。
- 緩衝和緩存(Buffer and cache) cache被用做文件系統緩存和塊設備緩存。
- Slabs 描述內核的內存使用量。注意,內核頁不能page out到磁盤。
- 活動和非活動內存 提供關於系統中活動的內存信息。非活動內存是可能由kswapd守護進程交換到磁盤的候 選。
5、網絡指標
如下是網絡指標:
- 接收和發送的包(Packets received and sent) 這個指標告訴你指定網絡接口的接收和發送網絡包的數量。
- 接收和發送的字節(Bytes received and sent) 這個值是指定網卡的發送和接收的字節數。
- 每秒碰撞(collisions per second) 這個值提供了各個網絡接口所鏈接網絡的所發生的衝突數量。持續的衝突多是因爲網 絡基礎設施致使的,而不是服務器。在大多數正確配置的網絡中,碰撞不多發送,除非 網絡是由集線器組成的。
- 丟包 這是被內核丟棄的包的數量,多是防火牆配置致使的,也多是因爲缺乏網絡緩衝。
- 過載(Overruns) 過載表示網絡接口用光緩衝空間的次數。這個指標應該和丟包聯合起來使用,來判斷 瓶頸是由網絡緩衝仍是網絡隊列長度致使的。
- 錯誤(Errors) 被標識爲故障的幀數目。這一般是因爲網絡不匹配或者部分網線損壞致使的。在銅基千 兆中,部分損壞網線可能致使顯著的網絡性能問題。
6、塊設備指標
如下是塊設備的相關指標:
- IO等待(Iowait) CPU花在等待I/O操做發生上的時間。該值長時間飆高預示着可能出現了I/O瓶頸。
- 平均隊列長度(Average queue length) 未完成的I/O請求數量。一般,2到3的磁盤隊列是很理想的;過高可能表示出現了I/O瓶 頸。
- 平均等待(Average wait) 一個IO請求被服務的平均等待時間,以毫秒計算。等待時間由真實的I/O操做時間和I/O隊 列的等待時間組成。
- 每秒傳輸(Transfers per second) 表示每秒有多少個I/O操做被執行(讀和寫)。transfers per second和kBytes per second 能夠聯合使用,來表示系統每秒的平均傳輸大小。平均傳輸大小一般應該和所使用的磁 盤子系統的條帶大小相匹配。
- 每秒讀寫塊(Blocks read/write per second) 在內核2.6中,它表示每秒讀取和寫入1024字節塊的數目。更早的內核,塊大小可能不一 樣,從512字節到4K字節不等。
- 每秒讀寫的千字節(Kilobytes per second read/write) 從塊設備讀和寫的千字節,表示從塊設備中讀取和寫入的實際大小。