歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux監控之系統性能

Linux監控之系統性能

日期:2017/3/3 16:37:00   编辑:關於Linux

1.內存、交換分區篇

命令:free 顯示內存及交換分區使用情況

選項:

   -b    顯示單位:字節
-k 顯示單位:K字節
-m 顯示單位:M字節
[root@localhost ~]#free
total used free shared buffers cached
Mem: 503156 491524 11632 0 17960 337760
-/+ buffers/cache: 135804 367352
Swap: 524280 60 524220

細節說明:

在Linux中內存不像Windows那樣直接被進程訪問,Linux中內存會被先劃分為buffer和cache,然後再被程序訪問使用。

以上輸出Mem行中:

totoal : 503156表示本機所有內存總和

used : 491524表示被劃分為buffer和cache的總和,即可以被程序使用的總容量

free : 11632 表示本機內存總和減去被劃分的buffer和cache總和的值,即503156-491524=11632

buffers: 內存中剩余的buffer容量(17960)

cached : 內存中剩余的cache容量(337760)

以上輸出-/+buffers/cache行中:

used : 內存實際使用情況(buffer和cache被使用的容量總和)135804=491524-17960-337760

free :內存實際剩余情況(內存未被劃分為buffer和cache的容量加buffer和cache剩余容量)

367352=11632+17960+337760

Swap行中:

524280:表示交換分區總和

60 :交換分區使用量

524220:交換分區剩余量

交換分區功能說明:交換分區將硬盤中的一部分空間拿出來當內存使用,但並不是直接就從硬盤中提取計算機指令執行。

首先電腦開啟一個程序時,先從硬盤中把程序調入內存中,由CPU從內存中執行計算機指令,但當一個程序很大時,並不是所有程序指令都需要調入內存,那些暫時並不需要的指令可以先部分的存在硬盤中,即使硬件調入內存中的指令也不需要適中在內存中存放,那些近期都不會執行到的指令也可以臨時存入硬盤及緩存中!

內存使用說明:

內存頁:為了更方便的管理內存,系統會把內存劃分成一塊一塊的區域,這個區域又被稱為頁,Linux內存頁一般為4096字節

活動內存(active memory):活動指正在被使用的數據或最近使用的數據存放的內存區域

非活動內存(inactive memory):一個程序執行結束後,經過一段時間後可能還會再次被調用,系統可以把所需數據放入非活動內存中,而不是放入硬盤,這樣下次再次執行程序時可以很快地調用所需數據

命令:vmstat 查看內存、進程、頁等信息

選項:

-a 是否顯示活動內存與非活動內存信息

-f

[root@localhost ~]cat /proc/meminfo 該命令的具體含義可以自行探索,在此不再贅述

2.硬盤信息

命令:iostat 顯示CPU狀態以及設備與分區的IO(輸入與輸出)狀態,運行該命令需要安裝sysstat軟件包
語法:

iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -n ] [ -h ] [

device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ]

選項:

   -c            僅顯示CPU狀態,不與-d同用
-d 僅顯示設備分區狀態,不與-c同用
-k 顯示單位為K字節
-m 顯示單位為M字節
-n 顯示NFS共享分區信息,僅對2.6.17以上內核可用,不與-x同用
-h 人性化顯示NFS共享信息
-p [{ device | ALL }] 僅顯示某塊設備狀態還是顯示所有(iostat -p sda | iostat -p ALL)
-t 顯示報告的時間
-x 顯示擴展信息
-V 顯示該軟件版本號
interval 為統計狀態間隔時間
count 為統計次數(iostat 5 5 每個5秒統計一次,總共統計5次)

實例:

   iostat  -c
iostat -d
iostat -x
iostat -d 5 5

輸出信息說明:

CPU統計信息格式:

   %user        CPU執行用戶態程序的時間百分比(注:CPU執行指令分為兩種模式:用戶模式,內核模式)
