1. Nmon性能監控
Linux和Unix最大的區別:前者是開發源代碼的自由軟件;而后者是對源代碼實行知識產權保護的傳統商業軟件。
另外兩大區別:
- UNIX系統大多是與硬件配套的,而Linux則可運行在多種硬件平台上.
- UNIX是商業軟件,而Linux是自由軟件,免費、公開源代碼的. UNIX(5萬美元)而Linux免費
如何監控Linux性能:
- Vmstat ------查看系統狀態、硬件和系統信息等
- Top ------ 查看進程活動狀態以及一些系統狀況
- iostat ------查看CPU 負載,硬盤狀況
vmstat 是個查看系統整體性能的小工具,小巧、即使在很 heavy 的情況下也運行良好,並且可以用時間間隔采集得到連續的性能數據。
參數介紹:
- r,可運行隊列的線程數,這些線程都是可運行狀態,只不過 暫時未執行;
- b,被阻塞( blocked) 的進程數,正在等待 IO 請求;
- in,被處理過的中斷數
- cs,系統上正在做上下文切換的數目
- us,用戶占用 CPU 的百分比
- sys,內核和中斷占用 CPU 的百分比
- wa,所有可運行的線程被 blocked 以后都在等待 IO,這時候 CPU 空閑的百分比
- id,CPU 完全空閑的百分比
- swpd,已使用的 SWAP 空間大小,KB 為單位;
- free,可用的物理內存大小,KB 為單位;
- buff,物理內存用來緩存讀寫操作的 buffer 大小,KB 為單位;
- cache,物理內存用來緩存進程地址空間的 cache 大小,KB 為單位;
- si,數據從 SWAP 讀取到 RAM(swap in)的大小,KB 為單位;
- so,數據從 RAM 寫到 SWAP(swap out)的大小,KB 為單位;
- bi,磁盤塊從文件系統或 SWAP 讀取到 RAM(blocks in)的大小,block 為單位;
- bo,磁盤塊從 RAM 寫到文件系統或 SWAP(blocks out)的大小,block 為單位;
分清不同系統的應用類型很重要,通常應用可以分為兩種類型:
IO 相關,IO 相關的應用通常用來處理大量數據,需要大量內存和存儲,頻繁 IO 操作讀寫數據,而對 CPU 的要求則較少,大部分時間CPU 都在等待硬盤,比如,數據庫服務器、文件服務器等。
CPU 相關,CPU 相關的應用需要使用大量 CPU,如高並發的 web/mail 服務器、圖像/視頻處理、科學計算等都可視作 CPU 相關的應用。
實例,第1個是文件服務器拷貝一個大文件時表現出來的特征,第2個是 CPU 做大量計算時表現出來的特征:
上面兩個例子最明顯的差別就是 id 一欄,代表 CPU 的空閑率,拷貝文件時候 id 維持在 50% 左右,CPU 大量計算的時候 id 基本為 0。
性能檢測CPU:
CPU 的占用主要取決於CPU 上執行的事務類型,如拷貝文件通常占用較少 CPU,因為大部分工作是由 DMA(Direct Memory Access)完成,只是在完成拷貝以后給一個中斷讓 CPU 知道拷貝已經完成;但科學計算通常占用較多的 CPU,大部分計算工作都需要在 CPU 上完成,內存、硬盤等子系統只做暫時的數據存儲工作。
准備知識-----操作系統基本知識,如:中斷、進程調度、進程上下文切換、可運行隊列等。
測試CPU的參考依據:
通常系統能到達以下目標:
CPU 利用率:如果 CPU 有 100% 利用率,那么應該到達這樣一個平衡:65%-70% User Time,30%-35% System Time,0%-5% Idle Time;
上下文切換:上下文切換應該和 CPU 利用率聯系起來看,如果能保持上面的 CPU 利用率平衡,大量的上下文切換是可以接受的;
可運行隊列:每個可運行隊列不應該有超過1-3個線程(每處理器),比如:雙處理器系統的可運行隊列里不應該超過6個線程。
實例分析:
從上面的數據可以看出幾點:
- Interrupts(in)非常高,context switch(cs)比較低,說明 CPU 一直在不停的請求資源;
- system time(sy)一直保持在 80% 以上,而且上下文切換較低(cs),說明某個進程可能一直占用 CPU;
- run queue(r)剛好在4個。
性能檢測Memory:
這里的“內存”包括物理內存和虛擬內存。
虛擬內存(Virtual Memory)把計算機的內存空間擴展到硬盤,物理內存(RAM)和硬盤的一部分空間(SWAP)組合在一起作為虛擬內存為計算機提供了一個連貫的虛擬內存空間;
優點:內存 ”變多了“,可以運行更多、更大的程序;
缺點:把部分硬盤當內存用整體性能受到影響,硬盤讀寫速度要比內存慢幾個數量級,並且 RAM 和 SWAP 之間的交換增加了系統的負擔。
SWAP:
是LINUX下的虛擬內存分區,它的作用是在物理內存用完之后,將磁盤空間(也就是SWAP分區)虛擬成內存來使用.
需要注意的是,雖然這個SWAP分區能夠作為“虛擬”的內存,但它的速度比物理內存要慢很多
大小一般設為物理內存的2倍
案例分析:
某一天,一個客戶打電話來需要技術幫助,並抱怨平常15秒就可以打開的網頁現在需要20分鍾才可以打開( RedHat ).
性能分析步驟
首先使用vmstat 查看大致的系統性能情況,如下圖所示:
分析:
- 不會是內存不足導致,因為swap 始終沒變化(si 和 so).盡管空閑內存不多(free),但swpd 也沒有變化.
- CPU 方面也沒有太大問題,盡管有一些運行隊列(procs r),但處理器還始終有50% 多的idle(CPU id).
- 有太多的上下文切換(cs)以及disk block從RAM中被讀入(bi).
- CPU 還有平均20% 的I/O 等待情況.
結論: 從以上總結出,這是一個I/O 瓶頸.