Linux效能最佳化和監控系列(一)——top工具

來源:互聯網
上載者:User

標籤:style   使用   width   檔案   資料   問題   

解釋伺服器發生了什麼——top工具

在檢查伺服器的詳細工作效能狀態前,系統管理員需要對當前伺服器狀態有總體的瞭解. top是檢查伺服器總體狀態的強有力工具, 通過top可以擷取CPU, Memory, Process運行資訊, 如下是運行top命令後的資料顯示:

top - 20:08:09 up 10 min,  1 user,  load average: 0.00, 0.02, 0.01 Tasks: 104 total,  1 running, 103 sleeping,  0 stopped,  0 zombie Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st Mem:  3924700k total,  260016k used,  3664684k free,    13552k buffers Swap:  4063224k total,        0k used,  4063224k free,    75816k cached PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 6284 root      20  0 15028 1308 1000 R  0.3  0.0  0:00.03 top 1 root      20  0 19356 1580 1268 S  0.0  0.0  0:01.80 init 2 root      20  0    0    0    0 S  0.0  0.0  0:00.00 kthreadd 3 root      RT  0    0    0    0 S  0.0  0.0  0:00.02 migration/0 4 root      20  0    0    0    0 S  0.0  0.0  0:00.00 ksoftirqd/0 5 root      RT  0    0    0    0 S  0.0  0.0  0:00.00 migration/0 6 root      RT  0    0    0    0 S  0.0  0.0  0:00.00 watchdog/0 7 root      RT  0    0    0    0 S  0.0  0.0  0:00.03 migration/1 8 root      RT  0    0    0    0 S  0.0  0.0  0:00.00 migration/1 9 root      20  0    0    0    0 S  0.0  0.0  0:00.00 ksoftirqd/1 10 root      RT  0    0    0    0 S  0.0  0.0  0:00.00 watchdog/1

用top監控CPU效能

在用top分析伺服器效能時,首先注意的是load average, load average包括三個資訊, 分別指最後一分鐘, 最後5分鐘, 最後15分鐘系統平均效能, 該數值的錨固值(anchor value)是1.0. 對於一個單核CPU, 當錨固值達到1.0時, 系統會處於忙碌狀態, 但應用也可以正常運行, 沒有任何應用排隊等待CPU.

需要注意的是load average是系統的平均效能而不是CPU的, 有可能load average遠高於1.0, 但是CPU沒有做任何工作, 如系統忙於等待I/O.

使系統總是工作在anchor value為1.0也許很好, 但也許沒有必要, 因此在判斷系統工作在anchor value為1.0時是好是壞之前, 需要系統管理員更加深入的瞭解特定工作量. 比如對於如下兩個任務:

Task 1: while true; do true; done

Task 2: dd if=/dev/sda of=/dev/null

當執行Task 1時, Task 1會使CPU的一個核使用率達到100%, anchor value值也會超過1.0, 如果系統CPU只有一個核, 那麼系統會處於完全忙碌狀態, 這時新的進程不會再開始, 會被放入隊列中排隊, 直到有閒置CPU資源.

當執行Task 2時, Task 2也會使anchor value大於或等於1.0, 但是這時該任務只是在等待I/O資源, CPU任然可以繼續給其他進程使用.

如果系統CPU非常忙碌, 你需要通過top命令的CPU行深入的分析系統正在做什麼, CPU行提供如下CPU效能資訊:

us us表示user space負載, 通常運行在user space下的應用程式由終端使用者啟動, 不以root許可權運行, 如果us負載高, 這意味著應用程式消耗CPU高.
sy sy表示system space負載, 通常運行在system space下的進程由作業系統核心調用, 正常情況下sy不會很高.
ni ni表示已經啟動的用nice命令調整的任務數.
id id表示CPU閒置時間.
wa wa表示CPU正在等待I/O, 如果wa連續大於30, 這表示關聯storage和network的I/O channel有問題,需要檢查network和storage的效能問題.
hi hi表示CPU用在處理硬體終端的時間.
si si跟軟體中斷有關, 通常是些由核心建立的低優先順序軟體終端, 幾乎很少會遇到si使用率很高.
st st跟一個被虛擬化使用的環境有關, 在某些虛擬化環境中, 虛擬機器會宿主作業系統偷取CPU時間, 如果這種情況發生, st會有使用率, 若使用率很高, 需考慮從伺服器卸載虛擬機器.

用top監控記憶體效能

top命令的Mem行跟記憶體和交換分區有關, Mem行包括五個參數:

total 伺服器總的實體記憶體.
used 當前使用的總得記憶體, 包括buffers和cache.
free 當前沒有使用的記憶體.
buffers buffer跟伺服器使用的write cache有關, 也包括檔案系統表和一些伺服器需要放在記憶體的結構. 所有需要寫到磁碟的資料首先寫到write cache, 從終端使用者的角度來看, 使用者使用的應用程式不需要等待資料寫入. 如果系統需要更多的記憶體, 而不能從free的記憶體配置時, write cache能被重新整理, 然後將write cache使用的記憶體給其他應用程式使用. 總之, buffer使系統變得更快.
cached 當使用者從伺服器請求檔案時,通常檔案需要從磁碟讀取, 由於磁碟比記憶體大約慢1000倍, 因此每次從磁碟擷取檔案後都放到cache來加速下次讀取該檔案. 如果分配給cahce的記憶體需要給其他應用程式使用, cache可以被立即釋放加入到free記憶體中以便使用. 對於那些讀次數多的伺服器,cache記憶體通常很高,如果cache記憶體低於總記憶體的40%, 那麼伺服器效能可能很慢, 這時需增加記憶體.
swap swap space是在硬碟上類比記憶體, 如果系統開始使用swap, 這可不好, 因為swap比記憶體大約慢1000倍. 但swap並不是總是不好, 如核心使用它把不需要的資料從記憶體移除, 以便釋放更多記憶體空間.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.