Linux性能工具
以下操作都在linux上進(jìn)行五辽,為了能夠讓故事正常進(jìn)行敛熬,用docker配一個centos出來
// 新建一個容器 并執(zhí)行腳本
docker run -itd centos:latest /bin/bash
// 如果退出,需要再次進(jìn)入的場合
docker exec -it xx /bin/bash
cpu性能
uptime 得到平均負(fù)載
[root@bd03d2536b13 /]# uptime
11:14:41 up 16:30, 0 users, load average: 2.76, 2.88, 2.97
- 當(dāng)前時間 16:30
- 系統(tǒng)已運行的時間 11:14:41
- 當(dāng)前在線用戶0 user
- 平均負(fù)載:2.76, 2.88, 2.97冰抢,最近1分鐘算凿、5分鐘念恍、15分鐘系統(tǒng)的負(fù)載
cat /proc/loadavg 最直接查看系統(tǒng)平均負(fù)載命令
[root@bd03d2536b13 /]# cat /proc/loadavg
3.52 3.11 3.04 5/761 36
除了前3個數(shù)字表示平均進(jìn)程數(shù)量外,后面的1個分?jǐn)?shù)趣避,分母表示系統(tǒng)進(jìn)程總數(shù)庞呕,分子表示正在運行的進(jìn)程數(shù);最后一個數(shù)字表示最近運行的進(jìn)程ID
top指令
top - 11:33:27 up 16:49, 0 users, load average: 3.17, 3.02, 3.03
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 71.2 us, 12.4 sy, 0.0 ni, 16.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1989.5 total, 123.2 free, 1537.8 used, 328.5 buff/cache
MiB Swap: 1024.0 total, 201.7 free, 822.2 used. 302.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 12028 3000 2644 S 0.0 0.1 0:00.08 bash
14 root 20 0 12028 3292 2756 S 0.0 0.2 0:00.07 bash
41 root 20 0 48412 3772 3168 R 0.0 0.2 0:00.00 top
top指令有很多組合程帕,這個之后再說住练。先只是簡單的top指令。
第一行:和uptime得到的數(shù)據(jù)差不多愁拭,最后一個如果大于5相當(dāng)于是系統(tǒng)負(fù)載很高的意思了讲逛。
top - 11:33:27 up 16:49, 0 users, load average: 3.17, 3.02, 3.03
第二行:表達(dá)當(dāng)前任務(wù)有3個,1個在跑岭埠,兩個睡眠盏混,0個停止,0個僵尸線程
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
第三行:表達(dá)cpu情況如何
%Cpu(s): 71.2 us, 12.4 sy, 0.0 ni, 16.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- us, user: 用戶空間占用CPU的百分比惜论。
- sy许赃,system: 內(nèi)核空間占用CPU的百分比。
- ni馆类,niced:運行已調(diào)整優(yōu)先級的用戶進(jìn)程的CPU時間
- wa混聊,IO wait: 用于等待IO完成的CPU時間
- hi:處理硬件中斷的CPU時間
- si: 處理軟件中斷的CPU時間
- st:這個虛擬機被hypervisor偷去的CPU時間(譯注:如果當(dāng)前處于一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)乾巧。
可以使用t指令切換顯示句喜。
第四行:表達(dá)內(nèi)存使用情況,類似于free指令沟于。第一行是物理內(nèi)存使用咳胃,第二行是虛擬內(nèi)存使用(交換空間)。
MiB Mem : 1989.5 total, 123.2 free, 1537.8 used, 328.5 buff/cache
MiB Swap: 1024.0 total, 201.7 free, 822.2 used. 302.2 avail Mem
物理內(nèi)存顯示如下:全部可用內(nèi)存社裆、已使用內(nèi)存拙绊、空閑內(nèi)存、緩沖內(nèi)存泳秀。
交換部分顯示的是:全部标沪、已使用、空閑和緩沖交換空間嗜傅。
可以用m指令切換顯示金句。
各個進(jìn)程的狀態(tài)主體:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 12028 3000 2644 S 0.0 0.1 0:00.08 bash
14 root 20 0 12028 3292 2756 S 0.0 0.2 0:00.07 bash
41 root 20 0 48412 3772 3168 R 0.0 0.2 0:00.00 top
PID:進(jìn)程ID,進(jìn)程的唯一標(biāo)識符
USER:進(jìn)程所有者的實際用戶名吕嘀。
PR:進(jìn)程的調(diào)度優(yōu)先級违寞。這個字段的一些值是'rt'贞瞒。這意味這這些進(jìn)程運行在實時態(tài)。
NI:進(jìn)程的nice值(優(yōu)先級)趁曼。越小的值意味著越高的優(yōu)先級军浆。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級
VIRT:進(jìn)程使用的虛擬內(nèi)存挡闰。進(jìn)程使用的虛擬內(nèi)存總量乒融,單位kb。VIRT=SWAP+RES
RES:駐留內(nèi)存大小摄悯。駐留內(nèi)存是任務(wù)使用的非交換物理內(nèi)存大小赞季。進(jìn)程使用的、未被換出的物理內(nèi)存大小奢驯,單位kb申钩。RES=CODE+DATA
SHR:SHR是進(jìn)程使用的共享內(nèi)存。共享內(nèi)存大小瘪阁,單位kb
-
S:這個是進(jìn)程的狀態(tài)撒遣。它有以下不同的值:
- D - 不可中斷的睡眠態(tài)。
- R – 運行態(tài)
- S – 睡眠態(tài)
- T – 被跟蹤或已停止
- Z – 僵尸態(tài)
%CPU:自從上一次更新時到現(xiàn)在任務(wù)所使用的CPU時間百分比罗洗。
%MEM:進(jìn)程使用的可用物理內(nèi)存百分比愉舔。
TIME+:任務(wù)啟動后到現(xiàn)在所使用的全部CPU時間,精確到百分之一秒伙菜。
COMMAND:運行進(jìn)程所使用的命令轩缤。進(jìn)程名稱(命令名/命令行)
1指令可以看到每個核上的情況
vmstat
這個指令可以得到系統(tǒng)整體的cpu使用率上下文切換次數(shù),中斷次數(shù)贩绕,還包括處于運行和不可中斷狀態(tài)的進(jìn)程數(shù)量火的。
[root@bd03d2536b13 /]# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 849408 829344 66192 281136 1 4 9 12 3 88 56 10 35 0 0
4 0 849408 613752 66240 279692 0 0 0 156 6027 9175 23 19 58 0 0
4 0 849408 367984 66248 279580 0 0 0 28 5881 6941 43 16 40 0 0
4 0 849408 283032 66248 279572 0 0 0 9 6702 6924 66 13 21 0 0
4 0 849408 243308 66252 279904 0 0 0 4 6421 7482 74 10 17 0 0
5 5的含義是5s內(nèi)進(jìn)行5次采樣
r: 運行隊列中進(jìn)程數(shù)量
b: 等待IO的進(jìn)程數(shù)量
swpd: 使用虛擬內(nèi)存大小
free: 可用內(nèi)存大小
buff: 用作緩沖的內(nèi)存大小
cache: 用作緩存的內(nèi)存大小
si: 每秒從交換區(qū)寫到內(nèi)存的大小
so: 每秒寫入交換區(qū)的內(nèi)存大小
bi: 每秒讀取的塊數(shù)
bo: 每秒寫入的塊數(shù)
in: 每秒中斷數(shù),包括時鐘中斷淑倾×蠛祝【interrupt】
cs: 每秒上下文切換數(shù)。 【count/second】
us: 用戶進(jìn)程執(zhí)行時間(user time)
sy: 系統(tǒng)進(jìn)程執(zhí)行時間(system time)
id: 空閑時間(包括IO等待時間),中央處理器的空閑時間 娇哆。以百分比表示湃累。
wa: 等待IO時間
如果r經(jīng)常大于4,id經(jīng)常少于40碍讨,表示cpu的負(fù)荷很重治力。
如果bi,bo長期不等于0勃黍,表示內(nèi)存不足宵统。
如果disk經(jīng)常不等于0,且在b中的隊列大于3覆获,表示io性能不好马澈。