CPU
查看 CPU 型號和個數(shù):grep 'model name' /proc/cpuinfo
uptime
[biocloo@app2 ~]$ uptime
11:22:44 up 99 days, 14:53, 2 users, load average: 2.03, 1.70, 1.61
// 11:22:44 當(dāng)前時間
// up 99 days, 14:53 系統(tǒng)運(yùn)行時間
// 2 users 正在登陸的用戶數(shù)
// load average 后面的三個數(shù)字分別是過去 1分鐘,5分鐘,15分鐘的平均負(fù)載
top:系統(tǒng)摘要信息以及當(dāng)前由Linux內(nèi)核管理的進(jìn)程或線程列表
# 第一行的含義與使用 uptime 返回的一樣。
# 第二行表示總進(jìn)程數(shù)和線程數(shù),和分類。
# 第三行表示 CPU 狀態(tài)百分比
# user(通??s寫為 us),代表用戶態(tài) CPU 時間。注意,它不包括下面的 nice 時間,但包括了 guest 時間。
# system(通??s寫為 sy),代表內(nèi)核態(tài) CPU 時間。
# nice(通??s寫為 ni),代表低優(yōu)先級用戶態(tài) CPU 時間,也就是進(jìn)程的 nice 值被調(diào)整為 1-19 之間時的 CPU 時間。這里注意,nice 可取值范圍是 -20 到 19,數(shù)值越大,優(yōu)先級反而越低。
# idle(通??s寫為 id),代表空閑時間。注意,它不包括等待 I/O 的時間(iowait)。
# iowait(通??s寫為 wa),代表等待 I/O 的 CPU 時間。
# irq(通??s寫為 hi),代表處理硬中斷的 CPU 時間。
# softirq(通常縮寫為 si),代表處理軟中斷的 CPU 時間。
# steal(通??s寫為 st),代表當(dāng)系統(tǒng)運(yùn)行在虛擬機(jī)中的時候,被其他虛擬機(jī)占用的 CPU 時間。
# 第四行反應(yīng)物理內(nèi)存使用情況,單位為千字節(jié)
# 第五行反應(yīng)虛擬內(nèi)存。
# 第六行
# PID 進(jìn)程ID
# USER 任務(wù)所有者
# PR 優(yōu)先級。rt 表示實時。
# NI 任務(wù)的 nice value。負(fù)的意味著更高的優(yōu)先級,而正的意味著更低的優(yōu)先級。 此字段中的零值僅表示在確定任務(wù)的調(diào)度能力時不會調(diào)整優(yōu)先級。
# VIRT 虛擬內(nèi)存大小。此任務(wù)已使用的虛擬內(nèi)存總量。它包括所有代碼,數(shù)據(jù)和共享庫以及已換出的頁面和已映射但未使用的頁面。
# RES 駐留內(nèi)存大小。任務(wù)正在使用的非交換物理內(nèi)存。
# SHR 共享內(nèi)存大小??捎糜谌蝿?wù)的共享內(nèi)存量,并非所有內(nèi)容通常都是駐留的。 它只是反映了可能與其他進(jìn)程共享的內(nèi)存。
# S 進(jìn)程狀態(tài)。D 不間斷睡眠。R 運(yùn)行。S 睡眠。T 被作業(yè)控制信號停止。t 在 debug 被停止。Z 僵尸。
# %CPU CPU 使用率
# %MEM 內(nèi)存使用率
# TIME+ 自任務(wù)啟動使用總 CPU 時間。
[biocloo@app2 ~]$ top
top - 15:47:57 up 99 days, 19:18, 1 user, load average: 0.49, 1.15, 1.61
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.3 us, 0.8 sy, 0.0 ni, 93.2 id, 0.1 wa, 0.0 hi, 0.6 si, 0.0 st
KiB Mem : 16267724 total, 572080 free, 7713840 used, 7981804 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 8153176 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26703 biocloo 20 0 7892880 2.026g 7244 S 20.0 13.1 1727:22 java
25533 biocloo 20 0 1264128 143588 4200 S 2.7 0.9 3269:04 filebeat
13217 biocloo 20 0 10.663g 1.859g 8148 S 1.3 12.0 227:15.47 java
1168 root 20 0 2531604 85292 3016 S 1.0 0.5 616:51.62 java
9 root 20 0 0 0 0 S 0.3 0.0 157:15.55 rcu_sched
1091 root 20 0 122040 892 296 S 0.3 0.0 48:07.98 wrapper
9269 root 0 -20 128384 9228 4652 S 0.3 0.1 194:31.22 AliYunDun
26855 biocloo 20 0 7895992 2.784g 7216 S 0.3 17.9 1287:51 java
1 root 20 0 43392 2888 1556 S 0.0 0.0 1:30.58 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.27 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 5:34.81 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:28.66 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
10 root rt 0 0 0 0 S 0.0 0.0 0:21.78 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:17.62 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:30.18 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 16:33.84 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:18.12 watchdog/2
17 root rt 0 0 0 0 S 0.0 0.0 0:27.21 migration/2
18 root 20 0 0 0 0 S 0.0 0.0 5:39.52 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:17.55 watchdog/3
22 root rt 0 0 0 0 S 0.0 0.0 0:29.42 migration/3
mpstat:每個可用CPU的活動,默認(rèn)是CPU利用率報告。
// -P ALL 表示監(jiān)控所有 CPU,后面數(shù)字 5 表示間隔 5 秒后輸出一組數(shù)據(jù)
[biocloo@app2 ~]$ mpstat -P ALL 5
Linux 3.10.0-693.2.2.el7.x86_64 (app2) 2019年03月08日 _x86_64_ (4 CPU)
11時26分39秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11時26分44秒 all 8.42 0.00 1.20 0.10 0.00 0.80 0.00 0.00 0.00 89.48
11時26分44秒 0 9.05 0.00 1.21 0.00 0.00 0.40 0.00 0.00 0.00 89.34
11時26分44秒 1 7.26 0.00 1.01 0.00 0.00 0.81 0.00 0.00 0.00 90.93
11時26分44秒 2 9.60 0.00 1.40 0.20 0.00 0.80 0.00 0.00 0.00 88.00
11時26分44秒 3 7.78 0.00 1.40 0.00 0.00 1.00 0.00 0.00 0.00 89.82
11時26分44秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11時26分49秒 all 7.15 0.00 1.11 0.10 0.00 0.81 0.00 0.00 0.00 90.84
11時26分49秒 0 8.25 0.00 1.21 0.20 0.00 0.80 0.00 0.00 0.00 89.54
11時26分49秒 1 4.23 0.00 0.60 0.00 0.00 0.60 0.00 0.00 0.00 94.56
11時26分49秒 2 9.22 0.00 1.40 0.20 0.00 0.80 0.00 0.00 0.00 88.38
11時26分49秒 3 7.09 0.00 0.81 0.00 0.00 1.01 0.00 0.00 0.00 91.09
pidstat:用于監(jiān)控當(dāng)前由Linux內(nèi)核管理的各個任務(wù)
-u 查看 cpu 使用指標(biāo)
-w 查看進(jìn)程切換指標(biāo)
-t 與所選任務(wù)關(guān)聯(lián)的線程的統(tǒng)計信息。
# UID 用戶ID
# PID 任務(wù)ID
# %usr:用戶態(tài) CPU 使用率。
# %system:內(nèi)核態(tài) CPU 使用率。
# %guest 運(yùn)行虛擬機(jī) CPU 使用率。
# %wait 等待 CPU 使用率。
# %CPU 以及總的 CPU 使用率。
# CPU 任務(wù)在第幾個 CPU 上運(yùn)行。
# 每間隔5秒輸出一組數(shù)據(jù),一共輸出3組。
[biocloo@app2 ~]$ pidstat -u 5 3
Linux 3.10.0-693.2.2.el7.x86_64 (app2) 2019年03月08日 _x86_64_ (4 CPU)
11時32分31秒 UID PID %usr %system %guest %CPU CPU Command
11時32分36秒 0 41 0.00 0.20 0.00 0.20 2 kswapd0
11時32分36秒 0 281 0.00 0.20 0.00 0.20 3 jbd2/vda1-8
11時32分36秒 0 1168 0.20 0.00 0.00 0.20 1 java
11時32分36秒 0 1312 0.20 0.00 0.00 0.20 1 aliyun-service
11時32分36秒 0 9269 0.20 0.20 0.00 0.40 0 AliYunDun
11時32分36秒 1000 13217 3.19 0.60 0.00 3.79 0 java
11時32分36秒 1000 25533 3.59 0.20 0.00 3.79 2 filebeat
11時32分36秒 1000 26703 24.95 3.59 0.00 28.54 0 java
11時32分36秒 1000 26855 0.20 0.00 0.00 0.20 2 java
11時32分36秒 UID PID %usr %system %guest %CPU CPU Command
11時32分41秒 0 9 0.00 0.20 0.00 0.20 1 rcu_sched
11時32分41秒 0 1168 0.20 0.20 0.00 0.40 1 java
11時32分41秒 1000 4153 0.00 0.20 0.00 0.20 1 pidstat
11時32分41秒 0 9269 0.00 0.20 0.00 0.20 1 AliYunDun
11時32分41秒 1000 13217 3.40 0.40 0.00 3.80 0 java
11時32分41秒 1000 25533 3.60 1.00 0.00 4.60 2 filebeat
11時32分41秒 1000 26703 27.40 4.20 0.00 31.60 0 java
11時32分41秒 1000 26855 0.00 0.20 0.00 0.20 2 java
11時32分41秒 UID PID %usr %system %guest %CPU CPU Command
11時32分46秒 0 9 0.00 0.20 0.00 0.20 1 rcu_sched
11時32分46秒 0 1168 0.60 0.00 0.00 0.60 1 java
11時32分46秒 0 9269 0.20 0.00 0.00 0.20 1 AliYunDun
11時32分46秒 1000 13217 1.80 0.40 0.00 2.20 0 java
11時32分46秒 1000 25533 3.80 0.00 0.00 3.80 2 filebeat
11時32分46秒 1000 26703 27.60 2.60 0.00 30.20 0 java
平均時間: UID PID %usr %system %guest %CPU CPU Command
平均時間: 0 9 0.00 0.13 0.00 0.13 - rcu_sched
平均時間: 0 41 0.00 0.07 0.00 0.07 - kswapd0
平均時間: 0 281 0.00 0.07 0.00 0.07 - jbd2/vda1-8
平均時間: 0 1168 0.33 0.07 0.00 0.40 - java
平均時間: 0 1312 0.07 0.00 0.00 0.07 - aliyun-service
平均時間: 1000 4153 0.00 0.07 0.00 0.07 - pidstat
平均時間: 0 9269 0.13 0.13 0.00 0.27 - AliYunDun
平均時間: 1000 13217 2.80 0.47 0.00 3.26 - java
平均時間: 1000 25533 3.66 0.40 0.00 4.06 - filebeat
平均時間: 1000 26703 26.65 3.46 0.00 30.11 - java
平均時間: 1000 26855 0.07 0.07 0.00 0.13 - java
vmstat:虛擬內(nèi)存,上下文切換統(tǒng)計信息。
//* r(Running or Runnable):是就緒隊列的長度,也就是正在運(yùn)行和等待 CPU 的進(jìn)程數(shù)。
//* b(Blocked):則是處于不可中斷睡眠狀態(tài)的進(jìn)程數(shù)。
// swpd:使用的虛擬內(nèi)存量。
// free:空閑內(nèi)存量。
// buff:用作緩沖區(qū)的內(nèi)存量。
// cache:用作緩存的內(nèi)存量。
// si:從磁盤交換的內(nèi)存量。
// so:交換到磁盤的內(nèi)存量。
// bi:從塊設(shè)備接收的塊。
// bo:發(fā)送到塊設(shè)備的塊。
//* in(interrupt)則是每秒中斷的次數(shù)。
//* cs(context switch)是每秒上下文切換的次數(shù)。
// us:運(yùn)行非內(nèi)核代碼所花費(fèi)的時間。
// sy:運(yùn)行內(nèi)核代碼所花費(fèi)的時間。
// id:空閑時間。在Linux 2.5.41之前,這包括IO等待時間。
// wa:等待IO的時間。在Linux 2.5.41之前,包含在空閑狀態(tài)。
// st:從虛擬機(jī)中竊取的時間。在Linux 2.6.11之前,未知。
// 每隔 1 秒統(tǒng)計一次,共統(tǒng)計一次。
[biocloo@app2 ~]$ vmstat 1 1
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 0 382140 255512 7938204 0 0 19 103 0 1 6 1 93 0 0
2 0 0 379664 255520 7940528 0 0 0 113 7891 6022 8 2 91 0 0
0 0 0 380408 255512 7940004 0 0 0 154 7483 5758 7 2 91 0 0
0 0 0 383244 255476 7938936 0 0 0 2791 9373 7165 9 2 88 0 0
0 0 0 384320 255484 7941596 0 0 0 103 9010 6962 9 2 89 0 0
perf:Linux 性能分析
Overhead ,是該符號的性能事件在所有采樣中的比例,用百分比來表示。
Shared ,是該函數(shù)或指令所在的動態(tài)共享對象(Dynamic Shared Object),如內(nèi)核、進(jìn)程名、動態(tài)鏈接庫名、內(nèi)核模塊名等。
Object ,是動態(tài)共享對象的類型。比如 [.] 表示用戶空間的可執(zhí)行程序、或者動態(tài)鏈接庫,而 [k] 則表示內(nèi)核空間。
Symbol 是符號名,也就是函數(shù)名。當(dāng)函數(shù)名未知時,用十六進(jìn)制的地址來表示。
[root@centos ~]# perf top
Samples: 625 of event 'cpu-clock', Event count (approx.): 130078096
Overhead Shared Object Symbol
11.45% [kernel] [k] _raw_spin_unlock_irqrestore
4.41% [kernel] [k] finish_task_switch
3.48% [kernel] [k] tick_nohz_idle_enter
3.24% [kernel] [k] module_get_kallsym
3.09% [kernel] [k] __memcpy
3.09% [kernel] [k] kallsyms_expand_symbol.constprop.1
2.83% perf [.] __symbols__insert
2.80% [kernel] [k] vsnprintf
2.67% [kernel] [k] format_decode
2.32% perf [.] rb_next
2.26% [kernel] [k] clear_page_c
1.95% perf [.] rb_insert_color
1.91% perf [.] __dso__load_kallsyms
1.79% libc-2.17.so [.] _int_malloc
1.77% [kernel] [k] number.isra.2
1.62% libc-2.17.so [.] __strcmp_sse42
1.32% [kernel] [k] string.isra.7
1.32% perf [.] 0x00000000000ca264
1.25% beam.smp [.] sched_spin_wait
1.23% [kernel] [k] rcu_gp_kthread
1.18% [kernel] [k] strnlen
1.18% perf [.] 0x00000000000ca277
1.08% [kernel] [k] rcu_process_callbacks
1.03% libc-2.17.so [.] _IO_getdelim
1.03% libc-2.17.so [.] __memcpy_sse2
1.03% perf [.] hex2u64
0.97% perf [.] 0x000000000019bc27
0.95% libc-2.17.so [.] __libc_calloc
0.88% [kernel] [k] pointer.isra.19
perf top 是實時的,不能保存數(shù)據(jù),perf record采樣數(shù)據(jù)。使用 perf report 查看保存的數(shù)據(jù)。