【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat

目錄:
(一)htop命令
(二)vmstat命令
(三)pmap命令
(四)glances命令
(五)dstat命令


(一)htop命令
(1.1)EPEL(Extra Packages for Enterprise Linux)是由Fedora社區打造,爲RHEL及衍生髮行版如CentOS等提供高質量軟件包的項目。裝上了EPEL,就像在Fedora上一樣,可以通過yum install的方式安裝,即可安裝很多以前需要編譯安裝的軟件、常用的軟件或一些比較流行的軟件,比如現在流行的nginx、htop、ncdu、vnstat等等,都可以使用EPEL很方便的安裝更新。
(1.2)在管理進程時通常要藉助一些工具,比較常用的就是ps和top了,不過CentOS還爲我們提供了一個更加強大的工具htop,htop是一個Linux下的交互式的進程瀏覽器,可以用來替換Linux下的top命令。我們使用CentOS 7系統,並通過aliyun下載epel源,按照如下的操作方式進行。
# cd /etc/yum.repos.d/---進入到/etc/yum.repos.d/目錄
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup---將CentOS-Base.repo重命名爲CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ---下載Centos-7.repo的源
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/epel-7.repo ---下載epel-7的源
注意:我們也可以使用163的源https://mirrors.163.com/.help/ ,或者直接通過官方源安裝:# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(1.3)然後將緩存清理一下,並重新建立緩存。此時我們通過“# yum repolist”可以查看當前系統的YUM源的情況。
# yum clean all---將緩存清理一下
# yum makecache---重新建立緩存
# yum repolist---查看當前系統的YUM源的情況
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(1.4)CPU在實現查看其分配和利用率的過程中主要有如下的一些關鍵指標:其中第一個us表示用戶空間佔用CPU百分比,第二個sy表示的是內核空間佔用CPU百分比,第三個ni表示的是用戶進程空間內改變過優先級的進程佔用CPU百分比,第四個id表示的是空閒CPU百分比,第五個hi表示的是硬件中斷百分比,第六個si表示的是軟件中斷百分比,第七個cs表示處理上下文切換百分比,第八個st表示的是被虛擬化分走所佔用的百分比,第九個wa表示的是等待輸入輸出的CPU時間百分比。
對於內存Memory衡量的關鍵指標主要有:第一個VSZ表示虛擬內存集,第二個RSS表示常駐內存集,第三個SHM表示共享內存集。
(1.5)接着我們在系統中安裝htop軟件包。
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(1.6)我們在命令行輸入“# htop”直接打開進入到一個瀏覽器的界面,在圖中將輸出的界面劃分成了四個區域,其中上左區:顯示了每顆CPU、物理內存和交換分區的信息;上右區:顯示了任務數量、線程數量、平均負載和連接運行時間等信息;進程區域:顯示出當前系統中的所有進程;操作提示區:顯示了當前界面中F1至F10功能鍵中定義的快捷功能。
# htop
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(1.7)界面支持鼠標操作,我們在鍵盤上按F1或者在屏幕上進行點擊,可以顯示幫助信息,其中CPU usage bar即CPU顯示當中low-priority表示低優先級,normal表示正常,kernel表示內核的,virtualiz表示被虛擬化拿走的時間。而Memory bar中綠色used表示使用的內存,紫色buffers表示緩衝,橙色cache表示緩存。Status狀態部分中:R表示運行,S表示睡眠,T表示被跟蹤或者停止狀態,Z表示殭屍態,D表示不可中斷的睡眠。
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(1.8)其中在htop主界面中我們可以使用如下的按鍵進行操作
按鍵u:顯示指定用戶的進程
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
按鍵q:退出,可以最後退出htop程序
按鍵Esc:退回到前一步
按鍵H:隱藏用戶線程
按鍵K:隱藏內核線程
按鍵F:跟蹤光標所在的線程
按鍵M:按照內存使用百分比排序,對應MEM%列
按鍵P:按照CPU使用百分比排序,對應CPU%列
按鍵T:按照進程運行的時間排序,對應TIME+列
按鍵c:能夠標記處一個進程以及這個進程的子進程來
按鍵a:能夠設置CPU的親和性
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
按鍵U:取消所有選中的進程
按鍵l:能夠顯示光標所在進程的文件列表(小寫字母L)
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
按鍵s:顯示光標所在進程執行的所有系統調用,按F8鍵可以自動滾屏刷新當前系統新生成的系統調用。
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
按鍵T或者F5鍵:可以以進程樹的形式展現出各進程之間的父子關係。
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
按鍵F2:配置界面中的顯示信息
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(1.9)htop命令的選項參數如下:
# htop -d 2---設置刷新時間,單位爲秒
# htop -u root---顯示指定用戶的進程
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
# htop -s TIME---以指定的列排序
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
# htop -C---設置界面爲無顏色
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat


