摘要
效能工具:系統cpu
本章概述了系統級的linux效能工具。這些工具是你追蹤效能問題時的第一道防線。它們能展示整個系統的效能情況和哪些部分表現不好。本章將討論這些工具可以測量的統計資訊,以及如何使用各種工具收集這些統計結果。閱讀本章後,你將能夠:
理解系統級效能的基本指標,包括cpu的使用情況。
明白哪些工具可以檢索這些系統級效能指標。
2.1 cpu效能統計資訊
每一種系統級linux效能工具都提供了不同的方式來提取相似的統計結果。雖然沒有工具能顯示全部的資訊,但是有些工具顯示的是相同的統計資訊。為了不多次(每種工具一次)解釋統計資訊的含義,我們在描述所有工具之前對這些資訊進行一次性說明。
2.1.1 執行佇列統計
在linux中,乙個程序要麼是可執行的,要麼是阻塞的(正在等待乙個事件的完成)。阻塞程序可能在等待的是從i/o裝置來的資料,或者是系統呼叫的結果。如果程序是可執行的,那就意味著它要和其他也是可執行的程序競爭cpu時間。乙個可執行的程序不一定會使用cpu,但是當linux排程器決定下乙個要執行的程序時,它會從可執行程序佇列中挑選。如果程序是可執行的,同時又在等待使用處理器,這些程序就構成了執行佇列。執行佇列越長,處於等待狀態的程序就越多。
效能工具通常會給出可執行的程序個數和等待i/o的阻塞程序個數。另一種常見的系統統計是平均負載。系統的負載是指正在執行和可執行的程序總數。比如,如果正在執行的程序為兩個,而可執行的程序為三個,那麼系統負載就是5。平均負載是給定時間內的負載量。一般情況下,取平均負載的時間為1分鐘、5分鐘和15分鐘。這能讓你觀察到負載是如何隨時間變化的。
2.1.2 上下文切換
大部分現代處理器一次只能執行乙個程序或執行緒。雖然有些處理器(比如超執行緒處理器)實際上可以同時執行多個程序,但是linux會把它們看作多個單執行緒處理器。如果要製造出給定單處理器同時執行多個任務的假象,linux核心就要不斷地在不同的程序間切換。這種不同程序間的切換稱為上下文切換,因為當其發生時,cpu要儲存舊程序的所有上下文資訊,並取出新程序的所有上下文資訊。上下文中包含了linux跟蹤新程序的大量資訊,其中包括:程序正在執行的指令,分配給程序的記憶體,程序開啟的檔案等。這些上下文切換涉及大量資訊的移動,因此,上下文切換的開銷可以是相當大的。儘量減少上下文切換的次數是個好主意。
要避免上下文切換,重要的一點是了解它們是如何發生的。首先,上下文切換可以是核心排程的結果。為了保證公平地給每個程序分配處理器時間,核心周期性地中斷正在執行的程序,在適當的情況下,核心排程器會決定開始另乙個程序,而不是讓當前程序繼續執行。每次這種週期性中斷或定時發生時,你的系統都可能進行上下文切換。每秒定時中斷的次數與架構和核心版本有關。乙個檢查中斷頻率的簡單方法是用/proc/interrupts檔案,它可以確定已知時長內發生的中斷次數。如清單2.1所示。
清單2.1
在清單2.1中,我們要求核心給出定時器啟動的次數,等待10秒後,再次請求。這就是說,在這台機器上定時器啟動頻率為(24 070 093-24 060 043)中斷/(10秒)或者約1000次中斷/秒。如果你的上下文切換明顯多於定時器中斷,那麼這些切換極有可能是由i/o請求或其他長時間執行的系統呼叫(如休眠)造成的。當應用請求的操作不能立即完成時,核心啟動該操作,儲存請求程序,並嘗試切換到另乙個已就緒程序。這能讓處理器盡量保持忙狀態。
2.1.3 中斷
此外,處理器還周期性地從硬體裝置接收中斷。當裝置有事件需要核心處理時,它通常就會觸發這些中斷。比如,如果磁碟控制器剛剛完成從驅動器取資料塊的操作,並準備好提供給核心,那麼磁碟控制器就會觸發乙個中斷。對核心收到的每個中斷,如果已經有相應的已註冊的中斷處理程式,就執行該程式,否則將忽略這個中斷。這些中斷處理程式在系統中具有很高的執行優先順序,並且通常執行速度也很快。有時,中斷處理程式有工作要做,但是又不需要高優先順序,因此它可以啟動「下半部」(bottom half),也就是所謂的軟中斷處理程式。如果有很多中斷,核心會花大量的時間服務這些中斷。檢視/proc/interrupts檔案可以顯示出哪些cpu上觸發了哪些中斷。
2.1.4 cpu使用率
cpu使用率是個簡單的概念。在任何給定的時間,cpu可以執行以下七件事情中的乙個:
(1)cpu可以是空閒的,這意味著處理器實際上沒有做任何工作,並且等待有任務可以執行。
(2)cpu可以執行使用者**,即指定的「使用者」時間。
(3)cpu可以執行linux核心中的應用程式**,這就是「系統」時間。
(4)cpu可以執行「比較友好」的或者優先順序被設定為低於一般程序的使用者**。
(5)cpu可以處於iowait狀態,即系統正在等待i/o(如磁碟或網路)完成。
(6)cpu可以處於irq狀態,即它正在用高優先順序**處理硬體中斷。
(7)cpu可以處於softirq模式,即系統正在執行同樣由中斷觸發的核心**,只不過其執行於較低優先順序(下半部**)。
此情景出現的條件為:發生裝置中斷時,而核心在將其移交給使用者空間之前必須對其進行一些處理(比如,處理網路包)。
大多數效能工具將這些數值表示為佔cpu總時間的百分比。這些時間的範圍從0%到100%,但全部三項加起來等於100%。乙個具有高「系統」百分比的系統表明其大部分時間都消耗在了核心上。像oprofile一樣的工具可以幫助確定時間都消耗在了**。具有高「使用者」時間的系統則將其大部分時間都用來執行應用程式。下一章展示在上述情況下,如何用效能工具追蹤問題。如果系統在應該工作的時候花費了大量的時間處於iowait狀態,那它很可能在等待來自裝置的i/o。導致速度變慢的原因可能是磁碟、網絡卡或其他裝置。
Linux效能優化 CPU優化(二)
cpu 使用率,就是除了空閒時間外的其他時間佔總 cpu 時間的百分比,用公式來表示就是 為了計算 cpu 使用率,效能工具一般都會取間隔一段時間 比如 3 秒 的兩次值,作差後,再計算出這段時間內的平均 cpu 使用率,即 工具 工具 perflinux 2.6.31 以後內建的效能分析工具。它以...
unity效能優化 CPU
影響效能的因素 對於乙個遊戲來說,有兩種主要的計算資源 cpu和gpu,它們會互相合作,來讓我們的遊戲可以在預期的幀率和解析度下工作。cpu負責其中的幀率,gpu主要負責解析度相關的一些東西。本篇會介紹cpu的優化技巧 作用 計算。主要是在蒙皮骨骼計算,布料模擬,頂點動畫,粒子模擬等,還有在各種頂點...
cpu效能優化手段
1 cpu優化 快取 為了提高程式的執行的效能,現代cpu在很多方面對程式進行優化 例如 cpu的快取記憶體,盡可能的避免處理器訪問主記憶體的時間開銷,處理器大多會利用快取來提高效能 cpu快取分為 快取 l1 一級快取是cpu第一層快取記憶體 分為資料快取和指令快取 一般伺服器的cpu在32 4....