您好,登錄后才能下訂單哦!
[root@localhost ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 418416 7392 36796 0 0 37 2 34 22 0 2 97 1 0 [root@localhost ~]# vmstat 1 //每一秒顯示一次 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 418416 7400 36796 0 0 36 2 34 21 0 2 97 1 0 0 0 0 418408 7400 36796 0 0 0 0 14 9 0 0 100 0 0
r run 可以理解為1秒鐘之內有幾個進程占用CPU
b 等待資源(磁盤或內存)的進程數,b越大磁盤壓力越大
swpd 有多少塊被交換了(當內存不夠的時候),當數值不大且固定可以不用管
free 有多少剩余的內存,單位是K
buffer 緩沖,從內存讀出來放入磁盤中
cache 緩存,從磁盤讀出來放入內存當中
si 寫入內存
so 從內存讀出來
bi 讀磁盤,寫進內存
bo 從內存讀出來,寫入磁盤
in
cs 上下文切換次數
us用戶態的進程
sy系統態的進程
id CPU處于空閑的百分比
wa 輸入輸出等待所占CPU的包粉筆
st 被偷走cpu的百分比
iostat通過觀察設備的活躍時間和他們平均傳輸率之間的關系來監視系統的輸入/輸出設備負載。iostat生成的報告可以用于修改系統配置從而更好在物理硬盤間平衡輸入/輸出的報告。
yum install sysstat
要運行它,只需在控制臺下輸入iostat
%user : 顯示了在執行用戶(應用)層時的CPU利用率
%nice : 顯示了在以nice優先級運行用戶層的CPU利用率
%system : 顯示了在執行系統(內核)層時的CPU利用率
%iowait : 顯示了CPU在I/O請求掛起時空閑時間的百分比
%steal : 顯示了當hypervisor正服務于另外一個虛擬處理器時無意識地等待虛擬CPU所占有的時間百分比。
%idle : 顯示了CPU在I/O沒有掛起請求時空閑時間的百分比
Device : 列出的/dev 目錄下的設備/分區名稱
tps : 顯示每秒傳輸給設備的數量。更高的tps意味著處理器更忙。
Blk_read/s : 顯示了每秒從設備上讀取的塊的數量(KB,MB)
Blk_wrtn/s : 顯示了每秒寫入設備上塊的數量(KB,MB)
Blk_read : 顯示所有已讀取的塊
Blk_wrtn : 顯示所有已寫入的塊
默認上,iostat以B為單位衡量I/O系統。為了更便于閱讀,我們可以iostat將報告轉換成以KB或者MB為單位。只需要加入-k參數來創建以KB為單位,-m參數來創建以MB為單位。
要擴展報告,我們可以在iostat后面跟上-x選項
rrqm/s: 每秒這個設備相關的讀取請求有多少被Merge(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合并Merge)。
wrqm/s: 每秒這個設備相關的寫入請求有多少被Merge了。
r/s: 每秒讀取設備的量。
w/s:每秒寫設備的量。
rsec/s: 每秒讀取的扇區數。
wsec/s: 每秒寫入的扇區數。
avgqu-sz: 平均每次設備I/O操作的數據大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O隊列長度.即 delta(aveq)/s/1000 (因為aveq的單位為毫秒).
await:平均每次設備I/O操作的等待時間 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次設備I/O操作的服務時間 (毫秒).即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的.即 delta(use)/s/1000 (因為use的單位為毫秒)
如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸.
idle小于70% IO壓力就較大了,一般讀取速度有較多的wait.同時可以結合vmstat 查看查看b參數(等待資源的進程數)和wa參數(IO等待所占用的CPU時間的百分比,高過30%時IO壓力高),另外 await 的參數也要多和 svctm 來參考.差的過高就一定有 IO 的問題.
avgqu-sz 也是個做 IO 調優時需要注意的地方,這個就是直接每次操作的數據的大小,如果次數多,但數據拿的小的話,其實 IO 也會很小.如果數據拿的大,才IO 的數據會高.也可以通過 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是講,讀定速度是這個來決定的.
和vmstat一樣,作為一個統計工具,最好帶延遲參數來使用它。通過延遲參數,我們可以看到趨勢。這里有一些帶延時運行iostat的示例。
[root@SERVER-Test ~]# iostat -d sda1 sda2 2 3 Linux 2.6.32-358.18.1.el6.x86_64 (SERVER-Test) 2014年04月08日 _x86_64_ (4 CPU) Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda1 0.00 0.39 0.01 3078694 46236 sda2 18.73 94.97 992.08 742920998 7760567792 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda1 0.00 0.00 0.00 0 0 sda2 3.50 0.00 60.00 0 120 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda1 0.00 0.00 0.00 0 0 sda2 4.50 4.00 116.00 8 232
iostat使用這些文件來創建報告。
/proc/stat 包含了系統統計
/proc/partitions 包含磁盤統計
/proc/diskstats 包含磁盤統計
/sys 包含塊設備統計
vmstat用于監視內存使用,iostat用于監視CPU使用率和I/O系統,這樣我們就有了完整的工具來監視你機器中三個重要的組件。在控制臺下輸入man iostat就可進入iostat手冊界面。
[root@SERVER-Test ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 5 861712 280288 496656 19368480 0 0 12 124 1 0 3 1 95 2 0 [root@SERVER-Test ~]#
輸出信息簡介
r: 運行的和等待運行的進程數,這個值也可以判斷是否需要增加CPU(長期大于1)
b: 處于不可中斷狀態的進程數,常見的情況是由IO引起的
w: 被交換出去的可運行的進程數。此數由 linux 計算得出,但 linux 并不耗盡交換空間
Memory
swpd: 虛擬內存使用情況(默認以KB為單位),如果 swpd 的值不為0,或者還比較大,比如超過100M了,但是 si, so 的值長期為 0,這種情況我們可以不用擔心,不會影響系統性能。
free: 空閑的內存,單位KB
buff: 被用來做為緩存的內存數,單位:KB
cache: 作為page cache的內存, 文件系統的cache,如果 cache 的值大的時候,說明cache住的文件數多,如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IO bi 會非常小。
Swap
si: 從磁盤交換到內存的交換頁數量,單位:KB/秒
so: 從內存交換到磁盤的交換頁數量,單位:KB/秒
內存夠用的時候,這2個值都是0,如果這2個值長期大于0時,系統性能會受到影響。磁盤IO和CPU資源都會被消耗。(常有人看到空閑內存(free)很少或接近于0時,就認為內存不夠用了,實際上不能光看這一點的,還要結合si,so,如果free很少,但是si,so也很少(大多時候是0),那么不用擔心,系統性能這時不會受到影響的。)
IO
bi: 發送到塊設備的塊數,單位:塊/秒
隨機磁盤讀寫的時候,這2個值越大(如超出1M),能看到CPU在IO等待的值也會越大bo: 從塊設備接收到的塊數,單位:塊/秒
System
in: 每秒的中斷數,包括時鐘中斷
cs: 每秒的環境(上下文)切換次數
上面這2個值越大,會看到由內核消耗的CPU時間會越多.
CPU 按 CPU 的總使用百分比來顯示
us:用戶進程消耗的CPU時間百分比,值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超過50% 的使用,那么我們就該考慮優化程序算法或者進行加速了
sy: CPU 系統使用時間,內核進程消耗的CPU時間百分比,值高時,說明系統內核消耗的CPU資源多,這并不是良性的表現,我們應該檢查原因。
id: 閑置時間
wa: IO等待消耗的CPU時間百分比,值高時,說明IO等待比較嚴重,這可能是由于磁盤大量作隨機訪問造成,也有可能是磁盤的帶寬出現瓶頸(塊操作)。
Linux操作系統下如何正確查看Raid信息
有些情況下系統不是自己裝的,raid也不是自己配置的,遠程登錄系統后可能就不知道系統是否有做raid,raid級別?因此稍微總結一下Linux下查看軟、硬raid信息的方法。
軟件raid:只能通過Linux系統本身來查看
cat /proc/mdstat
可以看到raid級別,狀態等信息。
硬件raid: 最佳的辦法是通過已安裝的raid廠商的管理工具來查看,有cmdline,也有圖形界面。如Adaptec公司的硬件卡就可以通過下面的命令進行查看:
# /usr/dpt/raidutil -L all
可以看到非常詳細的信息。
當然更多情況是沒有安裝相應的管理工具,只能依靠Linux本身的話一般我知道的是兩種方式:
# dmesg |grep -i raid
# cat /proc/scsi/scsi
顯示的信息差不多,raid的廠商,型號,級別,但無法查看各塊硬盤的信息。
另外經過實際測試,Dell的服務器可以通過命令來顯示,而HP、IBM等的服務器通過上面的命令是顯示不出的。只能夠通過裝硬件廠商的管理工具來查看。
使用MegaCli等工具查看Raid磁盤陣列狀態
命令使用:
MegaCli -LDInfo -Lall -aALL 查raid級別
MegaCli -AdpAllInfo -aALL 查raid卡信息
MegaCli -PDList -aALL 查看硬盤信息
MegaCli -AdpBbuCmd -aAll 查看電池信息
MegaCli -FwTermLog -Dsply -aALL 查看raid卡日志
MegaCli常用參數介紹
MegaCli -adpCount 【顯示適配器個數】
MegaCli -AdpGetTime –aALL 【顯示適配器時間】
MegaCli -AdpAllInfo -aAll 【顯示所有適配器信息】
MegaCli -LDInfo -LALL -aAll 【顯示所有邏輯磁盤組信息】
MegaCli -PDList -aAll 【顯示所有的物理信息】
MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【查看充電狀態】
MegaCli -AdpBbuCmd -GetBbuStatus -aALL【顯示BBU狀態信息】
MegaCli -AdpBbuCmd -GetBbuCapacityInfo -aALL【顯示BBU容量信息】
MegaCli -AdpBbuCmd -GetBbuDesignInfo -aALL 【顯示BBU設計參數】
MegaCli -AdpBbuCmd -GetBbuProperties -aALL 【顯示當前BBU屬性】
MegaCli -cfgdsply -aALL 【顯示Raid卡型號,Raid設置,Disk相關信息】
atop命令使用
Atop 是一個基于 ASCII 的全屏的性能監控工具,可用來監控進程的活動時間,高亮顯示出一些過載的進程,還包括其他的一些系統指標例如:CPU、內存、交換分區、磁盤和網絡等信息。
安裝
wget http://www.atoptool.nl/download/atop-2.0.2.tar.gz tar zxvf atop-2.0.2.tar.gz cd atop-2.0.2 make && make install |
在安裝atop之后,系統會在/var/log/atop目錄下記錄atop日志文件,我們在命令行下敲入”atop"命令也可看到系統當前的運行情況.
ATOP列:該列顯示了主機名、信息采樣日期和時間點
PRC列:該列顯示進程整體運行情況
sys、usr字段分別指示進程在內核態和用戶態的運行時間
#proc字段指示進程總數
#zombie字段指示僵死進程的數量
#exit字段指示atop采樣周期期間退出的進程數量
CPU列:該列顯示CPU整體(即多核CPU作為一個整體CPU資源)的使用情況,CPU可被用于執行進程、處理中斷,也可處于空閑狀態(空閑狀態分兩種,一種是活動進程等待磁盤IO導致CPU空閑,另一種是完全空閑)
sys、usr顯示進程在內核態、用戶態所占CPU的時間比例
irq字段指示CPU被用于處理中斷的時間比例
idle字段指示CPU處在完全空閑狀態的時間比例
wait字段指示CPU處在“進程等待磁盤IO導致CPU空閑”狀態的時間比例
CPU列各個字段指示值相加結果為N00%,其中N為cpu核數。
cpu列:該列顯示某一核cpu的使用情況,各字段含義可參照CPU列,各字段值相加結果為100%
CPL列:該列顯示CPU負載情況
avg1、avg5和avg15字段:過去1分鐘、5分鐘和15分鐘內運行隊列中的平均進程數量
csw字段指示上下文交換次數
intr字段指示中斷發生次數
MEM列:該列指示內存的使用情況
tot字段指示物理內存總量
free字段指示空閑內存的大小
cache字段指示用于頁緩存的內存大小
buff字段指示用于文件緩存的內存大小
slab字段指示系統內核占用的內存大小
SWP列:該列指示交換空間的使用情況
tot字段指示交換區總量
free字段指示空閑交換空間大小
PAG列:該列指示虛擬內存分頁情況
swin、swout字段:換入和換出內存頁數
DSK列:該列指示磁盤使用情況,每一個磁盤設備對應一列,如果有sdb設備,那么增多一列DSK信息
sda字段:磁盤設備標識
busy字段:磁盤忙時比例
read、write字段:讀、寫請求數量
NET列:多列NET展示了網絡狀況,包括傳輸層(TCP和UDP)、IP層以及各活動的網口信息
XXXi? 字段指示各層或活動網口收包數目
XXXo 字段指示各層或活動網口發包數目
1)默認視圖
進入atop信息界面,我們看到的就是進程信息的默認視圖(上圖下半部分),按g鍵可以從其他視圖跳到默認視圖。
2)內存視圖
內存視圖展示了進程使用內存情況,按m鍵可進入內存視圖。
3)命令視圖(Command line)
按c鍵我們可以進入命令視圖,該視圖展示了與每個進程相對應的命令。
4)d ——磁盤相關輸出 n ——網絡相關輸出
5)atop日志
每個時間點采樣頁面組合起來就形成了一個atop日志文件,我們可以使用"atop -r XXX"命令對日志文件進行查看。
#cd /var/log/atop/ (進入atop日志所在路徑) # ll total 21832 -rw-r--r-- 1 root root 5111271 2013-06-30 00:00 atop_20140329 -rw-r--r-- 1 root root 5161400 2013-07-01 00:00 atop_20140330 # atop -r atop_20140329 (分析歷史日志文件)
對于atop日志文件的保存方式,我們可以這樣:
每天保存一個atop日志文件,該日志文件記錄當天信息
日志文件以"atop_YYYYMMDD"的方式命名
設定日志失效期限,自動刪除一段時間前的日志文件
其實atop開發者已經提供了以上日志保存方式,相應的atop.daily腳本可以在源碼目錄下找到。在atop.daily腳本中,我們可以通過修改INTERVAL變量改變atop信息采樣周期(默認為10分鐘);通過修改以下命令中的數值改變日志保存天數(默認為3天):
(sleep 3; find$LOGPATH -name'atop_*'-mtime+3?-exec rm {} \;)&
?
最后,我們修改cron文件,每天凌晨執行atop.daily腳本:
0*** root /etc/atop /atop.daily
可以參考:http://blog.jiunile.com/iftop%E3%80%81iotop%E3%80%81htop%E3%80%81atop%E4%BB%8B%E7%BB%8D.html
Linux iostat命令輸出簡要說明 http://www.linuxidc.com/Linux/2013-06/86703.htm
Linux iostat命令 http://www.linuxidc.com/Linux/2013-03/80163.htm
Linux iostat 命令詳解 http://www.linuxidc.com/Linux/2012-03/55736.htm
實時系統監控工具mpstat 使用詳解 http://www.linuxidc.com/Linux/2012-03/56676.htm
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。