前一段時間碌冶,有人問我盅藻,Linux下如何查看CPU以及內存的使用率和詳細情況?兩眼一抹黑群嗤,沒實際去操作過菠隆,不知道命令;今天抽時間學習一下狂秘。
就說在自動化測試中吧也需要經常查看CPU的使用率骇径,最常見的是在做性能測試以及服務器測試的時候,需要分析整體運行情況者春,給出測試報告破衔;Windows Server的查看當然簡單咯,打開任務管理器钱烟,還自動繪制出折線圖晰筛,很直觀。
今天就來好好學習下Linux下如何查看CUP的使用率:
監(jiān)控CPU的性能一般包括以下3點:運行隊列拴袭、CPU使用率和上下文切換读第。
對于每一個CPU來說運行隊列最好不要超過3,例如拥刻,如果是雙核CPU就不要超過6怜瞒。如果隊列長期保持在3以上,說明任何一個進程運行時都不能馬上得到cpu的響應般哼,這時可能需要考慮升級cpu吴汪。另外滿負荷運行cpu的使用率最好是user空間保持在65%~70%,system空間保持在30%蒸眠,空閑保持在0%~5% 漾橙。
下面總結下查看CPU使用率常用的幾個命令。
1楞卡、top
這個命令很常用霜运,在第三行有顯示CPU當前的使用情況。
# top -bn 1 -i -c</pre>
如上所示臀晃,top命令可以看到總體的系統(tǒng)運行狀態(tài)和cpu的使用率 觉渴。
%us:表示用戶空間程序的cpu使用率(沒有通過nice調度)
%sy:表示系統(tǒng)空間的cpu使用率,主要是內核程序徽惋。
%ni:表示用戶空間且通過nice調度過的程序的cpu使用率案淋。
%id:空閑cpu
%wa:cpu運行時在等待io的時間
%hi:cpu處理硬中斷的數(shù)量
%si:cpu處理軟中斷的數(shù)量
%st:被虛擬機偷走的cpu
如果只輸入top的話是實時動態(tài)的:
2、vmstat
之前在本博客中有介紹過vmstat的使用险绘,詳細使用和參數(shù)介紹參考網址:http://www.sijitao.net/1925.html
# vmstat 1 5</pre>
3踢京、sar
sar命令語法和vmstat一樣誉碴。命令不存在時需要安裝sysstat包,這個包很有用瓣距。
CPU使用率
例如每1秒采集一次CPU使用率黔帕,共采集5次。(我的機器上沒裝sysstat,并且剛剛裝的時候遇到點問題蹈丸,晚上在花時間敲一遍命令)
[root@Peter ~]# sar -u 1 5
Linux 3.18.5-x86_64-linode52 (Peter) 07/20/2015 x86_64 (1 CPU)
02:41:25 PM CPU %user %nice %system %iowait %steal %idle
02:41:26 PM all 64.71 0.00 18.63 0.00 0.98 15.69
02:41:27 PM all 29.47 0.00 22.11 14.74 0.00 33.68
02:41:28 PM all 67.33 0.00 31.68 0.99 0.00 0.00
02:41:29 PM all 7.00 0.00 2.00 0.00 0.00 91.00
02:41:30 PM all 69.00 0.00 23.00 0.00 0.00 8.00
Average: all 47.79 0.00 19.48 3.01 0.20 29.52
和top一樣成黄,可以看到所有cpu的使用情況。如果需要查看某顆cpu的使用可以用-P參數(shù)逻杖。例如指定顯示0號cpu 的使用情況奋岁。
[root@Peter ~]# sar -P 0 -u 1 5
Linux 3.18.5-x86_64-linode52 (Peter) 07/20/2015 x86_64 (1 CPU)
02:45:14 PM CPU %user %nice %system %iowait %steal %idle
02:45:15 PM 0 44.00 0.00 52.00 4.00 0.00 0.00
02:45:16 PM 0 9.28 0.00 26.80 62.89 1.03 0.00
02:45:17 PM 0 3.06 0.00 14.29 81.63 1.02 0.00
02:45:18 PM 0 4.12 0.00 22.68 72.16 1.03 0.00
02:45:19 PM 0 4.12 0.00 22.68 72.16 1.03 0.00
Average: 0 13.09 0.00 27.81 58.28 0.82 0.00
進程隊列長度和平均負載狀態(tài)
例如每1秒采集一次,共采集5次荸百。
[root@Peter ~]# sar -q 1 5
Linux 3.18.5-x86_64-linode52 (Peter) 07/20/2015 x86_64 (1 CPU)
02:48:47 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
02:48:48 PM 1 133 0.34 0.43 0.41
02:48:49 PM 2 132 0.34 0.43 0.41
02:48:50 PM 1 133 0.34 0.43 0.41
02:48:51 PM 2 134 0.31 0.42 0.40
02:48:52 PM 1 133 0.31 0.42 0.40
Average: 1 133 0.33 0.43 0.41
輸出項:
runq-sz:運行隊列的長度(等待運行的進程數(shù))
plist-sz:進程列表中進程(processes)和線程(threads)的數(shù)量
ldavg-1:最后1分鐘的系統(tǒng)平均負載(System load average)
ldavg-5:過去5分鐘的系統(tǒng)平均負載
ldavg-15:過去15分鐘的系統(tǒng)平均負載
進程創(chuàng)建的平均值和上下文切換的次數(shù)
例如每1秒收集一次闻伶,共收集5次。
**[root@Peter ~]# sar -w 1 5 **
Linux 3.18.5-x86_64-linode52 (Peter) 07/20/2015 x86_64 (1 CPU)
02:54:03 PM proc/s cswch/s
02:54:04 PM 1.01 156.57
02:54:05 PM 1.00 132.00
02:54:06 PM 2.00 201.00
02:54:07 PM 2.02 126.26
02:54:08 PM 2.00 114.00
Average: 1.61 145.98
sar命令也可以獲取過去指定日期的性能參數(shù)够话。
**[root@Peter ~]# sar -u -f /var/log/sa/sa20 **
Linux 3.18.5-x86_64-linode52 (Peter) 07/20/2015 x86_64 (1 CPU)
01:10:01 PM CPU %user %nice %system %iowait %steal %idle
01:20:02 PM all 25.78 0.00 8.88 3.59 0.15 61.60
01:30:01 PM all 26.06 0.00 9.96 3.33 0.10 60.55
01:40:01 PM all 25.73 0.00 9.17 3.70 0.09 61.32
01:50:01 PM all 25.70 0.00 9.50 2.79 0.12 61.89
02:00:01 PM all 26.70 0.00 9.73 2.20 0.10 61.28
02:10:01 PM all 26.16 0.00 9.56 4.34 0.11 59.82
02:20:01 PM all 25.49 0.00 9.61 2.76 0.07 62.07
02:30:01 PM all 26.47 0.00 9.94 0.64 0.30 62.65
02:40:02 PM all 27.32 0.00 10.37 3.86 0.15 58.30
02:50:02 PM all 26.98 0.00 10.38 4.56 0.13 57.95
Average: all 26.24 0.00 9.71 3.18 0.13 60.74
4蓝翰、mpstat
這個命令也在sysstat包中,語法類似女嘲。
例如每1秒收集一次畜份,共5次。
[root@Peter ~]# mpstat 1 5
Linux 3.18.5-x86_64-linode52 (Peter) 07/20/2015 x86_64 (1 CPU)
03:01:18 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:01:19 PM all 52.53 0.00 23.23 0.00 0.00 0.00 0.00 0.00 24.24
03:01:20 PM all 21.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 75.00
03:01:21 PM all 53.00 0.00 18.00 0.00 0.00 0.00 0.00 0.00 29.00
03:01:22 PM all 26.00 0.00 3.00 0.00 0.00 0.00 0.00 0.00 71.00
03:01:23 PM all 46.00 0.00 18.00 0.00 0.00 0.00 0.00 0.00 36.00
Average: all 39.68 0.00 13.23 0.00 0.00 0.00 0.00 0.00 47.09
cpu使用情況比sar更加詳細些澡为,也可以用-P指定某顆cpu 漂坏。
5、iostat
這個命令主要用來查看****io****使用情況媒至,也可以來查看cpu,個人感覺不常用谷徙。
[root@Peter ~]# iostat -c 1 2
Linux 3.18.5-x86_64-linode52 (Peter) 07/20/2015 x86_64 (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
4.53 0.01 3.81 0.63 0.04 90.99
avg-cpu: %user %nice %system %iowait %steal %idle
38.00 0.00 14.00 0.00 0.00 48.00
6拒啰、dstat
每秒cpu使用率情況獲取
[root@Peter~]# dstat -c
----total-cpu-usage----
usr sys idl wai hiq siq
5 4 91 1 0 0
27 11 62 0 0 0
52 11 37 0 0 0
26 10 63 0 0 1
50 13 37 0 0 1
21 6 72 0 0 0
最占cpu的進程獲取
[root@Peter ~]# dstat --top-cpu
-most-expensive-
cpu process
mysqld 1.5
php-fpm: pool 24
mysqld 59
寫在這最后:
獲取這些Linux內容可以使用Python,shell腳本等完慧,編寫好腳本語言每次執(zhí)行一下就可以將結果輸出到某地直接查看谋旦,更直觀,當然需要多多學習腳本編寫方便的知識屈尼。
還可能是需要在日志中查找各項數(shù)據指標册着,這就涉及到了文件以及文件中查找。
上文提到過的后面幾個查內容未能一一在自己電腦中敲一遍脾歧,一些工具包尚未安裝完成甲捏,安裝完成后會繼續(xù)敲完,今天是5.4鞭执,下午本來放假的司顿,堅持在公司學習了一會芒粹,準備出去浪一下,然后回家繼續(xù)用自己的電腦大溜,安裝庫類化漆,繼續(xù)搞起……
下面是一些博客鏈接地址: