linux 查看CPU詳情命令: 近期在查看設備CPU所以參考牛人的信息進行了復習及整理。
一、直觀查詢CPU數量
邏輯CPU個數: # cat /proc/cpuinfo | grep 'processor' | wc -l
物理CPU個數: # cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
每個物理CPU中Core的個數: # cat /proc/cpuinfo | grep 'cpu cores' | wc -l
二、查看CPU的詳細信息
#cat /proc/cpuinfo
各個字段意義:
processor 邏輯處理器的id。
physical id 物理封裝的處理器的id。
core id 每個核心的id。
cpu cores 位於相同物理封裝的處理器中的內核數量。
siblings 位於相同物理封裝的處理器中的邏輯處理器的數量。
具有相同core id的cpu是同一個core的超線程。具有相同physical id的cpu是同一顆cpu封裝的線程或者cores。 如果“siblings”和“cpu cores”一致,則說明不支持超線程,或者超線程未打開。 如果“siblings”是“cpu cores”的兩倍,則說明支持超線程,並且超線程已打開。 顯示4個邏輯CPU,通過physical id,前面兩個邏輯cpu的相同,后面兩個的相同,所以有兩個物理CPU。前面兩個的 core id相同,后面的兩個core ID相同,說明這兩個CPU都是單核。也就是說兩個單核cpu,啟用了超線程技術。
1.擁有相同 physical id 的所有邏輯處理器共享同一個物理插座。每個 physical id 代表一個唯一的物理封裝。 2.Siblings 表示位於這一物理封裝上的邏輯處理器的數量。它們可能支持也可能不支持超線程(HT)技術。 3.每個 core id 均代表一個唯一的處理器內核。所有帶有相同 core id 的邏輯處理器均位於同一個處理器內核上。 4.如果有一個以上邏輯處理器擁有相同的 core id 和 physical id,則說明系統支持超線程(HT)技術。 5.如果有兩個或兩個以上的邏輯處理器擁有相同的 physical id,但是 core id 不同,則說明這是一個多內核處理器。cpu cores 條目也可以表示是否支持多內核。 例如,如果系統包含兩個物理封裝,每個封裝中又包含兩個支持超線程(HT)技術的處理器內核,則 /proc/cpuinfo 文件將包含此數據。(注:數據並不在表格中。)
三、查看CPU的使用情況
1、top 這個命令很常用,在第三行有顯示CPU當前的使用情況。
# top -bn 1 -i -c
top - 14:19:51 up 138 days, 7:15, 1 user, load average: 0.20, 0.33, 0.39
Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.5%us, 3.8%sy, 0.0%ni, 91.0%id, 0.6%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1014660k total, 880512k used, 134148k free, 264904k buffers
Swap: 262140k total, 34788k used, 227352k free, 217144k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12760 root 20 0 15084 1944 1632 R 2.0 0.2 0:00.01 top -bn 1 -i -c
如上所示,top命令可以看到總體的系統運行狀態和cpu的使用率 。 %us:表示用戶空間程序的cpu使用率(沒有通過nice調度) %sy:表示系統空間的cpu使用率,主要是內核程序。 %ni:表示用戶空間且通過nice調度過的程序的cpu使用率。 %id:空閑cpu %wa:cpu運行時在等待io的時間 %hi:cpu處理硬中斷的數量 %si:cpu處理軟中斷的數量 %st:被虛擬機偷走的cpu
2、vmstat
之前在本博客中有介紹過vmstat的使用,詳細使用和參數介紹參考網址:http://www.sijitao.net/1925.html 。
# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 34792 68376 147688 356132 16 16 421 385 2 2 5 4 91 1 0
3 0 34792 97368 147688 326884 0 0 0 0 133 134 15 6 79 0 0
1 0 34792 62432 147696 360704 0 0 0 88 267 278 63 18 19 0 0
0 0 34792 97160 147696 326904 0 0 0 0 71 82 12 4 84 0 0
1 0 34792 56572 147696 364540 0 0 0 4 261 246 61 23 16 0 0
3、sar sar命令語法和vmstat一樣。命令不存在時需要安裝sysstat包,這個包很有用。 CPU使用率 例如每1秒采集一次CPU使用率,共采集5次。
# sar -u 1 5
Linux 3.18.5-x86_64-linode52 (li676-235) 07/20/2015 _x86_64_ (1 CPU)
02:41:25 PM CPU %user %nice %system %iowait %steal %idle
02:41:26 PM all 64.71 0.00 18.63 0.00 0.98 15.69
02:41:27 PM all 29.47 0.00 22.11 14.74 0.00 33.68
02:41:28 PM all 67.33 0.00 31.68 0.99 0.00 0.00
02:41:29 PM all 7.00 0.00 2.00 0.00 0.00 91.00
02:41:30 PM all 69.00 0.00 23.00 0.00 0.00 8.00
Average: all 47.79 0.00 19.48 3.01 0.20 29.52
和top一樣,可以看到所有cpu的使用情況。如果需要查看某顆cpu的使用可以用-P參數。例如指定顯示0號cpu 的使用情況。
# sar -P 0 -u 1 5
Linux 3.18.5-x86_64-linode52 (li676-235) 07/20/2015 _x86_64_ (1 CPU)
02:45:14 PM CPU %user %nice %system %iowait %steal %idle
02:45:15 PM 0 44.00 0.00 52.00 4.00 0.00 0.00
02:45:16 PM 0 9.28 0.00 26.80 62.89 1.03 0.00
02:45:17 PM 0 3.06 0.00 14.29 81.63 1.02 0.00
02:45:18 PM 0 4.12 0.00 22.68 72.16 1.03 0.00
02:45:19 PM 0 4.12 0.00 22.68 72.16 1.03 0.00
Average: 0 13.09 0.00 27.81 58.28 0.82 0.00
進程隊列長度和平均負載狀態 例如每1秒采集一次,共采集5次。
# sar -q 1 5
Linux 3.18.5-x86_64-linode52 (li676-235) 07/20/2015 _x86_64_ (1 CPU)
02:48:47 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
02:48:48 PM 1 133 0.34 0.43 0.41
02:48:49 PM 2 132 0.34 0.43 0.41
02:48:50 PM 1 133 0.34 0.43 0.41
02:48:51 PM 2 134 0.31 0.42 0.40
02:48:52 PM 1 133 0.31 0.42 0.40
Average: 1 133 0.33 0.43 0.41
輸出項: runq-sz:運行隊列的長度(等待運行的進程數) plist-sz:進程列表中進程(processes)和線程(threads)的數量 ldavg-1:最后1分鍾的系統平均負載(System load average) ldavg-5:過去5分鍾的系統平均負載 ldavg-15:過去15分鍾的系統平均負載 進程創建的平均值和上下文切換的次數
例如每1秒收集一次,共收集5次。
# sar -w 1 5
Linux 3.18.5-x86_64-linode52 (li676-235) 07/20/2015 _x86_64_ (1 CPU)
02:54:03 PM proc/s cswch/s
02:54:04 PM 1.01 156.57
02:54:05 PM 1.00 132.00
02:54:06 PM 2.00 201.00
02:54:07 PM 2.02 126.26
02:54:08 PM 2.00 114.00
Average: 1.61 145.98
sar命令也可以獲取過去指定日期的性能參數。
# sar -u -f /var/log/sa/sa20
Linux 3.18.5-x86_64-linode52 (li676-235) 07/20/2015 _x86_64_ (1 CPU)
01:10:01 PM CPU %user %nice %system %iowait %steal %idle
01:20:02 PM all 25.78 0.00 8.88 3.59 0.15 61.60
01:30:01 PM all 26.06 0.00 9.96 3.33 0.10 60.55
01:40:01 PM all 25.73 0.00 9.17 3.70 0.09 61.32
01:50:01 PM all 25.70 0.00 9.50 2.79 0.12 61.89
02:00:01 PM all 26.70 0.00 9.73 2.20 0.10 61.28
02:10:01 PM all 26.16 0.00 9.56 4.34 0.11 59.82
02:20:01 PM all 25.49 0.00 9.61 2.76 0.07 62.07
02:30:01 PM all 26.47 0.00 9.94 0.64 0.30 62.65
02:40:02 PM all 27.32 0.00 10.37 3.86 0.15 58.30
02:50:02 PM all 26.98 0.00 10.38 4.56 0.13 57.95
Average: all 26.24 0.00 9.71 3.18 0.13 60.74
4、mpstat 這個命令也在sysstat包中,語法類似。 例如每1秒收集一次,共5次。
# mpstat 1 5
Linux 3.18.5-x86_64-linode52 (li676-235) 07/20/2015 _x86_64_ (1 CPU)
03:01:18 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:01:19 PM all 52.53 0.00 23.23 0.00 0.00 0.00 0.00 0.00 24.24
03:01:20 PM all 21.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 75.00
03:01:21 PM all 53.00 0.00 18.00 0.00 0.00 0.00 0.00 0.00 29.00
03:01:22 PM all 26.00 0.00 3.00 0.00 0.00 0.00 0.00 0.00 71.00
03:01:23 PM all 46.00 0.00 18.00 0.00 0.00 0.00 0.00 0.00 36.00
Average: all 39.68 0.00 13.23 0.00 0.00 0.00 0.00 0.00 47.09
cpu使用情況比sar更加詳細些,也可以用-P指定某顆cpu 。
5、iostat 這個命令主要用來查看io使用情況,也可以來查看cpu,個人感覺不常用。
# iostat -c 1 2
Linux 3.18.5-x86_64-linode52 (li676-235) 07/20/2015 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
4.53 0.01 3.81 0.63 0.04 90.99
avg-cpu: %user %nice %system %iowait %steal %idle
38.00 0.00 14.00 0.00 0.00 48.00
6、dstat 每秒cpu使用率情況獲取
# dstat -c
----total-cpu-usage----
usr sys idl wai hiq siq
5 4 91 1 0 0
27 11 62 0 0 0
52 11 37 0 0 0
26 10 63 0 0 1
50 13 37 0 0 1
21 6 72 0 0 0
最占cpu的進程獲取
# dstat --top-cpu
-most-expensive-
cpu process
mysqld 1.5
php-fpm: pool 24
mysqld 59