%nice CPU執行被設置了nice優先級的用戶態程序的時間百分比
%system CPU執行系統態(內核態)進程的百分比
%iowait CPU空閒下來等待請求IO設備完成的時間百分比
%steal Hypervisor分配給運行在其它虛擬機上的任務的實際CPU時間
%idle CPU空閒且沒有IO請求的時間百分比
CPU統計信息格式:
Device 設備或分區名稱
tps 每秒數據傳輸次數,一次傳輸可以看成是一次IO請求,單次傳輸大小不定
Blk_read/s 每秒讀取的數據塊(單位block),單個block大小在格式化時定義
Blk_wrtn/s 每秒寫入的數據塊(單位block),單個block大小在格式化時定義
Blk_read 開機後讀取數據塊總和
Blk_wrtn 開機後讀取數據塊總和
kB_read/s 每秒讀取的數據(單位K字節)
kB_wrtn/s 每秒寫入的數據(單位K字節)
kB_read 開機後讀取的數據總和(單位K字節)
kB_wrtn 開機後寫入的數據總和(單位K字節)
MB_read/s 每秒讀取的數據(單位M字節)
MB_wrtn/s 每秒寫入的數據(單位M字節)
MB_read 開機後讀取的數據總和(單位M字節)
MB_wrtn 開機後寫入的數據總和(單位M字節)
rrqm/s 每秒讀請求合並的數量(備注:為了更高效的使用IO設置,對硬盤的讀或寫操作的請求可以被合並,如兩個4K的讀 請求可以合並為一個8K的讀請求。)
wrqm/s 每秒寫請求合並的數量
r/s 每秒讀請求的數量
w/s 每秒寫請求的數量
rsec/s 每秒從硬盤中讀取多少個扇區中的數據
wsec/s 每秒往硬盤的多少個扇區中寫入數據
rkB/s 每秒從硬盤中讀取多少個K字節的數量
wkB/s 每秒往硬盤中寫入多少個K字節的數量
rMB/s 每秒從硬盤中讀取多少個M字節的數量
wMB/s 每秒往硬盤中寫入多少個M字節的數量
avgrq-sz IO請求的讀寫的平均大小(扇區)
avgqu-sz IO請求隊列的平均長度
await IO請求的平均等待時間(毫秒)
svctm 單個IO請求的平均服務時間(完成單個IO的平均時間)
%util CPU完成IO請求的時間比
rops/s 掛載點每秒讀操作的數量
wops/s 掛載點每秒寫操作的數量

實例:

  #dd  if=/dev/zero  of=/tmp/test  bs=100M  count=1    注:寫入一個100M的文件
#iostat -x 1 3 >> /tmp/out 注:每隔1秒監控一次,共監控10次,將結果導出至文件

#Linux 2.6.18-164.el5 (localhost.localdomain) 01/15/2012

#avg-cpu: %user %nice %system %iowait %steal %idle
# 1.38 0.65 2.79 8.08 0.00 87.11

#Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
#sda 5.02 34.19 12.65 3.68 463.99 302.96 46.96 0.29 17.46 4.86 7.94
#sda1 0.21 0.00 0.07 0.00 0.56 0.01 8.11 0.00 7.37 4.91 0.03
#sda2 4.80 34.18 12.58 3.68 463.36 302.95 47.14 0.28 17.51 4.87 7.92
#dm-0 0.00 0.00 17.30 37.87 463.07 302.92 13.89 1.38 25.08 1.43 7.91
#dm-1 0.00 0.00 0.03 0.00 0.22 0.03 8.00 0.00 16.36 3.75 0.01
#hdc 2.75 0.00 0.23 0.00 11.95 0.00 51.24 0.00 3.32 2.85 0.07

#avg-cpu: %user %nice %system %iowait %steal %idle
# 5.56 0.00 94.44 0.00 0.00 0.00

#Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
#sda 0.00 28444.44 33.33 322.22 1422.22 214222.22 606.50 2.12 5.53 1.77 62.78
#sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
#sda2 0.00 28444.44 33.33 322.22 1422.22 214222.22 606.50 2.12 5.53 1.77 62.78
#dm-0 0.00 0.00 33.33 28783.33 1422.22 230266.67 8.04 124.93 3.93 0.02 59.44
#dm-1 0.00 0.00 0.00 5.56 0.00 44.44 8.00 0.04 7.00 7.00 3.89
#hdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

#avg-cpu: %user %nice %system %iowait %steal %idle
# 0.00 0.00 100.00 0.00 0.00 0.00

#Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
#sda 0.00 27936.36 0.00 363.64 0.00 252436.36 694.20 1.75 5.47 1.40 50.91
#sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
#sda2 0.00 27936.36 0.00 363.64 0.00 252436.36 694.20 1.75 5.47 1.40 50.91
#dm-0 0.00 0.00 0.00 28263.64 0.00 226109.09 8.00 147.69 5.90 0.02 50.91
#dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
#hdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

說明:

第一次輸出(對sda而言):

每秒合並了5.02個讀請求,每秒合並了34.19個寫操作

每秒有12.65個讀請求,每秒有3.68個寫請求

每秒讀取了463.99個扇區的數據(一個扇區512字節),每秒寫入了302.96個扇區的數據

每秒平均有46.96個讀請求,平均隊列長度為0.29

IO請求的平均等待時間17.46ms

本文出自 “丁丁歷險” 博客,請務必保留此出處http://manual.blog.51cto.com/3300438/785340

Copyright © Linux教程網 All Rights Reserved