CentOS命令行性能檢測(cè)工具詳解
添加時(shí)間:2019-8-30 21:59:41
添加:
思海網(wǎng)絡(luò)
一、uptime
Uptime命令的顯示結(jié)果包括服務(wù)器已經(jīng)運(yùn)行了多長(zhǎng)時(shí)間,有多少登陸用戶和對(duì)服務(wù)器性能的總體評(píng)估(load average)。load average值分別記錄了上個(gè)1分鐘,5分鐘和15分鐘間隔的負(fù)載情況,load average不是一個(gè)百分比,而是在隊(duì)列中等待執(zhí)行的進(jìn)程的數(shù)量。如果進(jìn)程要求CPU時(shí)間被阻塞(意味著CPU沒有時(shí)間處理它),load average值將增加。另一方面,如果每個(gè)進(jìn)程都可以立刻得到訪問CPU的時(shí)間,這個(gè)值將減少。
UP kernel下的load average的最佳值是1,這說明每個(gè)進(jìn)程都可以立刻被CPU處理,當(dāng)然,更低不會(huì)有問題,只說明浪費(fèi)了一部分的資源。但在不同的系統(tǒng)間這個(gè)值也是不同的,例如一個(gè)單CPU的工作站,load average為1或者2都是可以接受的,而在一個(gè)多CPU的系統(tǒng)中這個(gè)值應(yīng)除以物理CPU的個(gè)數(shù),假設(shè)CPU個(gè)數(shù)為4,而load average為8或者10,那結(jié)果也是在2多點(diǎn)而已。
點(diǎn)擊在新窗口中瀏覽此圖片
你可以使用uptime判斷一個(gè)性能問題是出現(xiàn)在服務(wù)器上還是網(wǎng)絡(luò)上。例如,如果一個(gè)網(wǎng)絡(luò)應(yīng)用運(yùn)行性能不理想,運(yùn)行uptime檢查系統(tǒng)負(fù)載是否比較高,如果不是這個(gè)問題更可能出現(xiàn)在你的網(wǎng)絡(luò)上。
二、top
Top命令顯示了實(shí)際CPU使用情況,默認(rèn)情況下,它顯示了服務(wù)器上占用CPU的任務(wù)信息并且每5秒鐘刷新一次。你可以通過多種方式分類它們,包括PID、時(shí)間和內(nèi)存使用情況。
點(diǎn)擊在新窗口中瀏覽此圖片
下面是輸出值的介紹:
引用
PID:進(jìn)程標(biāo)識(shí)
USER;進(jìn)程所有者的用戶名
PRI:進(jìn)程的優(yōu)先級(jí)
NI:nice級(jí)別
SIZE:進(jìn)程占用的內(nèi)存數(shù)量(代碼+數(shù)據(jù)+堆棧)
RSS;進(jìn)程使用的物理內(nèi)存數(shù)量
SHARE;該進(jìn)程和其他進(jìn)程共享內(nèi)存的數(shù)量
STAT:進(jìn)程的狀態(tài):S=休眠狀態(tài),R=運(yùn)行狀態(tài),T=停止?fàn)顟B(tài),D=中斷休眠狀態(tài),Z=僵尸狀態(tài)
%CPU:共享的CPU使用
%MEM;共享的物理內(nèi)存
TIME:進(jìn)程占用CPU的時(shí)間
COMMAND:?jiǎn)?dòng)任務(wù)的命令行(包括參數(shù))
進(jìn)程的優(yōu)先級(jí)和nice級(jí)別
進(jìn)程優(yōu)先級(jí)是一個(gè)決定進(jìn)程被CPU執(zhí)行優(yōu)先順序的參數(shù),內(nèi)核會(huì)根據(jù)需要調(diào)整這個(gè)值。Nice值是一個(gè)對(duì)優(yōu)先權(quán)的限制。進(jìn)程優(yōu)先級(jí)的值不能低于nice值。(nice值越低優(yōu)先級(jí)越高)
進(jìn)程優(yōu)先級(jí)是無法去手動(dòng)改變的,只有通過改變nice值去間接的調(diào)整進(jìn)程優(yōu)先級(jí)。如果一個(gè)進(jìn)程運(yùn)行的太慢了,你可以通過指定一個(gè)較低的nice值去為它分配更多的CPU資源。當(dāng)然,這意味著其他的一些進(jìn)程將被分配更少的CPU資源,運(yùn)行更慢一些。Linux支持nice值的范圍是19(低優(yōu)先級(jí))到-20(高優(yōu)先級(jí)),默認(rèn)的值是0。如果需要改變一個(gè)進(jìn)程的nice值為負(fù)數(shù)(高優(yōu)先級(jí)),必須使用su命令登陸到root用戶。下面是一些調(diào)整nice值的命令示例,
以nice值-5開始程序xyz
#nice –n -5 xyz
改變已經(jīng)運(yùn)行的程序的nice值
#renice level pid
將pid為2500的進(jìn)程的nice值改為10
#renice 10 2500
僵尸進(jìn)程
當(dāng)一個(gè)進(jìn)程被結(jié)束,在它結(jié)束之前通常需要用一些時(shí)間去完成所有的任務(wù)(比如關(guān)閉打開的文件),在一個(gè)很短的時(shí)間里,這個(gè)進(jìn)程的狀態(tài)為僵尸狀態(tài)。在進(jìn)程完成所有關(guān)閉任務(wù)之后,會(huì)向父進(jìn)程提交它關(guān)閉的信息。有些情況下,一個(gè)僵尸進(jìn)程不能關(guān)閉它自己,這時(shí)這個(gè)進(jìn)程狀態(tài)就為z(zombie)。不能使用kill命令殺死僵尸進(jìn)程,因?yàn)樗呀?jīng)標(biāo)志為“dead”。如果你無法擺脫一個(gè)僵尸進(jìn)程,你可以殺死它的父進(jìn)程,這個(gè)僵尸進(jìn)程也就消失了。然而,如果父進(jìn)程是init進(jìn)程,你不能殺死init進(jìn)程,因?yàn)閕nit是一個(gè)重要的系統(tǒng)進(jìn)程,這種情況下你只能通過一次重新啟動(dòng)服務(wù)器來擺脫僵尸進(jìn)程。也必須分析應(yīng)用為什么會(huì)導(dǎo)致僵死?
三、iostat
iostat是sysstat包的一部分。Iostat顯示自系統(tǒng)啟動(dòng)后的平均CPU時(shí)間(與uptime類似),它也可以顯示磁盤子系統(tǒng)的使用情況,iostat可以用來監(jiān)測(cè)CPU利用率和磁盤利用率。
點(diǎn)擊在新窗口中瀏覽此圖片
CPU利用率分四個(gè)部分:
引用
%user:user level(應(yīng)用)的CPU占用率情況
%nice:加入nice優(yōu)先級(jí)的user level的CPU占用率情況
%sys:system level(內(nèi)核)的CPU占用情況
%idle:空閑的CPU資源情況
磁盤占用率有下面幾個(gè)部分:
引用
Device:塊設(shè)備名
Tps:設(shè)備每秒進(jìn)行傳輸?shù)臄?shù)量(每秒的I/O請(qǐng)求)。多個(gè)單獨(dú)的I/O請(qǐng)求可以被組成一個(gè)傳輸操作,因?yàn)橐粋(gè)傳輸操作可以是不同的容量。
Blk_read/s, Blk_wrtn/s:該設(shè)備每秒讀寫的塊的數(shù)量。塊可能為不同的容量。
Blk_read, Blk_wrtn:自系統(tǒng)啟動(dòng)以來讀寫的塊設(shè)備的總量。
塊的大小
塊可能為不同的容量。塊的大小一般為1024、2048、4048byte。可通過tune2fs或dumpe2fs獲得:
引用
[root@rfgz ~]# tune2fs -l /dev/hda1|grep 'Block size'
Block size: 4096
[root@rfgz ~]# dumpe2fs -h /dev/hda1|grep 'Block size'
dumpe2fs 1.35 (28-Feb-2004)
Block size: 4096
四、Vmstat
Vmstat命令提供了對(duì)進(jìn)程、內(nèi)存、頁面I/O塊和CPU等信息的監(jiān)控,vmstat可以顯示檢測(cè)結(jié)果的平均值或者取樣值,取樣模式可以提供一個(gè)取樣時(shí)間段內(nèi)不同頻率的監(jiān)測(cè)結(jié)果。
點(diǎn)擊在新窗口中瀏覽此圖片
注:在取樣模式中需要考慮在數(shù)據(jù)收集中可能出現(xiàn)的誤差,將取樣頻率設(shè)為比較低的值可以盡可能的減小誤差的影響。
下面介紹一下各列的含義
引用
·process(procs)
r:等待運(yùn)行時(shí)間的進(jìn)程數(shù)量
b:處在不可中斷睡眠狀態(tài)的進(jìn)程
w:被交換出去但是仍然可以運(yùn)行的進(jìn)程,這個(gè)值是計(jì)算出來的
·memoryswpd:虛擬內(nèi)存的數(shù)量
free:空閑內(nèi)存的數(shù)量
buff:用做緩沖區(qū)的內(nèi)存數(shù)量
·swap
si:從硬盤交換來的數(shù)量
so:交換到硬盤去的數(shù)量
·IO
bi:向一個(gè)塊設(shè)備輸出的塊數(shù)量
bo:從一個(gè)塊設(shè)備接受的塊數(shù)量
·system
in:每秒發(fā)生的中斷數(shù)量, 包括時(shí)鐘
cs:每秒發(fā)生的context switches的數(shù)量
·cpu(整個(gè)cpu運(yùn)行時(shí)間的百分比)
us:非內(nèi)核代碼運(yùn)行的時(shí)間(用戶時(shí)間,包括nice時(shí)間)
sy:內(nèi)核代碼運(yùn)行的時(shí)間(系統(tǒng)時(shí)間)
id:空閑時(shí)間,在Linux 2.5.41之前的內(nèi)核版本中,這個(gè)值包括I/O等待時(shí)間;
wa:等待I/O操作的時(shí)間,在Linux 2.5.41之前的內(nèi)核版本中這個(gè)值為0
Vmstat命令提供了大量的附加參數(shù),下面列舉幾個(gè)十分有用的參數(shù):
引用
·m:顯示內(nèi)核的內(nèi)存利用率
·a:顯示內(nèi)存頁面信息,包括活躍和不活躍的內(nèi)存頁面
·n:顯示報(bào)頭行,這個(gè)參數(shù)在使用取樣模式并將命令結(jié)果輸出到一個(gè)文件時(shí)非常有用。例如root#vmstat –n 2 10以2秒的頻率顯示10輸出結(jié)果
·當(dāng)使用-p {分區(qū)}時(shí),vmstat提供對(duì)I/O結(jié)果的統(tǒng)計(jì)
點(diǎn)擊在新窗口中瀏覽此圖片
點(diǎn)擊在新窗口中瀏覽此圖片
五、ps和pstree
ps和pstree命令是系統(tǒng)分析最常用的基本命令,ps命令提供了一個(gè)正在運(yùn)行的進(jìn)程的列表,列出進(jìn)程的數(shù)量取決于命令所附加的參數(shù)。例如ps –A 命令列出所有進(jìn)程和它們相應(yīng)的進(jìn)程ID(PID),進(jìn)程的PID是使用其他一些工具之前所必須了解的,例如pmap或者renice。
在運(yùn)行java應(yīng)用的系統(tǒng)上,ps –A 命令的輸出很容易就會(huì)超過屏幕的顯示范圍,這樣就很難得到所有進(jìn)程的完整信息。這時(shí),使用pstree命令可以以樹狀結(jié)構(gòu)來顯示所有的進(jìn)程信息并且可以整合子進(jìn)程的信息。Pstree命令對(duì)分析進(jìn)程的來源十分有用。
點(diǎn)擊在新窗口中瀏覽此圖片
六、Numastat
隨著NUMA架構(gòu)的不斷發(fā)展,例如eServer xSeries 445及其后續(xù)產(chǎn)品eServer xSeries 460,現(xiàn)在NUMA架構(gòu)已經(jīng)成為了企業(yè)級(jí)數(shù)據(jù)中心的主流。然而,NUMA架構(gòu)在性能調(diào)優(yōu)方面面臨了新的挑戰(zhàn),例如內(nèi)存分配的問題在NUMA系統(tǒng)之前并沒人感興趣,而Numastat命令提供了一個(gè)監(jiān)測(cè)NUMA架構(gòu)的工具。Numastat命令提供了本地內(nèi)存與遠(yuǎn)程內(nèi)存使用情況的對(duì)比和各個(gè)節(jié)點(diǎn)的內(nèi)存使用情況。Numa_miss列顯示分配失敗的本地內(nèi)存,numa_foreign列顯示分配遠(yuǎn)程內(nèi)存(訪問速度慢)信息,過多的調(diào)用遠(yuǎn)程內(nèi)存將增加系統(tǒng)的延遲從而影響整個(gè)系統(tǒng)的性能。使運(yùn)行在一個(gè)節(jié)點(diǎn)上的進(jìn)程都訪問本地內(nèi)存將極大的改善系統(tǒng)的性能。
點(diǎn)擊在新窗口中瀏覽此圖片
※我使用的系統(tǒng)不支持NUMA架構(gòu),此圖為原文檔截圖。
七、sar
sar程序也是sysstat安裝包的一部分。sar命令用于收集、報(bào)告和保存系統(tǒng)的信息。Sar命令由三個(gè)應(yīng)用組成:sar,用與顯示數(shù)據(jù);sa1和sa2,用于收集和存儲(chǔ)數(shù)據(jù)。默認(rèn)情況下,系統(tǒng)會(huì)在crontab中加入自動(dòng)收集和分析的操作:
引用
[root@rfgz ~]# cat /etc/cron.d/sysstat
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A
sar命令所生成的數(shù)據(jù)保存在/var/log/sa/目錄下,數(shù)據(jù)按照時(shí)間保存,可以根據(jù)時(shí)間來查詢相應(yīng)的性能數(shù)據(jù)。
你也可以使用sar在命令行下得到一個(gè)實(shí)時(shí)的執(zhí)行結(jié)果,收集的數(shù)據(jù)可以包括CPU利用率、內(nèi)存頁面、網(wǎng)絡(luò)I/O等等。下面的命令表示用sar執(zhí)行5次,間隔時(shí)間為3秒:
點(diǎn)擊在新窗口中瀏覽此圖片
八、free
free命令顯示系統(tǒng)的所有內(nèi)存的使用情況,包括空閑內(nèi)存、被使用的內(nèi)存和交換內(nèi)存空間。Free命令顯示也包括一些內(nèi)核使用的緩存和緩沖區(qū)的信息。
當(dāng)使用free命令的時(shí)候,需要記住linux的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理方法,比如空閑內(nèi)存數(shù)量的限制,還有swap空間的使用并不標(biāo)志一個(gè)內(nèi)存瓶頸的出現(xiàn)。
點(diǎn)擊在新窗口中瀏覽此圖片
Free命令有用的參數(shù):
引用
·-b,-k,-m和-g分別按照bytes, kilobytes, megabytes, gigabytes顯示結(jié)果。
·-l區(qū)別顯示low和high內(nèi)存
·-c {count}顯示free輸出的次數(shù)
九、Pmap
pmap命令顯示一個(gè)或者多個(gè)進(jìn)程使用內(nèi)存的數(shù)量,你可以用這個(gè)工具來確定服務(wù)器上哪個(gè)進(jìn)程占用了過多的內(nèi)存從而導(dǎo)致內(nèi)存瓶頸。
點(diǎn)擊在新窗口中瀏覽此圖片
十、Strace
strace截取和記錄進(jìn)程的系統(tǒng)調(diào)用信息,還包括進(jìn)程接受的命令信號(hào)。這是一個(gè)有用的診斷和調(diào)試工具,系統(tǒng)管理員可以通過strace來解決程序上的問題。
命令格式,需要指定需要監(jiān)測(cè)的進(jìn)程ID。這個(gè)多為開發(fā)人員使用。
strace -p <pid>
十一、ulimit
可以通過ulimit來控制系統(tǒng)資源的使用。請(qǐng)看以前的日志:使用ulimit和proc去調(diào)整系統(tǒng)參數(shù)
十二、Mpstat
mpstat命令也是sysstat包的一部分。Mpstat命令用于監(jiān)測(cè)一個(gè)多CPU系統(tǒng)中每個(gè)可用CPU的情況。Mpstat命令可以顯示每個(gè)CPU或者所有CPU的運(yùn)行情況,同時(shí)也可以像vmstat命令那樣使用參數(shù)進(jìn)行一定頻率的采樣結(jié)果的監(jiān)測(cè)。
點(diǎn)擊在新窗口中瀏覽此圖片
十三、附錄
本文截取和修改自IBM的紅皮書Tuning Red Hat Enterprise Linux on IBM eServer xSeries Servers。
關(guān)鍵字:CentOS、命令行、性能檢、測(cè)工具
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解