(二)vmstat命令
(2.1)vmstat命令是用來報告虛擬內存的統計數據的,vmstat命令報告關於內核線程、虛擬內存、磁盤、陷阱和CPU活動的統計信息。由vmstat命令生成的報告可以用於平衡系統負載活動,系統範圍內的這些統計信息都計算出以百分比表示的平均值,或者計算其總和。
(2.2)我們執行vmstat命令後會發現產生了五列的內容,主要包括procs進程,memory內存,swap交換分區,io爲塊級別的io,system系統包括中斷和上下文切換,cpu主要包括用戶空間、內核空間、空閒百分比、等待輸入輸出百分比、被虛擬化分走的百分比。
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(2.3)如果我們希望當前的輸出數據能夠每2秒動態輸出一次,此時我們可以使用“# vmstat 2”命令。而如果我們希望輸出數據能夠每2秒動態輸出一次,並且總共顯示3次,此時我們可以使用“# vmstat 2 3”
# vmstat 2---輸出數據能夠每2秒動態輸出一次
# vmstat 2 3---輸出數據能夠每2秒動態輸出一次,並且總共顯示3次
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(2.4)每一列的詳細含義
(2.4.1)procs進程,如果這個隊列非常長,那麼等待io的時間很長,io的能力有限。
r:等待運行的進程的個數;CPU上等待運行的任務隊列的長度
b:處於不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度
(2.4.2)memory內存
swap:交換內存使用量,0表示沒有啓用交換內存,實際使用的是硬盤容量
free:空閒的物理內存總量
buffer:用於buffer的內存總量
cache:用於cache的內存總量
(2.4.3)swap交換分區,如果我們發現系統有大量的交換分區的使用換進,但是換出的頻率不是很頻繁那麼對我們系統的影響還不是很大,但是如果我們大量的交換分區在換進換出操作,即si與so之間活動的速率非常頻繁,這也就意味着我們的物理內存太小,需要擴充內存。
si:數據進入swap中的數據速率(kb/s)
so:數據離開swap的速率(kb/s)
(2.4.4)io
bi:從塊設備讀入數據到系統的速度(kb/s)
bo:保存數據至塊設備的速率(kb/s)
(2.4.5)system
in:interrupts,中斷速率
cs:context switch,上下文切換的速率,如果上下文切換的速率太高說明需要運行的進程太多,CPU的性能太弱
(2.4.6)CPU
us:user space,用戶空間
sy:system,內核空間
id:idle,空閒CPU百分比
wa:wait,等待輸入輸出的CPU時間百分比
st:stolen,被虛擬化分走所佔用的百分比
(2.5)如果我們需要顯示內存統計數據
# vmstat -s
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(2.6)如果我們希望將執行的5行結果保存到test文件中,我們可以使用如下的方式操作。
# vmstat 5 >> test &
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat


(三)pmap命令
(3.1)pmap命令用於報告進程的內存映射關係,是Linux調試及運維的一個很好的工具。命令的語法爲“pmap (選項) (參數)”,其中參數一般有如下的種類:
-x:顯示擴展格式
-d:顯示設備格式
-q:不顯示頭尾行
-V:顯示指定版本
(3.2)我們如果想要查看1號systemd進程的內存映射關係,可以按照如下的方式操作。其中anon表示的是匿名頁,stack表示的棧。
# pmap 1---顯示systemd進程的內存映射關係
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(3.3)如果我們需要顯示更詳細的信息,可以使用-x的參數,其中多出來了3列數據,其中RSS表示長度內存集,Dirty表示的是髒數據。當然我們也可以通過查看內核的信息方式實現詳細信息的提取,
# pmap -x 1---顯示詳細格式信息
# cat /proc/1/maps---通過內核查看詳細內存映射信息
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat


