CPU效能分析工具
lscpu:檢視CPU硬體資訊
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 4
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Model name: Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz
Stepping: 0
CPU MHz: 2999.498
BogoMIPS: 6000.00
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 25600K
NUMA node0 CPU(s): 0-3
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm fsgsbase tsc_adjust smep arat
lscpu
:命令可以檢視當前CPU配置資訊,包括處理器型號以及核心數快取等資訊,CPU相當於人體的大腦,在系統中起著非常重要的作用,CPU效能越高,處理任務的能力就越強。
sar/top/uptime/mpstat/vmstat:CPU效能分析工具
sar命令
sar
命令是系統管理員必須掌握的一項重要技能,sar
命令可以用來分析幾乎所有的系統資訊,這就要求我們不得不掌握。
- 安裝sar命令
yum -y install sysstat
- 使用sar命令分析CPU負載
sar -u
[root@domainX ~]# sar -u
Cannot open /var/log/sa/sa30: No such file or directory
如果出現以上的報錯,是因為sar命令還沒有建立當天的檔案,sar會將資料寫入到/var/log/sa目錄下,如果需要也可以從該目錄下讀取響應時間段的日誌進行分析,當出現以上報錯時執行
sar -o 1
來建立相應檔案即可,建立檔案後可以正常使用該命令。
sar -u
Linux 3.10.0-693.el7.x86_64 (domainX.com) 01/30/2019 _x86_64_ (4 CPU)
06:34:32 AM CPU %user %nice %system %iowait %steal %idle
06:34:33 AM all 5.00 0.00 3.75 0.00 0.00 91.25
06:34:34 AM all 4.24 0.00 4.24 0.00 0.00 91.52
06:34:35 AM all 4.77 0.00 3.52 0.00 0.00 91.71
06:34:36 AM all 4.51 0.00 3.51 0.00 0.00 91.98
06:34:37 AM all 5.01 0.00 3.51 0.00 0.00 91.48
06:34:37 AM all 6.84 0.00 5.70 0.00 0.00 87.45
06:40:01 AM all 4.84 0.00 3.53 0.00 0.00 91.62
Average: all 4.84 0.00 3.54 0.00 0.00 91.61
- %user 使用者模式下消耗的CPU時間的比例;
- %nice 通過nice改變了程式排程優先順序的程式,在使用者模式下消耗的CPU時間的比例
- %system 系統模式下消耗的CPU時間的比例;
- %iowait CPU等待磁碟I/O導致空閒狀態消耗的時間比例;
- %steal 利用Xen等作業系統虛擬化技術,等待其它虛擬CPU計算佔用的時間比例;
- %idle CPU空閒時間比例。
sar -u 執行時長 執行次數
:使用詳細引數可以獲得自己需要的詳細資訊,如果只輸入一個引數,將會一直執行。
top命令
top命令應該是工作中使用頻率較高的命令,主要可以用來分析當前系統上執行的程式佔用CPU記憶體百分比等詳情,要注意的是top命令是動態的。
top
top - 06:59:35 up 5 days, 1:50, 1 user, load average: 1.01, 1.03, 0.87
Tasks: 196 total, 1 running, 195 sleeping, 0 stopped, 0 zombie
%Cpu0 : 4.3 us, 4.6 sy, 0.0 ni, 91.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 8.0 us, 2.3 sy, 0.0 ni, 89.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 4.0 us, 4.3 sy, 0.0 ni, 91.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 3.3 us, 3.0 sy, 0.0 ni, 93.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3865308 total, 219532 free, 903832 used, 2741944 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2461924 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18216 polkitd 20 0 618040 15924 5344 S 7.0 0.4 404:15.95 polkitd
4564 vnc 20 0 3708324 387844 70204 S 6.6 10.0 340:10.11 gnome-shell
729 dbus 20 0 63620 3752 1872 S 2.3 0.1 139:20.52 dbus-daemon
3904 root 20 0 396292 6064 3184 S 2.0 0.2 98:04.54 accounts-daemon
4687 vnc 20 0 456552 3364 2736 S 0.7 0.1 37:05.68 gsd-account
4700 vnc 20 0 712568 15436 9560 S 0.3 0.4 1:38.53 gsd-color
1 root 20 0 193920 6984 4048 S 0.0 0.2 0:19.82 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.08 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:04.29 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:29.91 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 3:32.82 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:01.54 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:01.48 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:29.17 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:04.12 ksoftirqd/1
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
16 root rt 0 0 0 0 S 0.0 0.0 0:01.51 watchdog/2
17 root rt 0 0 0 0 S 0.0 0.0 0:29.48 migration/2
18 root 20 0 0 0 0 S 0.0 0.0 0:03.82 ksoftirqd/2
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H
21 root rt 0 0 0 0 S 0.0 0.0 0:01.50 watchdog/3
22 root rt 0 0 0 0 S 0.0 0.0 0:29.93 migration/3
23 root 20 0 0 0 0 S 0.0 0.0 0:04.09 ksoftirqd/3
25 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0H
27 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
28 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
29 root 20 0 0 0 0 S 0.0 0.0 0:00.28 khungtaskd
30 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
31 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
32 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
33 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
34 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
40 root 20 0 0 0 0 S 0.0 0.0 0:00.14 kswapd0
41 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
42 root 39 19 0 0 0 S 0.0 0.0 0:01.88 khugepaged
43 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
在top動態介面中按大寫的P可以以程式的CPU佔用從高到低進行排序,方便我們在CPU使用率非常高的情況下快速定位到是那個程式導致的,按大寫的M將會以程式記憶體佔用百分比由高到低進行排序,按1將會顯示當前所有CPU的使用情況。順便說下這個命令吧,也比較常用。
ps -aux --sort -pcpu
是按照CPU佔用進行排序。
uptime命令
uptime命令非常簡單,只是用來看系統執行的負載情況以及時間,沒什麼可以詳細講解的。需要我們注意的是load average給出的三個值分別代表系統1分鐘、5分鐘以及15分鐘的負載情況,如果第一個值負載很低,第三個值負載很高,那就表明15分鐘前系統的負載很高,但是現在已經恢復了,具體數值多少用來評價負載的高低呢,這個沒有一個準確的數字,正常情況下是和CPU核心數成正比的,例如:4C伺服器當負載達到4時已經非常高了。
mpstat命令
使用此命令得到的資料和以上資料資訊類似,這裡也就不詳細解釋資料的引數了。mpstat
[root@domainX ~]# mpstat
Linux 3.10.0-693.el7.x86_64 (domainX.com) 01/30/2019 _x86_64_ (4 CPU)
07:04:31 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:04:31 AM all 3.83 0.00 2.66 0.01 0.00 0.10 0.00 0.00 0.00 93.40
vmstat命令
vmstat命令與mpstat命令類似,vmstat命令也提供了很多重要的系統資訊,所以我們需要對輸出內容有一定的瞭解。
vmstat
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 0 219660 4708 2737284 0 0 1 2 3 22 4 3 93 0 0
- procs:b這列表示的是不可中斷睡眠的程式,這個數值往往與磁碟IO有關。
- system:in/cs數值偏高說明系統繁忙。
- CPU:st資源在虛擬化環境中比較重要,例如st數值偏高可能是物理主機上執行了太多虛擬機器導致。
geekbench:CPU壓測工具
一個商業化軟體,可以對CPU效能進行壓測,最終生成web版介面評分,感興趣的同學可以執行下面的命令在Linux 7系列上進行安裝。
sudo yum -y install glibc.i686 libstdc++ libstdc++.i686
sudo wget http://qiniu.pasca.top/Geekbench-4.3.0-Linux.tar.gz
sudo tar xf Geekbench-4.3.0-Linux.tar.gz
cd Geekbench-4.3.0-Linux/
./geekbench_x86_64