<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CPU 實用監(jiān)控工具盤點

          共 11057字,需瀏覽 23分鐘

           ·

          2021-01-28 13:08

          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)進程隊列中平均進程數(shù),包括正在運行的進程+準備好等待運行的進程。
          第四個數(shù)字分子表示正在運行的進程數(shù),分母是進程總數(shù)。
          最后一個數(shù)字是最近運行的進程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次,顯示線程細節(jié),并保存到top.txt中。
          top采樣來源你還依賴于/proc/stat和/proc//stat兩個,這兩個的詳細介紹參考:/proc/stat[1]/proc//stat[2]
          其中CPU信息對應的含義如下:
          us:user,統(tǒng)計nice小于等于0的用戶空間進程,也即優(yōu)先級為100~120ni:nice,統(tǒng)計nice大于0的用戶空間進程,也即優(yōu)先級為121~139sys: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

          系統(tǒng)級性能分析工具perf的介紹與使用[3]》有關(guān)于perf使用的詳細介紹,這里重點關(guān)注CPU占用率。
          通過sudo perf top -s comm,可以查看當前系統(tǒng)運行進程占比。
          這里不像top一樣區(qū)分idle、system、user,這里的占比是各個進程在總運行時間里面占比。
          通過sudo perf record記錄采樣信息,然后通過sudo perf report -s comm。

          03. sar和ksar

          sar是System Activity Report的意思,可以用于實時觀察當前系統(tǒng)活動,也可以生成歷史記錄的報告。
          要使用sar需要安裝sudo apt install sysstat,然后對sysstat進行配置。
          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服務$ sudo /etc/init.d/sysstat restart
          # sar log存放目錄$ ls -l /var/log/sysstat/
          使用sar記錄開機到目前的統(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---------------塊設備IO統(tǒng)計信息sar -d 1 100---------------塊設備活動統(tǒng)計信息sar -F 1 100----------------掛載的文件系統(tǒng)統(tǒng)計信息sar -r ALL------------------ 顯示詳細的內(nèi)存使用統(tǒng)計信息sar -S ------------------------顯示swap空間使用情況統(tǒng)計信息sar -w----------------------- 顯示進程創(chuàng)建以及進程切換統(tǒng)計信息sar -W-----------------------顯示swap換入換出統(tǒng)計信息。
          更詳細請參考


          ?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。當沒有參數(shù)時,mpstat顯示系統(tǒng)系統(tǒng)以來所有信息平均值。
          常見用法如下,-P ALL監(jiān)控所有CPU,細節(jié)顯示特定CPU;10表示每10秒監(jiān)控一次;20表示監(jiān)控20次。
          $ mpstat -P ALL 10 20
          結(jié)果如下:

          usr表示用戶空間進程,nice表示nice值大于0的用戶空間進程。
          sys是內(nèi)核空間,iowait是I/O等待時間,irq是硬中斷,soft是軟中斷,idle是空閑時間,guest和gnice都是虛擬機時間。

          05. uptime

          uptime是一個簡單獲取系統(tǒng)總共運行多長時間,以及最近1分鐘、5分鐘、15分鐘的平均負載。
          uptime通過/proc/uptime和/proc/loadavg獲取相關(guān)信息。
          up前是當前系統(tǒng)時間,up后是系統(tǒng)運行時長。
          load average后是1分鐘、5分鐘、15分鐘平均負載。
          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大部分:進程、內(nèi)存、swap、io、中斷和進程切換、cpu。

          更加詳細的解釋:
          參考文檔:《Linux Performance Measurements using vmstat[7]

          07. pidstat

          pidstat主要用于監(jiān)控全部或指定進程占用系統(tǒng)資源的情況。

          7.1 查看CPU使用情況

          pidstat首次運行時顯示自系統(tǒng)啟動開始的各項統(tǒng)計信息,之后運行pidstat將顯示自上次運行該命令以后的統(tǒng)計信息。用戶可以通過指定統(tǒng)計的次數(shù)和時間來獲得所需的統(tǒng)計信息。
          # 顯示所有的進程統(tǒng)計信息,包括idle進程。pidstat -p ALL
          # 更加詳細的顯示了線程統(tǒng)計信息。pidstat -p ALL -t
          # 周期采樣和采樣次數(shù)pidstat [option] interval [count]
          除此之外還可以通過-p獲取指定進程的統(tǒng)計信息。
          pidstat還可以通過-r獲取內(nèi)存使用統(tǒng)計信息,通過-d獲取IO使用統(tǒng)計信息。

          7.2 查看內(nèi)存使用情況

          pidstat -p ALL -r結(jié)果如下:
          151821秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command1518210 1 0.02 0.00 185316 3028 0.08 systemd1518210 2 0.00 0.00 0 0 0.00 kthreadd1518210 4 0.00 0.00 0 0 0.00 kworker/0:0H1518210 6 0.00 0.00 0 0 0.00 mm_percpu_wq1518210 7 0.00 0.00 0 0 0.00 ksoftirqd/01518210 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),當虛擬內(nèi)存地址映射成物理內(nèi)存地址時,相應的page在swap中,這樣的page fault為major page fault,一般在內(nèi)存使用緊張時產(chǎn)生。
          VSZ: 該進程使用的虛擬內(nèi)存(以kB為單位)。
          RSS: 該進程使用的物理內(nèi)存(以kB為單位)。
          %MEM: 該進程使用內(nèi)存的百分比。
          Command: 拉起進程對應的命令。

          7.3 查看磁盤使用情況

          pidstat -p ALL -d結(jié)果如下:
          152040秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command1520400 1 -1.00 -1.00 -1.00 243523129 systemd1520400 2 -1.00 -1.00 -1.00 0 kthreadd1520400 4 -1.00 -1.00 -1.00 0 kworker/0:0H1520400 6 -1.00 -1.00 -1.00 0 mm_percpu_wq1520400 7 -1.00 -1.00 -1.00 714512328679 ksoftirqd/01520400 8 -1.00 -1.00 -1.00 417757303594 rcu_sched
          kB_rd/s: 每秒進程從磁盤讀取的數(shù)據(jù)量(以kB為單位)。
          kB_wr/s: 每秒進程向磁盤寫的數(shù)據(jù)量(以kB為單位)。
          kB_ccwr/s:每秒進程被取消向磁盤寫的數(shù)據(jù)量(以kB為單位)。
          Command::拉起進程對應的命令。

          08. time

          time命令可以被用于統(tǒng)計指定程序的CPU耗時。
          比如time cksum nomachine_6.0.80_1.exe得到如下結(jié)果。
          2401940638 32606752 nomachine_6.0.80_1.exe
          # 整個操作總耗時,0.263-0.094-0.011=0.158是IO等待耗時。real 0m0.263s
          # 用戶態(tài)耗時user 0m0.094s
          # 內(nèi)核態(tài)耗時sys 0m0.011s2401940638 32606752 nomachine_6.0.80_1.exe
          # 第二次執(zhí)行就可以看出等待IO操作的時間基本上沒有了。real 0m0.098suser 0m0.097ssys 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# 進程切換次數(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 online2834.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,可以看到進程里面的線程,樹形結(jié)構(gòu)表示了父子關(guān)系。

          11. atop

          atop是一個監(jiān)控系統(tǒng)資源和進程的工具。它通過CPU使用率來對列表中的進程進行降序排列,而每一個進程則包含了CPU、內(nèi)存、磁盤和網(wǎng)絡狀態(tài)等信息。它的功能與top和htop類似。

          12. glances

          glances是一個由python編寫的,與Nmon功能類似的報告工具,它能夠報告統(tǒng)計cpu、內(nèi)存、網(wǎng)絡、磁盤和進程。除了報告統(tǒng)計,glances不支持任何其他特性或功能。當程序運行時點擊“h”可以顯示幫助頁面。

          13. nmon

          Nmon是一個非常容易使用,能夠在一個屏幕上監(jiān)視CPU、內(nèi)存、網(wǎng)絡、磁盤使用狀況和進程列表的工具。除了無法管理進程和修改報告顯示,Nmon與那些只用于報告的報告工具完全一樣。另外,它可以將數(shù)據(jù)保存到電子表格文件。

          13. pcp-gui

          Performance Co-Pilot,簡稱PCP,是一個系統(tǒng)性能和分析框架。它從多個主機整理數(shù)據(jù)并實時的分析,幫你識別不正常的表現(xiàn)模式。它也提供API讓你設計自己的監(jiān)控和報告解決方案。
          安裝pcp相關(guān)工具。
          $ sudo apt install pcp pcp-gui
          File->Open View選擇需要打開的視圖,比如CPU、Disk、Memory等。

          14. collectl和colplot

          14.1 collectl使用

          collectl是一款非常優(yōu)秀并且有著豐富的命令行功能的實用程序,你可以用它來采集描述當前系統(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的使用很簡單,默認collectl顯示cpu、磁盤、網(wǎng)絡信息。
          collectl還可以顯示更多的子系統(tǒng)信息,如果選項存在對應的大寫選項,大寫選項表示更細節(jié)的設備統(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 Datai – Inode and File Systemj – 顯示每個CPU的Interrupts觸發(fā)情況;J - 顯示每個中斷詳細觸發(fā)情況。l – Lustrem – 顯示整個系統(tǒng)Memory使用情況;M - 按node顯示內(nèi)存使用情況。n – 顯示整個系統(tǒng)的Networks使用情況;N - 分網(wǎng)卡顯示網(wǎng)絡使用情況。s – Socketst – TCPx – Interconnecty – 對系統(tǒng)所有Slabs (系統(tǒng)對象緩存)使用統(tǒng)計信息;Y - 每個slab使用的詳細信息。
          collectl --all顯示所有子系統(tǒng)的統(tǒng)計信息,包括cpu、終端、內(nèi)存、磁盤、網(wǎng)絡、TCP、socket、文件系統(tǒng)、NFS。
          collectl --top可以代替top命令:
          collectl --vmstat可以代替vmstat命令:
          collectl -c1 -sZ -i:1可以代替ps命令。
          collectl和一些處理分析數(shù)據(jù)工具(比如colmux、colgui、colplot)結(jié)合能提供可視化圖形。

          14.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服務:
          $suod systemctl reload apache2
          $ sudo systemctl restart apache2
          在瀏覽器中輸入http://127.0.0.1/colplot/,即可使用colplot。
          通過Change Dir選擇存放經(jīng)過collectl -P保存的數(shù)據(jù),然后設置Plot細節(jié)、顯示那些子系統(tǒng)、plot大小等等。
          最后Generate Plot查看結(jié)果。
          參考文檔:《Collectl: Linux 性能監(jiān)控的全能冠軍[8]》、
          Collectl Documentation[9]》、《Collectl Examples - An Awesome Performance Analysis Tool in Linux[10]

          References

          [1]?/proc/stat:?https://www.cnblogs.com/arnoldlu/p/9187775.html#system_proc_stat
          [2]?/proc//stat:?https://www.cnblogs.com/arnoldlu/p/9187775.html#process_proc_stat
          [3]?系統(tǒng)級性能分析工具perf的介紹與使用:?https://www.cnblogs.com/arnoldlu/p/6241297.html
          [4]?ksar:?https://sourceforge.net/projects/ksar/
          [5]?How To Create sar Graphs With kSar To Identifying Linux Bottlenecks:?https://www.cyberciti.biz/tips/identifying-linux-bottlenecks-sar-graphs-with-ksar.html
          [6]?Collect and report Linux System Activity Information with sar:?https://www.thomas-krenn.com/en/wiki/Collect_and_report_Linux_System_Activity_Information_with_sar
          [7]?Linux Performance Measurements using vmstat:?https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat
          [8]?Collectl: Linux 性能監(jiān)控的全能冠軍:?https://linux.cn/article-3154-1.html
          [9]?Collectl Documentation:?http://collectl.sourceforge.net/Documentation.html
          [10]?Collectl Examples - An Awesome Performance Analysis Tool in Linux:?https://linoxide.com/monitoring-2/collectl-tool-install-examples/
          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  97人人爱 | 91高潮久久久久久久 | 日韩中文在线观看视频 | 豆花成人免费进入18 | 日本黄A三级三级三级 |