(四)glances命令
(4.1)glances工具可以在用戶的終端上實時顯示重要的系統信息,並動態地對其進行更新。這個高效的工具可以工作於任何終端屏幕。另外它並不會消耗大量的CPU資源,通常低於百分之二。glances在屏幕上對數據進行顯示,並且每隔兩秒鐘對其進行更新。你也可以自己將這個時間間隔更改爲更長或更短的數值,glances工具還可以捕獲到一個文件,便於以後對報告進行分析和繪製圖形,輸出文件可以是電子表格的格式(.csv)或者html格式。
(4.2)我們首先將glances命令安裝起來。
# yum install glances -y
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(4.3)我們運行glances命令後發現,其中系統中第1個表示的是CPU的相關參數,第2個表示的是內存相關的參數信息,第3個表示的是交換分區的參數信息,第4個表示的是系統在一分鐘、五分鐘、十五分鐘的平均負載情況,第5個表示的是網絡的相關交換速率,其中Rx表示接收的,Tx表示發送的,第6個表示的是磁盤的讀寫速率信息,第7個表示的是掛載的文件系統,其中Used表示的是醫用的空間大小,Total表示總的空間大小,其中第8箇中VIRT標示的是虛擬內存集、RES表示的是常駐內存集、NI表示nice值、S表示的是狀態、“TIME+”表示的是累計時間、IOR/s表示的io讀每秒的速率、IOW/s表示的是io寫每秒的速率、Command表示的是進程名稱
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(4.4)我們需要了解glances命令的幫助信息,我們可以使用按鍵h獲取幫助
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(4.5)glances常用選項
-b:以Byte爲單位顯示網上數據速率
-d:關閉磁盤I/O模塊
-m:關閉mount模塊
-n:關閉network模塊
-C file:設置配置文件默認是/etc/glances/glances.conf
-e:顯示傳感器溫度
-p PORT:設置運行端口默認是61209
-P password:設置客戶端/服務器密碼
-t sec:設置屏幕刷新的時間間隔,單位爲秒,默認值爲2秒,數值許可範圍:1~32767
-s:設置glances運行模式爲服務器
-h:顯示幫助信息
-v:顯示版本信息
# glances -1---表示每個CPU都單獨顯示出來
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(4.6)如果我們希望將輸出的文本信息保存到一個我們指定的文件中,則可以使用如下的操作方式,我們需要先安裝python-jinja2軟件包,然後在指定glances將輸出的文本指定到對應的文件中。
# yum install python-jinja2 -y---安裝python-jinja2軟件包
# glances -f /tmp/ -o HTML---指定glances會輸出到/tmp/目錄下html格式的文件
# glances -f /tmp/ --export-csv CSV---指定glances會輸出到/tmp/目錄下csv格式的文件
# yum whatprovides */libreoffice---安裝libreoffice的calc工具
# libreoffice --calc %U /tmp/CSV---使用libreoffice的calc工具打開csv格式文件
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(4.7)我們還可以使用C/S模式運行glances命令,其中服務端模式爲“glances -s -B IPADDR”,其中IPADDR爲本機的某地址用於監聽(圖3-9),而在客戶端模式爲“glances -c IPADDR”,其中IPADDR是遠程服務器的地址(圖3-10)。我們在vms001主機上連接CentOS 7主機後,發現可以正常的顯示CentOS 7主機上的glances信息。
# glances -s -B 192.168.26.131---在CentOS 7服務器端主機上執行
# glances -c 192.168.26.131---在vms001客戶端主機上執行
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat


