小編給大家分享一下Linux下CPU監(jiān)控工具有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
為武勝等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及武勝網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站制作、武勝網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
01. top
top是最常用的查看系統(tǒng)資源使用情況的工具,包括CPU、內(nèi)存等等資源。
這里主要關(guān)注CPU資源。
1.1 /proc/loadavg
load average取自/proc/loadavg。
9.53 9.12 8.37 3/889 28165
前三個數(shù)字是1、5、15分鐘內(nèi)進(jìn)程隊列中平均進(jìn)程數(shù),包括正在運行的進(jìn)程+準(zhǔn)備好等待運行的進(jìn)程。
第四個數(shù)字分子表示正在運行的進(jìn)程數(shù),分母是進(jìn)程總數(shù)。
最后一個數(shù)字是最近運行的進(jìn)程ID號。
其中top取的是/proc/loadavg的前三個數(shù)。
1.2 top使用
打開top,可以指定更新的周期。
輸入H,打開隱藏的線程;輸入1,可以顯示單核CPU使用情況。
top -H -b -d 1 -n 200 > top.txt,每個1秒統(tǒng)計一次,共200次,顯示線程細(xì)節(jié),并保存到top.txt中。
top采樣來源你還依賴于/proc/stat和/proc//stat兩個,這兩個的詳細(xì)介紹參考:/proc/stat[1]和/proc//stat[2]。
其中CPU信息對應(yīng)的含義如下:
us:user,統(tǒng)計nice小于等于0的用戶空間進(jìn)程,也即優(yōu)先級為100~120。 ni:nice,統(tǒng)計nice大于0的用戶空間進(jìn)程,也即優(yōu)先級為121~139。 sys:system,統(tǒng)計內(nèi)核態(tài)運行時間,不包括中斷。 id:idle,幾系統(tǒng)處于空閑態(tài)。 wa:iowait,統(tǒng)計io等待時間。 hi:hardware interrupt,統(tǒng)計硬件中斷時間。 si:software interrupt,統(tǒng)計軟中斷時間。 st:steal
02. perf
通過sudo perf top -s comm,可以查看當(dāng)前系統(tǒng)運行進(jìn)程占比。
這里不像top一樣區(qū)分idle、system、user,這里的占比是各個進(jìn)程在總運行時間里面占比。
通過sudo perf record記錄采樣信息,然后通過sudo perf report -s comm。
03. sar和ksar
sar是System Activity Report的意思,可以用于實時觀察當(dāng)前系統(tǒng)活動,也可以生成歷史記錄的報告。
要使用sar需要安裝sudo apt install sysstat,然后對sysstat進(jìn)行配置。
sar用于記錄統(tǒng)計信息,ksar[4]用于將記錄的信息圖形化輸出。
ksar下載地址在:https://github.com/vlsi/ksar/releases。
# 將 ENABLED=“false“ 改為ENABLED=“true“ $ sudo gedit /etc/default/sysstat # 修改sar的周期等配置 $ sudo gedit /etc/cron.d/sysstat # 重啟sar服務(wù) $ sudo /etc/init.d/sysstat restart # sar log存放目錄 $ ls -l /var/log/sysstat/
使用sar記錄開機(jī)到目前的統(tǒng)計信息到文件sar.txt。
LC_ALL=C sar -A > sar.txt
PS:這里直接使用sar -A,在ksar中無法正常顯示。
如下執(zhí)行java -jar ksar.jar,然后Data->Load from text file...選擇保存的sar.txt文件。
得到如下的圖表。
還可以通過sar記錄一段時間的信息,指定采樣周期和采樣次數(shù)。
這些命令前加上LC_ALL=C之后保存到文件中,都可以在ksar中圖形化顯示。
sar 1 100-----------------所有cpu合一的統(tǒng)計信息 sar -P ALL 1 100--------包括cpu合一以及單個cpu的統(tǒng)計信息 sar -B 1 100---------------paging統(tǒng)計信息 sar -b 1 100---------------塊設(shè)備IO統(tǒng)計信息 sar -d 1 100---------------塊設(shè)備活動統(tǒng)計信息 sar -F 1 100----------------掛載的文件系統(tǒng)統(tǒng)計信息 sar -r ALL------------------ 顯示詳細(xì)的內(nèi)存使用統(tǒng)計信息 sar -S ------------------------顯示swap空間使用情況統(tǒng)計信息 sar -w----------------------- 顯示進(jìn)程創(chuàng)建以及進(jìn)程切換統(tǒng)計信息 sar -W-----------------------顯示swap換入換出統(tǒng)計信息。
更詳細(xì)請參考
•《How To Create sar Graphs With kSar To Identifying Linux Bottlenecks[5]》
•《Collect and report Linux System Activity Information with sar[6]》。
04. mpstat
mpstat是Multiprocessor Statistics。當(dāng)沒有參數(shù)時,mpstat顯示系統(tǒng)系統(tǒng)以來所有信息平均值。
常見用法如下,-P ALL監(jiān)控所有CPU,細(xì)節(jié)顯示特定CPU;10表示每10秒監(jiān)控一次;20表示監(jiān)控20次。
$ mpstat -P ALL 10 20
結(jié)果如下:
usr表示用戶空間進(jìn)程,nice表示nice值大于0的用戶空間進(jìn)程。
sys是內(nèi)核空間,iowait是I/O等待時間,irq是硬中斷,soft是軟中斷,idle是空閑時間,guest和gnice都是虛擬機(jī)時間。
05. uptime
uptime是一個簡單獲取系統(tǒng)總共運行多長時間,以及最近1分鐘、5分鐘、15分鐘的平均負(fù)載。
uptime通過/proc/uptime和/proc/loadavg獲取相關(guān)信息。
up前是當(dāng)前系統(tǒng)時間,up后是系統(tǒng)運行時長。
load average后是1分鐘、5分鐘、15分鐘平均負(fù)載。
11:15:41 up 82 days, 20:34, 8 users, load average: 0.28, 0.40, 0.43
06. vmstat
vmstat主要用于監(jiān)控系統(tǒng)內(nèi)存使用情況的工具,但是也包含一些CPU相關(guān)信息。
使用方法vmstat 5 5表示運行5次,每次5秒。結(jié)果如下:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 472576 228688 559092 1061756 0 0 9 39 1 0 8 4 87 0 0 1 0 472576 228184 559100 1061756 0 0 0 13 1532 3395 10 6 84 0 0 1 0 472576 229308 559100 1061616 0 0 0 0 1446 3449 10 5 85 0 0 0 0 472576 229592 559108 1061616 0 0 0 6 1419 3474 10 5 85 0 0 1 0 472576 229804 559108 1061616 0 0 0 0 1446 3439 10 5 85 0 0
上面的參數(shù)可以分為6大部分:進(jìn)程、內(nèi)存、swap、io、中斷和進(jìn)程切換、cpu。
更加詳細(xì)的解釋:
參考文檔:《Linux Performance Measurements using vmstat[7]》
07. pidstat
pidstat主要用于監(jiān)控全部或指定進(jìn)程占用系統(tǒng)資源的情況。
7.1 查看CPU使用情況
pidstat首次運行時顯示自系統(tǒng)啟動開始的各項統(tǒng)計信息,之后運行pidstat將顯示自上次運行該命令以后的統(tǒng)計信息。用戶可以通過指定統(tǒng)計的次數(shù)和時間來獲得所需的統(tǒng)計信息。
# 顯示所有的進(jìn)程統(tǒng)計信息,包括idle進(jìn)程。 pidstat -p ALL # 更加詳細(xì)的顯示了線程統(tǒng)計信息。 pidstat -p ALL -t # 周期采樣和采樣次數(shù) pidstat [option] interval [count]
除此之外還可以通過-p獲取指定進(jìn)程的統(tǒng)計信息。
pidstat還可以通過-r獲取內(nèi)存使用統(tǒng)計信息,通過-d獲取IO使用統(tǒng)計信息。
7.2 查看內(nèi)存使用情況
pidstat -p ALL -r結(jié)果如下:
15時18分21秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command 15時18分21秒 0 1 0.02 0.00 185316 3028 0.08 systemd 15時18分21秒 0 2 0.00 0.00 0 0 0.00 kthreadd 15時18分21秒 0 4 0.00 0.00 0 0 0.00 kworker/0:0H 15時18分21秒 0 6 0.00 0.00 0 0 0.00 mm_percpu_wq 15時18分21秒 0 7 0.00 0.00 0 0 0.00 ksoftirqd/0 15時18分21秒 0 8 0.00 0.00 0 0 0.00 rcu_sched
minflt/s: 每秒次缺頁錯誤次數(shù)(minor page faults),次缺頁錯誤次數(shù)意即虛擬內(nèi)存地址映射成物理內(nèi)存地址產(chǎn)生的page fault次數(shù)。
majflt/s: 每秒主缺頁錯誤次數(shù)(major page faults),當(dāng)虛擬內(nèi)存地址映射成物理內(nèi)存地址時,相應(yīng)的page在swap中,這樣的page fault為major page fault,一般在內(nèi)存使用緊張時產(chǎn)生。
VSZ: 該進(jìn)程使用的虛擬內(nèi)存(以kB為單位)。
RSS: 該進(jìn)程使用的物理內(nèi)存(以kB為單位)。
%MEM: 該進(jìn)程使用內(nèi)存的百分比。
Command: 拉起進(jìn)程對應(yīng)的命令。
7.3 查看磁盤使用情況
pidstat -p ALL -d結(jié)果如下:
15時20分40秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 15時20分40秒 0 1 -1.00 -1.00 -1.00 243523129 systemd 15時20分40秒 0 2 -1.00 -1.00 -1.00 0 kthreadd 15時20分40秒 0 4 -1.00 -1.00 -1.00 0 kworker/0:0H 15時20分40秒 0 6 -1.00 -1.00 -1.00 0 mm_percpu_wq 15時20分40秒 0 7 -1.00 -1.00 -1.00 714512328679 ksoftirqd/0 15時20分40秒 0 8 -1.00 -1.00 -1.00 417757303594 rcu_sched
kB_rd/s: 每秒進(jìn)程從磁盤讀取的數(shù)據(jù)量(以kB為單位)。
kB_wr/s: 每秒進(jìn)程向磁盤寫的數(shù)據(jù)量(以kB為單位)。
kB_ccwr/s:每秒進(jìn)程被取消向磁盤寫的數(shù)據(jù)量(以kB為單位)。
Command::拉起進(jìn)程對應(yīng)的命令。
08. time
time命令可以被用于統(tǒng)計指定程序的CPU耗時。
比如time cksum nomachine_6.0.80_1.exe得到如下結(jié)果。
2401940638 32606752 nomachine_6.0.80_1.exe # 整個操作總耗時,00.263-0.094-0.011=0.158是IO等待耗時。 real 0m0.263s # 用戶態(tài)耗時 user 0m0.094s # 內(nèi)核態(tài)耗時 sys 0m0.011s 2401940638 32606752 nomachine_6.0.80_1.exe # 第二次執(zhí)行就可以看出等待IO操作的時間基本上沒有了。 real 0m0.098s user 0m0.097s sys 0m0.000s
09. cpustat
通過sudo apt install cpustat安裝,cpustat -T -D -x結(jié)果如下。
# 顯示Load Avg信息和平均頻率等 Load Avg 0.66 0.54 0.49, Freq Avg. 1.46 GHz, 4 CPUs online # 進(jìn)程切換次數(shù)、硬中斷、軟中斷等等統(tǒng)計信息。 # CPU占用率、用戶空間和內(nèi)核空間占用率等。 3791.1 Ctxt/s, 1709.9 IRQ/s, 1800.0 softIRQ/s, 0.0 new tasks/s, 1 running, 0 blocked %CPU %USR %SYS PID S CPU Time Task 25.74 25.74 0.00 11435 R 3 2.29w /usr/bin/python3 15.84 15.84 0.00 9445 S 0 1.49w /usr/lib/xorg/Xorg 10.89 9.90 0.99 2722 S 1 1.05w compiz 7.92 0.00 7.92 32352 S 2 16.60s [kworker/2:1] 0.99 0.00 0.99 32397 R 1 0.01s cpustat 0.99 0.99 0.00 11046 S 2 16.20h compiz 0.99 0.99 0.00 1317 S 0 8.76h /usr/NX/bin/nxnode.bin 0.99 0.00 0.99 10293 S 1 1.24m [kworker/1:2] 64.36 53.47 10.89 Total Load Avg 0.66 0.54 0.49, Freq Avg. 1.75 GHz, 4 CPUs online 2834.8 Ctxt/s, 1190.9 IRQ/s, 1183.3 softIRQ/s, 0.0 new tasks/s, 4 running, 0 blocked %CPU %USR %SYS PID S CPU Time Task 25.76 25.76 0.00 11435 R 3 2.29w /usr/bin/python3 18.18 18.18 0.00 9445 S 0 1.49w /usr/lib/xorg/Xorg 7.58 7.58 0.00 2722 S 1 1.05w compiz 6.06 0.00 6.06 32352 S 2 16.64s [kworker/2:1] 1.52 0.00 1.52 32397 R 1 0.02s cpustat 1.52 0.00 1.52 8 S 0 3.00h [rcu_sched] 1.52 0.00 1.52 18409 S 0 1.16m update-notifier 62.12 51.52 10.61 Total Distribution of CPU utilisation (per Task): % CPU Utilisation Count (%) 0.00 - 1.97 706 98.88 1.97 - 3.94 0 0.00 3.94 - 5.91 0 0.00 5.91 - 7.88 2 0.28 7.88 - 9.85 0 0.00 9.85 - 11.82 0 0.00 11.82 - 13.79 1 0.14 13.79 - 15.76 0 0.00 15.76 - 17.73 1 0.14 17.73 - 19.70 1 0.14 19.70 - 21.67 0 0.00 21.67 - 23.64 0 0.00 23.64 - 25.61 2 0.28 25.61 - 27.57 0 0.00 27.58 - 29.54 0 0.00 29.55 - 31.51 0 0.00 31.52 - 33.48 0 0.00 33.48 - 35.45 0 0.00 35.45 - 37.42 0 0.00 37.42 - 39.39 1 0.14 Distribution of CPU utilisation (per CPU):----------------------------------------------各CPU占用率,分用戶空間和內(nèi)核空間。 CPU# USR% SYS% 0 17.37 1.20 1 8.98 2.40 2 0.60 7.19 3 25.75 0.00
10. htop
htop和top的功能類似,但是可讀性比top更好。在界面按下F5,可以看到進(jìn)程里面的線程,樹形結(jié)構(gòu)表示了父子關(guān)系。
11. atop
atop是一個監(jiān)控系統(tǒng)資源和進(jìn)程的工具。它通過CPU使用率來對列表中的進(jìn)程進(jìn)行降序排列,而每一個進(jìn)程則包含了CPU、內(nèi)存、磁盤和網(wǎng)絡(luò)狀態(tài)等信息。它的功能與top和htop類似。
12. glances
glances是一個由python編寫的,與Nmon功能類似的報告工具,它能夠報告統(tǒng)計cpu、內(nèi)存、網(wǎng)絡(luò)、磁盤和進(jìn)程。除了報告統(tǒng)計,glances不支持任何其他特性或功能。當(dāng)程序運行時點擊“h”可以顯示幫助頁面。
13. nmon
Nmon是一個非常容易使用,能夠在一個屏幕上監(jiān)視CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤使用狀況和進(jìn)程列表的工具。除了無法管理進(jìn)程和修改報告顯示,Nmon與那些只用于報告的報告工具完全一樣。另外,它可以將數(shù)據(jù)保存到電子表格文件。
14. PCP-gui
Performance Co-Pilot,簡稱PCP,是一個系統(tǒng)性能和分析框架。它從多個主機(jī)整理數(shù)據(jù)并實時的分析,幫你識別不正常的表現(xiàn)模式。它也提供API讓你設(shè)計自己的監(jiān)控和報告解決方案。
安裝PCP相關(guān)工具。
$ sudo apt install PCP PCP-gui
File->Open View選擇需要打開的視圖,比如CPU、Disk、Memory等。
15. collectl和colplot
15.1 collectl使用
collectl是一款非常優(yōu)秀并且有著豐富的命令行功能的實用程序,你可以用它來采集描述當(dāng)前系統(tǒng)狀態(tài)的性能數(shù)據(jù)。
不同于大多數(shù)其它的系統(tǒng)監(jiān)控工具,collectl 并非僅局限于有限的系統(tǒng)度量,相反,它可以收集許多不同類型系統(tǒng)資源的相關(guān)信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。
同時collectl還可以替代常用工具,比如top、vmstat、ps、iotop等。
安裝collectl:
sudo apt-get install collectl
collectl的使用很簡單,默認(rèn)collectl顯示cpu、磁盤、網(wǎng)絡(luò)信息。
collectl還可以顯示更多的子系統(tǒng)信息,如果選項存在對應(yīng)的大寫選項,大寫選項表示更細(xì)節(jié)的設(shè)備統(tǒng)計信息。
b – buddy info (內(nèi)存碎片) c – 所有CPU的合一統(tǒng)計信息;C - 單個CPU的統(tǒng)計信息。 d – 整個文件系統(tǒng)Disk合一統(tǒng)計信息;C - 單個磁盤的統(tǒng)計信息。 f – NFS V3 Data i – Inode and File System j – 顯示每個CPU的Interrupts觸發(fā)情況;J - 顯示每個中斷詳細(xì)觸發(fā)情況。 l – Lustre m – 顯示整個系統(tǒng)Memory使用情況;M - 按node顯示內(nèi)存使用情況。 n – 顯示整個系統(tǒng)的Networks使用情況;N - 分網(wǎng)卡顯示網(wǎng)絡(luò)使用情況。 s – Sockets t – TCP x – Interconnect y – 對系統(tǒng)所有Slabs (系統(tǒng)對象緩存)使用統(tǒng)計信息;Y - 每個slab使用的詳細(xì)信息。
collectl --all顯示所有子系統(tǒng)的統(tǒng)計信息,包括cpu、終端、內(nèi)存、磁盤、網(wǎng)絡(luò)、TCP、socket、文件系統(tǒng)、NFS。
collectl --top可以代替top命令:
collectl --vmstat可以代替vmstat命令:
collectl -c1 -sZ -i:1可以代替ps命令。
collectl和一些處理分析數(shù)據(jù)工具(比如colmux、colgui、colplot)結(jié)合能提供可視化圖形。
15.2 colplot使用
colplot是collectl工具集的一部分,其將collectl收集的數(shù)據(jù)在瀏覽器中圖形化展示。
colplot的介紹(http://collectl-utils.sourceforge.net/colplot.html),相關(guān)源碼可以再collectl-utils]下載:https://sourceforge.net/projects/collectl-utils/files/
解壓下載的colplot之后,sudo ./INSTALL安裝colplot。
安裝之后重啟apache服務(wù):
$suod systemctl reload apache2 $ sudo systemctl restart apache2
在瀏覽器中輸入http://127.0.0.1/colplot/,即可使用colplot。
通過Change Dir選擇存放經(jīng)過collectl -P保存的數(shù)據(jù),然后設(shè)置Plot細(xì)節(jié)、顯示那些子系統(tǒng)、plot大小等等。
最后Generate Plot查看結(jié)果。
以上是“Linux下CPU監(jiān)控工具有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!