(五)dstat命令
(5.1)dstat是一個可以取代vmstat、iostat、netstat和ifstat這些命令的多功能產品。dstat克服了這些命令的侷限並增加了一些額外的功能,增加了監控項,也變得更靈活了。dstat可以很方便監控系統運行狀況並用於基準測試和排除故障,dstat可以讓你實時的看到所有系統資源,例如,你能夠通過統計IDE控制器當前狀態來比較磁盤利用率,或者直接通過網絡帶寬數值來比較磁盤的吞吐率(在相同的時間間隔內)。dstat將以列表的形式爲你提供選項信息並清晰地告訴你是在何種幅度和單位顯示輸出,這樣更好地避免了信息混亂和誤報。更重要的是,它可以讓你更容易編寫插件來收集你想要的數據信息,以從未有過的方式進行擴展。dstat的默認輸出是專門爲人們實時查看而設計的,不過你也可以將詳細信息通過CSV輸出到一個文件,並導入到Excel生成表格。
(5.2)我們打開dstat命令後,會以動態的效果一直在屏幕上滾動刷新。如果我們希望每隔兩秒顯示一個批次,一共顯示五次,則可以使用下面的方式進行顯示。默認情況下dstat的參數自動含有“-cdngy”的參數,分別表示的是“total-cpu-usage”、“dsk/total”、“net/total”、“paging”、“system”。
# dstat 2 5
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(5.3)其中第一個“total-cpu-usage”表示CPU狀態,CPU的使用率,這項報告更有趣的部分是顯示了用戶、系統和空閒部分,這更好的分析了CPU當前的使用狀況。如果你看到“wait”一欄中,CPU的狀態是一個高使用率值,那說明系統存在一些其它問題。當CPU的狀態處於“waits”時,那是因爲它正在等待I/O設備(例如內存,磁盤或者網絡)的響應而且還沒有收到。第二個“dsk/total”表示的是磁盤統計,磁盤的讀寫操作,這一欄顯示磁盤的讀、寫總數。第三個“net/total”表示的是網絡統計,網絡設備發送和接收的數據,這一欄顯示的網絡收、發數據總數。第四個“paging”表示分頁統計,系統的分頁活動,分頁指的是一種內存管理技術用於查找系統場景,一個較大的分頁表明系統正在使用大量的交換空間,或者說內存非常分散,大多數情況下你都希望看到page in和page out的值是0。第五個“system”這一項顯示的是中斷(int)和上下文切換(csw)。這項統計僅在有比較極限時纔有意義,這一欄中較高的統計值通常表示大量的進程造成擁塞,需要對CPU進行關注,你的服務器一般情況下都會運行一些程序,所以這項總是顯示一些數值。
(5.4)dstat命令可跟的常用選項:
-c,--cpu:顯示cpu相關信息
# dstat -C 1---顯示1號cpu的信息
# dstat -C total---顯示所有cpu的信息
-d,--disk:顯示磁盤的相關信息
# dstat -D total---顯示系統總的磁盤信息
-g:顯示page相關的速率數據
-m:Memory的相關統計數據
-n:Interface的相關統計數據
-p:顯示process的相關統計數據
-r:顯示io請求的相關的統計數據
-s:顯示swapped的相關統計數據
-l:顯示負載統計量
-t:將當前時間顯示在第一行
--tcp:顯示tcp狀態的統計數據
--udp:顯示udp狀態的統計數據
--socket:顯示網絡統計數據
--ipc:進程間通信的相關數據
--top-cpu:顯示最佔用CPU的進程
--top-mem:顯示最佔用內存的進程
--top-lantency:顯示延遲最大的進程
--fs:顯示文件系統統計數據(包括文件總數量和inodes值)
--nocolor:不現實顏色(有時候會用)
--disk-util:顯示某一時間磁盤的忙碌狀況
--freespace:顯示當前磁盤空間使用率
--proc-count:顯示正在運行的程序數量
--top-bio:指出塊I/O最大的進程
--top-cpu:圖形化顯示CPU佔用最大的進程
--top-io:顯示正常I/O最大的進程
--top-mem:顯示佔用最多內存的進程
(5.5)示例:查看全部內存都有誰在佔用
# dstat -g -l -m -s --top-mem
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat
(5.6)示例:顯示一些關於CPU資源損耗的數據
# dstat -c -y -l --proc-count --top-cpu
【講清楚,說明白!】資源管理三板斧之--htop、vmstat、dstat

—————— 本文至此結束,感謝閱讀 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章