關(guān)于Linux性能調(diào)優(yōu)系統(tǒng)CPU監(jiān)測信息統(tǒng)計(jì)的一些筆記

      網(wǎng)友投稿 1302 2022-05-29

      寫在前面

      博文內(nèi)容部分參考于《Linux性能優(yōu)化》中文版一書,學(xué)習(xí)后記錄,感興趣小伙伴可以支持下譯者

      博文涉及內(nèi)容:

      CPU相關(guān)的基礎(chǔ)指標(biāo)的解釋:運(yùn)行隊(duì)列,平均負(fù)載,上下文切換,中斷,CPU使用率

      CPU監(jiān)控信息統(tǒng)計(jì)的常用工具中關(guān)于CPU信息的統(tǒng)計(jì)方式:

      vmstat

      mpstat

      sar

      top(3.0)

      人總是害怕去追求自己最重要的夢想,因?yàn)樗麄冇X得自己不配擁有,或者覺得自己沒有能力去完成。 ——保羅.柯艾略《牧羊少年奇幻之旅》

      CPU相關(guān)的基礎(chǔ)指標(biāo)

      運(yùn)行隊(duì)列統(tǒng)計(jì)

      在Linux中,一個進(jìn)程有可運(yùn)行的,阻塞的(正在等待一個事件的完成)兩種情況。阻塞進(jìn)程可能在等待的是從I/O設(shè)備來的數(shù)據(jù),或者是系統(tǒng)調(diào)用的結(jié)果。

      如果進(jìn)程是可運(yùn)行的,那就意味著它要和其他也是可運(yùn)行的進(jìn)程競爭CPU時間。一個可運(yùn)行的進(jìn)程不一定會使用CPU,但是當(dāng)Linux調(diào)度器決定下一個要運(yùn)行的進(jìn)程時,它會從可運(yùn)行進(jìn)程隊(duì)列中挑選。

      如果進(jìn)程是可運(yùn)行的,同時又在等待使用處理器,這些進(jìn)程就構(gòu)成了運(yùn)行隊(duì)列。運(yùn)行隊(duì)列越長,處于等待狀態(tài)的進(jìn)程就越多?性能工具通常會給出可運(yùn)行的進(jìn)程個數(shù)和等待I/O的阻塞進(jìn)程個數(shù)。

      系統(tǒng)的負(fù)載是指正在運(yùn)行和可運(yùn)行的進(jìn)程總數(shù)。比如,如果正在運(yùn)行的進(jìn)程為兩個,而可運(yùn)行的進(jìn)程為三個,那么系統(tǒng)負(fù)載就是5,平均負(fù)載是給定時間內(nèi)的負(fù)載量。

      上下文切換

      制造出給定單處理器同時運(yùn)行多個任務(wù)的假象,?Linux內(nèi)核就要不斷地在不同的進(jìn)程間切換。這種不同進(jìn)程間的切換稱為上下文切換

      上下文切換時, CPU要保存舊進(jìn)程的所有上下文信息,并取出新進(jìn)程的所有上下文信息。上下文中包含了Linux跟蹤新進(jìn)程的大量信息,其中包括:?進(jìn)程正在執(zhí)行的指令,分配給進(jìn)程的內(nèi)存,進(jìn)程打開的文件等

      上下文切換涉及大量信息的移動,上下文切換的開銷可以是相當(dāng)大的。

      上下文切換可以是內(nèi)核調(diào)度的結(jié)果。為了保證公平地給每個進(jìn)程分配處理器時間,內(nèi)核周期性地中斷正在運(yùn)行的進(jìn)程,?在適當(dāng)?shù)那闆r下,內(nèi)核調(diào)度器會決定開始另一個進(jìn)程,而不是讓當(dāng)前進(jìn)程繼續(xù)執(zhí)行。每次這種周期性中斷或定時發(fā)生時,系統(tǒng)都可能進(jìn)行上下文切換。每秒定時中斷的次數(shù)與架構(gòu)和內(nèi)核版本有關(guān)。

      一個檢查中斷頻率的簡單方法是用/proc/interrupts文件,它可以確定已知時長內(nèi)發(fā)生的中斷次數(shù)。

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$cat /proc/interrupts | grep time; sleep 5 ;cat /proc/interrupts | grep time 0: 337 0 IO-APIC-edge timer LOC: 9896498 9871317 Local timer interrupts 0: 337 0 IO-APIC-edge timer LOC: 9901529 9876213 Local timer interrupts ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      上面定時器的啟動頻率為(9896498-9901529)/5 =1000,即每秒要終端1000次,同時也可以理解為內(nèi)核為sleep進(jìn)程分配了1000次CPU,

      如果你的上下文切換明顯多于定時器中斷,那么這些切換極有可能是由I/O請求或其他長時間運(yùn)行的系統(tǒng)調(diào)用(如休眠)造成的。當(dāng)應(yīng)用請求的操作不能立即完成時,內(nèi)核啟動該操作,保存請求進(jìn)程,并嘗試切換到另一個已就緒進(jìn)程。這能讓處理器盡量保持忙狀態(tài)。

      中斷

      處理器還周期性地從硬件設(shè)備接收中斷。當(dāng)設(shè)備有事件需要內(nèi)核處理時,它通常就會觸發(fā)這些中斷。

      比如,如果磁盤控制器剛剛完成從驅(qū)動器取數(shù)據(jù)塊的操作,并準(zhǔn)備好提供給內(nèi)核,那么磁盤控制器就會觸發(fā)一個中斷。對內(nèi)核收到的每個中斷,如果已經(jīng)有相應(yīng)的已注冊的中斷處理程序,就運(yùn)行該程序,否則將忽略這個中斷。

      中斷處理程序在系統(tǒng)中具有很高的運(yùn)行優(yōu)先級,并且通常執(zhí)行速度也很快。查看/proc/interrupts文件可以顯示出哪些CPU上觸發(fā)了哪些中斷。

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$cat /proc/interrupts CPU0 CPU1 0: 337 0 IO-APIC-edge timer 1: 10 0 IO-APIC-edge i8042 8: 1 0 IO-APIC-edge rtc0 9: 0 0 IO-APIC-fasteoi acpi 12: 16 0 IO-APIC-edge i8042 14: 0 0 IO-APIC-edge ata_piix 15: 0 0 IO-APIC-edge ata_piix 17: 57939 0 IO-APIC-fasteoi ioc0 18: 14 9800 IO-APIC-fasteoi ens32 24: 0 0 PCI-MSI-edge PCIe PME, pciehp 25: 0 0 PCI-MSI-edge PCIe PME, pciehp 26: 0 0 PCI-MSI-edge PCIe PME, pciehp 27: 0 0 PCI-MSI-edge PCIe PME, pciehp ....................... THR: 0 0 Threshold APIC interrupts DFR: 0 0 Deferred Error APIC interrupts MCE: 0 0 Machine check exceptions MCP: 37 37 Machine check polls ERR: 0 MIS: 0 PIN: 0 0 Posted-interrupt notification event PIW: 0 0 Posted-interrupt wakeup event ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      CPU使用率

      一個具有?高“系統(tǒng)”百分比?的系統(tǒng)表明其大部分時間都消耗在了內(nèi)核上。像oprofile一樣的工具可以幫助確定時間都消耗在了哪里。具有?高“用戶”時間?的系統(tǒng)則將其大部分時間都用來運(yùn)行應(yīng)用程序。

      CPU監(jiān)控信息統(tǒng)計(jì)

      vmstat (虛擬內(nèi)存統(tǒng)計(jì))

      vmstat是一個很有用的命令,它能獲取整個系統(tǒng)性能的粗略信息,包括:

      正在運(yùn)行的進(jìn)程個數(shù)

      CPU的使用情況

      CPU接收的中斷個數(shù)

      調(diào)度器執(zhí)行的上下文切換次數(shù)

      ┌──(liruilong?Liruilong)-[/mnt/c/Users/lenovo] └─$ vmstat -help Usage: vmstat [options] [delay [count]] Options: -a, --active active/inactive memory -f, --forks number of forks since boot -m, --slabs slabinfo -n, --one-header do not redisplay header -s, --stats event counter statistics -d, --disk disk statistics -D, --disk-sum summarize disk statistics -p, --partition partition specific statistics -S, --unit define display unit -w, --wide wide output -t, --timestamp show timestamp -h, --help display this help and exit -V, --version output version information and exit For more details see vmstat(8). ┌──(liruilong?Liruilong)-[/mnt/c/Users/lenovo] └─$

      $vmstat [-n] [-s] [delay [count ]]

      關(guān)于Linux性能調(diào)優(yōu)中系統(tǒng)CPU監(jiān)測信息統(tǒng)計(jì)的一些筆記

      vmstat運(yùn)行于兩種模式:采樣模式和平均模式。如果不指定參數(shù),則vmstat統(tǒng)計(jì)運(yùn)行于平均模式下.

      vmstat顯示從系統(tǒng)啟動以來所有統(tǒng)計(jì)數(shù)據(jù)的均值。但是,如果指定了延遲,那么第一個采樣仍然是系統(tǒng)啟動以來的均值,但之后vmstat按延遲秒數(shù)采樣系統(tǒng)并顯示統(tǒng)計(jì)數(shù)據(jù)。

      -n 參數(shù)的區(qū)別

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$vmstat 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 1064772 2072 1764796 0 0 60 26 1501 832 8 4 87 1 0 0 0 0 1064964 2072 1764800 0 0 0 70 2993 4939 19 8 73 0 0 0 0 0 1064400 2072 1764800 0 0 0 0 2832 6916 24 10 66 0 0 .............. 0 0 0 1064156 2072 1764952 0 0 0 32 2449 3900 3 2 95 0 0 0 0 0 1064196 2072 1764860 0 0 0 16 2647 4124 6 2 91 0 0 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 4 0 0 1058828 2072 1764860 0 0 0 24 3121 5182 8 4 88 0 0 1 0 0 1064608 2072 1764820 0 0 0 0 3070 5297 10 6 83 0 0 0 0 0 1064608 2072 1764820 0 0 0 32 2674 4136 3 2 95 0 0 0 0 0 1064296 2072 1764820 0 0 0 0 2560 3943 3 1 95 0 0 ^C

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$vmstat -n 1 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 1063952 2072 1764808 0 0 59 26 1501 838 8 4 87 1 0 7 0 0 1064472 2072 1764812 0 0 0 38 2869 4611 9 4 87 0 0 2 0 0 1063476 2072 1764876 0 0 0 28 3467 8176 31 15 54 0 0 0 0 0 1063476 2072 1764876 0 0 0 0 2482 3629 14 2 84 0 0 0 0 0 1063476 2072 1764876 0 0 0 28 2459 3691 3 2 96 0 0 0 0 0 1063368 2072 1764864 0 0 0 36 2691 4061 5 1 94 0 0 0 0 0 1062864 2072 1764864 0 0 0 44 2714 4420 6 2 92 0 0 0 0 0 1063104 2072 1764864 0 0 0 32 2963 4514 8 3 88 0 0 ............ 1 0 0 1063868 2072 1765000 0 0 0 107 2657 6989 33 14 52 0 0 0 0 0 1063868 2072 1765000 0 0 0 0 2830 4315 6 3 91 0 0 0 0 0 1063868 2072 1765000 0 0 0 28 2430 3908 5 3 92 0 0 0 0 0 1063868 2072 1765000 0 0 0 0 2358 3551 2 2 96 0 0 ......... 1 0 0 1064136 2072 1765112 0 0 0 0 2736 4000 6 3 91 0 0 4 0 0 1063764 2072 1765112 0 0 0 48 2492 3779 5 2 93 1 0 0 0 0 1063484 2072 1765112 0 0 0 0 2650 4071 4 2 94 0 0 0 0 0 1063304 2072 1765116 0 0 0 99 2727 4430 7 3 90 0 0 0 0 0 1063392 2072 1765116 0 0 0 12 2554 3811 2 1 97 0 0 0 0 0 1064012 2072 1765120 0 0 0 48 2585 4291 14 5 81 0 0 0 0 0 1064136 2072 1765120 0 0 0 0 2576 4057 4 2 94 0 0 ^C ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      -s 的統(tǒng)計(jì)

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$vmstat -s 4030172 K total memory 1199020 K used memory 1277200 K active memory 1428408 K inactive memory 1064028 K free memory 2072 K buffer memory 1765052 K swap cache 0 K total swap 0 K used swap 0 K free swap 206387 non-nice user cpu ticks 3 nice user cpu ticks 100381 system cpu ticks 2184710 idle cpu ticks 12604 IO-wait cpu ticks 0 IRQ cpu ticks 4699 softirq cpu ticks 0 stolen cpu ticks 1473622 pages paged in 652550 pages paged out 0 pages swapped in 0 pages swapped out 37633050 interrupts 64361523 CPU context switches 1642162657 boot time 210962 forks ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      CPU相關(guān)的列名含義

      vmstat的開銷很低,可以讓它在控制臺上或窗口中持續(xù)運(yùn)行,甚至是在負(fù)載非常重的服務(wù)器上是很實(shí)用的。

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$vmstat 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 1057540 2072 1761012 0 0 68 27 1501 595 8 4 87 1 0 ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      查看CPU平均值,當(dāng)前系統(tǒng)中,可運(yùn)行進(jìn)程為2?,被阻塞的進(jìn)程為0(b),系統(tǒng)發(fā)生中斷次數(shù)1501(in),系統(tǒng)發(fā)生上下文切換次數(shù)為595(cs),系統(tǒng)代碼消耗CPU為4%(sy),用戶代碼消耗CPU為8%(us),系統(tǒng)空閑占比87%(id),剩余1%屬于等待IO消耗的CPU空閑狀態(tài)(wa),

      上下文切換的數(shù)量小于中斷的數(shù)量。調(diào)度器切換進(jìn)程的次數(shù)少于定時器中斷觸發(fā)的次數(shù)?。這很可能是因?yàn)橄到y(tǒng)基本上是空閑的,在定時器中斷觸發(fā)的大多數(shù)時候,調(diào)度器沒有任何工作要做,因此它也不需要從空閑進(jìn)程切換出去。

      CPU 統(tǒng)計(jì)的含義

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$vmstat -s .......... 206387 non-nice user cpu ticks 3 nice user cpu ticks 100381 system cpu ticks 2184710 idle cpu ticks 12604 IO-wait cpu ticks 0 IRQ cpu ticks 4699 softirq cpu ticks 0 stolen cpu ticks ............ 37633050 interrupts 64361523 CPU context switches ........... 210962 forks

      這里的ticks為一個時間單位,相關(guān)數(shù)據(jù)為自系統(tǒng)啟動時間以來的數(shù)據(jù)。forks表示系統(tǒng)創(chuàng)建以來的進(jìn)程數(shù),CPU context switches表示上下文文切換次數(shù),interrupts即中斷次數(shù),剩下的參數(shù)對應(yīng)上面的列理解即可,stolen cpu 這個不太理解

      top(3.0.X 版本)

      top?小伙伴應(yīng)該不陌生,不多講,直接看語法

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$top -help procps-ng version 3.3.10 Usage: top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols] ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      top呈現(xiàn)為一個降序列表,排在最前面的是最占用CPU的進(jìn)程。

      $top [-d delay] [-n iter] [-i] [-b]

      top實(shí)際有兩種模式的選項(xiàng):命令行選項(xiàng)和運(yùn)行時選項(xiàng)。

      命令行選項(xiàng)決定top如何顯示其信息。

      下面問間隔3s統(tǒng)計(jì)2次的top信息

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$top -d 3 -n 2 top - 09:26:22 up 13:08, 1 user, load average: 0.56, 0.48, 0.55 Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie %Cpu(s): 9.9 us, 5.5 sy, 0.0 ni, 84.3 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 4030172 total, 1079708 free, 1204872 used, 1745592 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2470484 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2195 root 20 0 1174904 380988 47392 S 10.0 9.5 95:15.71 kube-apiserver 963 root 20 0 1777988 142376 59968 S 5.6 3.5 41:04.34 kubelet 2204 root 20 0 823728 98312 36136 S 5.6 2.4 47:06.26 kube-controller 4348 root 20 0 1657820 47488 21052 S 5.3 1.2 42:28.29 calico-node 2266 root 20 0 10.696g 77632 19904 S 3.0 1.9 23:51.16 etcd 1121 root 20 0 1369820 85076 28388 S 2.7 2.1 15:55.04 dockerd 973 root 20 0 1099192 43512 16860 S 0.7 1.1 4:32.81 containerd 3057 root 20 0 737756 29904 12424 S 0.7 0.7 3:34.82 speaker 3564 root 20 0 713096 15152 4312 S 0.7 0.4 1:50.31 containerd-shim 4313 root 20 0 713096 15596 4256 S 0.7 0.4 1:25.70 containerd-shim 9 root 20 0 0 0 0 S 0.3 0.0 2:05.06 rcu_sched 13 root 20 0 0 0 0 S 0.3 0.0 0:07.26 ksoftirqd/1 2214 root 20 0 754268 41856 19352 S 0.3 1.0 4:25.88 kube-scheduler 3774 root 20 0 751232 34032 15932 S 0.3 0.8 1:25.77 coredns 4261 root 20 0 751488 30832 15880 S 0.3 0.8 1:30.06 coredns 4369 polkitd 20 0 745532 33232 14124 S 0.3 0.8 0:21.00 kube-controller 1 root 20 0 191024 4028 2516 S 0.0 0.1 0:47.38 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:07.85 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:06.99 kworker/0:0 .......

      下面為只顯示非空閑進(jìn)程

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$top -i top - 09:35:45 up 13:18, 1 user, load average: 0.17, 0.45, 0.53 Tasks: 216 total, 3 running, 213 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.4 us, 3.2 sy, 0.0 ni, 89.1 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 4030172 total, 1070632 free, 1213464 used, 1746076 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2461980 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2195 root 20 0 1174904 380988 47392 S 14.3 9.5 96:25.19 kube-apiserver 2204 root 20 0 823728 98312 36136 S 6.3 2.4 47:40.78 kube-controller 4348 root 20 0 1657820 47516 21052 S 5.3 1.2 42:59.36 calico-node 963 root 20 0 1777988 141712 59968 S 4.3 3.5 41:34.55 kubelet 2266 root 20 0 10.696g 78684 19904 S 3.3 2.0 24:08.17 etcd 40370 root 20 0 745236 17168 8388 R 2.3 0.4 0:00.07 calico 1121 root 20 0 1369820 85496 28388 S 1.7 2.1 16:06.78 dockerd 2214 root 20 0 754268 41856 19352 S 0.7 1.0 4:28.98 kube-scheduler 3057 root 20 0 737756 30136 12424 S 0.7 0.7 3:37.40 speaker 9 root 20 0 0 0 0 S 0.3 0.0 2:06.53 rcu_sched 3023 root 20 0 713096 12892 3636 S 0.3 0.3 0:05.56 containerd-shim ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      -b 顯示全部的進(jìn)程,默認(rèn)只顯示當(dāng)前的頁能容納的進(jìn)程

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$top -d 3 -n 1 -b top - 09:31:42 up 13:14, 1 user, load average: 1.21, 0.70, 0.61 Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie %Cpu(s): 3.6 us, 3.6 sy, 0.0 ni, 92.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 4030172 total, 1078040 free, 1206028 used, 1746104 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2469136 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 963 root 20 0 1777988 141592 59968 S 12.5 3.5 41:21.46 kubelet 36906 root 20 0 157716 2124 1496 R 12.5 0.1 0:00.02 top 2195 root 20 0 1174904 380988 47392 S 6.2 9.5 95:55.13 kube-apiserver 2266 root 20 0 10.696g 78684 19904 S 6.2 2.0 24:00.85 etcd 3057 root 20 0 737756 30460 12424 S 6.2 0.8 3:36.32 speaker 4348 root 20 0 1657820 47304 21052 S 6.2 1.2 42:45.70 calico-node 1 root 20 0 191024 4028 2516 S 0.0 0.1 0:47.68 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:07.90 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:07.03 kworker/0:0 ........ 31 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0 32 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd 33 root 39 19 0 0 0 S 0.0 0.0 0:01.02 khugepaged 34 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto 42 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld 44 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd 45 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused 46 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:2 ........ 259 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_4 260 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_6 261 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_6 262 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_7 ......... 273 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_12 274 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_13 275 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_13 276 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_14 277 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_14 278 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_15 279 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_15 ........... 4297 root 20 0 4228 400 328 S 0.0 0.0 0:00.00 runsv 4313 root 20 0 713096 15340 4256 S 0.0 0.4 1:26.26 containerd-shim 4344 root 20 0 1141184 35748 16600 S 0.0 0.9 0:08.70 calico-node 4345 root 20 0 1583576 39300 18152 S 0.0 1.0 0:08.09 calico-node 4346 root 20 0 1141184 36808 17568 S 0.0 0.9 0:11.15 calico-node 4369 polkitd 20 0 745532 33232 14124 S 0.0 0.8 0:21.13 kube-controller 4526 root 20 0 756 260 196 S 0.0 0.0 0:24.63 bird6 4534 root 20 0 772 520 340 S 0.0 0.0 0:24.92 bird 14142 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u256:1 21599 root 20 0 0 0 0 S 0.0 0.0 0:00.21 kworker/1:1 26382 root 20 0 0 0 0 S 0.0 0.0 0:00.49 kworker/1:0 35491 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/1:2 77429 root 20 0 148316 5532 4232 S 0.0 0.1 0:00.50 sshd 77553 root 20 0 120900 7556 1704 S 0.0 0.2 0:00.18 bash 83235 root 20 0 0 0 0 S 0.0 0.0 0:01.76 kworker/u256:0 87183 postfix 20 0 89648 4024 3012 S 0.0 0.1 0:00.01 pickup ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      輸入 A 后,顯示為各個系統(tǒng)資源的最大消耗者,這個看不太懂,以后再研究

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$top -i 1:Def - 09:40:01 up 13:22, 1 user, load average: 0.17, 0.35, 0.47 Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie %Cpu(s): 11.6 us, 6.6 sy, 0.0 ni, 81.6 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 4030172 total, 1076864 free, 1206808 used, 1746500 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2468492 avail Mem 1 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2204 root 20 0 823728 98312 36136 S 6.3 2.4 47:55.47 kube-controller 4348 root 20 0 1657820 47444 21052 S 5.3 1.2 43:12.72 calico-node 1121 root 20 0 1369820 85496 28388 S 2.6 2.1 16:11.81 dockerd 2266 root 20 0 10.696g 78948 19904 S 2.6 2.0 24:15.45 etcd 973 root 20 0 1099192 43784 16860 S 1.0 1.1 4:37.63 containerd 2214 root 20 0 754268 41856 19352 S 0.7 1.0 4:30.34 kube-scheduler 1 root 20 0 191024 4028 2516 S 0.3 0.1 0:48.12 systemd 2 PID PPID TIME+ %CPU %MEM PR NI S VIRT RES UID COMMAND 83235 2 0:01.82 0.0 0.0 20 0 S 0 0 0 kworker/u256:0 77553 77429 0:00.20 0.0 0.2 20 0 S 120900 7556 0 bash 77429 966 0:00.71 0.0 0.1 20 0 S 148316 5532 0 sshd 43368 1085 0:00.02 0.0 0.1 20 0 S 89648 4024 89 pickup 40247 2 0:00.17 0.3 0.0 20 0 S 0 0 0 kworker/1:1 40239 77553 0:01.26 0.3 0.1 20 0 R 157720 2332 0 top 35491 2 0:00.00 0.0 0.0 20 0 S 0 0 0 kworker/1:2 3 PID %MEM VIRT RES CODE DATA SHR nMaj nDRT %CPU COMMAND 2195 9.5 1174904 380988 60052 1052908 47392 33 0 8.9 kube-apiserver 963 3.5 1778244 141228 88848 1618204 59968 520 0 7.0 kubelet 2204 2.4 823728 98312 56280 708052 36136 33 0 6.3 kube-controller 1121 2.1 1369820 85496 57240 1239752 28388 34 0 2.6 dockerd 2266 2.0 10.696g 78948 11824 706828 19904 6 0 2.6 etcd 4348 1.2 1657820 47444 30688 1590736 21052 0 0 5.3 calico-node 973 1.1 1099192 43784 33752 1041340 16860 488 0 1.0 containerd 2214 1.0 754268 41856 23924 706288 19352 16 0 0.7 kube-scheduler 4 PID PPID UID USER RUSER TTY TIME+ %CPU %MEM S COMMAND 975 1 29 rpcuser rpcuser ? 0:00.01 0.0 0.0 S rpc.statd 567 1 32 rpc rpc ? 0:00.19 0.0 0.0 S rpcbind 1 0 0 root root ? 0:48.12 0.3 0.1 S systemd 2 0 0 root root ? 0:00.05 0.0 0.0 S kthreadd 3 2 0 root root ? 0:07.97 0.0 0.0 S ksoftirqd/0 4 2 0 root root ? 0:07.09 0.0 0.0 S kworker/0:0 5 2 0 root root ? 0:00.00 0.0 0.0 S kworker/0:0H 7 2 0 root root ? 0:01.09 0.0 0.0 S migration/0

      輸入F時進(jìn)入配置界面,通過界面顯示可以配置詳細(xì)信息

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$top -i top - 09:48:03 up 13:30, 1 user, load average: 0.85, 0.64, 0.57 Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie %Cpu(s): 3.4 us, 3.4 sy, 0.0 ni, 93.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 4030172 total, 1076900 free, 1206184 used, 1747088 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2469016 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2204 root 20 0 823728 98312 36136 S 12.5 2.4 48:24.22 kube-controller 963 root 20 0 1778244 142228 59968 S 6.2 3.5 42:12.13 kubelet 2266 root 20 0 10.696g 79468 19904 S 6.2 2.0 24:29.30 etcd 4348 root 20 0 1657820 47396 21052 S 6.2 1.2 43:37.87 calico-node 50999 root 20 0 157720 2200 1500 R 6.2 0.1 0:00.01 top Fields Management for window 1:Def, whose current sort field is %CPU Navigate with Up/Dn, Right selects for move then or Left commits, 'd' or toggles display, 's' sets sort. Use 'q' or to end! * PID = Process Id SUPGIDS = Supp Groups IDs * USER = Effective User Name SUPGRPS = Supp Groups Names * PR = Priority TGID = Thread Group Id * NI = Nice Value ENVIRON = Environment vars * VIRT = Virtual Image (KiB) vMj = Major Faults delta * RES = Resident Size (KiB) vMn = Minor Faults delta * SHR = Shared Memory (KiB) USED = Res+Swap Size (KiB) * S = Process Status nsIPC = IPC namespace Inode * %CPU = CPU Usage nsMNT = MNT namespace Inode * %MEM = Memory Usage (RES) nsNET = NET namespace Inode * TIME+ = CPU Time, hundredths nsPID = PID namespace Inode * COMMAND = Command Name/Line nsUSER = USER namespace Inode PPID = Parent Process pid nsUTS = UTS namespace Inode UID = Effective User Id RUID = Real User Id RUSER = Real User Name SUID = Saved User Id SUSER = Saved User Name GID = Group Id GROUP = Group Name PGRP = Process Group Id TTY = Controlling Tty TPGID = Tty Process Grp Id SID = Session Id nTH = Number of Threads P = Last Used Cpu (SMP) TIME = CPU Time SWAP = Swapped Size (KiB) CODE = Code Size (KiB) DATA = Data+Stack (KiB) nMaj = Major Page Faults nMin = Minor Page Faults nDRT = Dirty Pages Count WCHAN = Sleeping in Function Flags = Task Flags CGROUPS = Control Groups

      在配置統(tǒng)計(jì)信息時,所有當(dāng)前被選擇的字段將會以大寫形式顯示在Current Field. Order行,并在其名稱旁出現(xiàn)一個星號(*),使用d來選擇刪除,使用s保存,q退出。

      修改只留5個列名展示

      Fields Management for window 1:Def, whose current sort field is %CPU Navigate with Up/Dn, Right selects for move then or Left commits, 'd' or toggles display, 's' sets sort. Use 'q' or to end! * PID = Process Id SUPGIDS = Supp Groups IDs * USER = Effective User Name SUPGRPS = Supp Groups Names PR = Priority TGID = Thread Group Id NI = Nice Value ENVIRON = Environment vars VIRT = Virtual Image (KiB) vMj = Major Faults delta RES = Resident Size (KiB) vMn = Minor Faults delta SHR = Shared Memory (KiB) USED = Res+Swap Size (KiB) S = Process Status nsIPC = IPC namespace Inode * %CPU = CPU Usage nsMNT = MNT namespace Inode * %MEM = Memory Usage (RES) nsNET = NET namespace Inode TIME+ = CPU Time, hundredths nsPID = PID namespace Inode * COMMAND = Command Name/Line nsUSER = USER namespace Inode PPID = Parent Process pid nsUTS = UTS namespace Inode UID = Effective User Id RUID = Real User Id RUSER = Real User Name SUID = Saved User Id SUSER = Saved User Name GID = Group Id GROUP = Group Name PGRP = Process Group Id TTY = Controlling Tty .....

      返回后發(fā)現(xiàn)只顯示了5列

      top - 09:55:38 up 13:38, 1 user, load average: 2.16, 1.20, 0.80 Tasks: 215 total, 2 running, 213 sleeping, 0 stopped, 0 zombie %Cpu(s): 8.1 us, 4.7 sy, 0.0 ni, 87.0 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 4030172 total, 1085120 free, 1197260 used, 1747792 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2477772 avail Mem PID USER %CPU %MEM COMMAND 2195 root 14.3 9.5 kube-apiserver 2266 root 8.0 1.7 etcd 2204 root 6.0 2.4 kube-controller 4348 root 5.0 1.2 calico-node 963 root 4.7 3.5 kubelet 1121 root 1.3 2.1 dockerd 3057 root 0.7 0.8 speaker 9 root 0.3 0.0 rcu_sched 542 root 0.3 0.2 vmtoolsd 973 root 0.3 1.1 containerd 2214 root 0.3 1.0 kube-scheduler 49390 root 0.3 0.0 kworker/1:2

      top性能統(tǒng)計(jì)信息

      %Cpu(s): 5.3 us(用戶消耗), 2.8 sy(系統(tǒng)消耗), 0.0 ni(友好值進(jìn)程消耗), 91.9 id(空閑CPU), 0.0 wa(等待I/O的CPU時間), 0.0 hi(irp處理程序消耗的CPU時間), 0.0 si(softirq處理消耗), 0.0 st(這個不知道)

      top - 09:26:22 up 13:08, 1 user, load average: 0.56, 0.48, 0.55(1分鐘、5分鐘和15分鐘的平均負(fù)載)

      列名 command為當(dāng)前進(jìn)程執(zhí)行的命令,更多小伙伴可以結(jié)合命令列表理解

      mpstat (多處理器統(tǒng)計(jì))

      mpstat是一個相當(dāng)簡單的命令,向你展示隨著時間變化的CPU行為。mpstat最大的優(yōu)點(diǎn)是在統(tǒng)計(jì)信息的旁邊顯示時間,由此,你可以找出CPU使用率與時間的關(guān)系。

      如果你有多個CPU或超線程CPU, mpstat還能夠把CPU使用率按處理器進(jìn)行區(qū)分,因此你可以發(fā)現(xiàn)與其他處理器相比,是否某個處理器做了更多的工作。你可以選擇想要監(jiān)控的單個處理器,也可以要求mpstat對所有的處理器都進(jìn)行監(jiān)控。

      ┌──[root@liruilongs.github.io]-[~] └─$ mpstat -help 用法: mpstat [ 選項(xiàng) ] [ <時間間隔> [ <次數(shù)> ] ] 選項(xiàng): [ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ] [ -P { [,...] | ON | ALL } ] ┌──[root@liruilongs.github.io]-[~] └─$

      mpstat -P { cpu | ALL} | delay [ count ]]

      使用-P監(jiān)控0所在的CPU

      ┌──[root@liruilongs.github.io]-[~] └─$ mpstat -P 0 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時31分09秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11時31分09秒 0 0.53 0.00 0.53 0.06 0.00 0.06 0.00 0.00 0.00 98.82 ┌──[root@liruilongs.github.io]-[~] └─$ mpstat -P 1 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時31分13秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11時31分13秒 1 0.52 0.00 0.53 0.06 0.00 0.05 0.00 0.00 0.00 98.84 ┌──[root@liruilongs.github.io]-[~] └─$

      監(jiān)控所有的CPU

      ┌──[root@liruilongs.github.io]-[~] └─$ mpstat -P ALL Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時35分17秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11時35分17秒 all 0.53 0.00 0.53 0.06 0.00 0.06 0.00 0.00 0.00 98.83 11時35分17秒 0 0.53 0.00 0.53 0.06 0.00 0.06 0.00 0.00 0.00 98.82 11時35分17秒 1 0.52 0.00 0.52 0.06 0.00 0.05 0.00 0.00 0.00 98.84 ┌──[root@liruilongs.github.io]-[~] └─$

      監(jiān)控3次,間隔1秒

      ┌──[root@liruilongs.github.io]-[~] └─$ mpstat -P 0 1 3 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時33分15秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11時33分16秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 11時33分17秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 11時33分18秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 平均時間: 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 ┌──[root@liruilongs.github.io]-[~] └─$

      ┌──[root@liruilongs.github.io]-[~] └─$ mpstat -P ALL 1 2 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時37分52秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11時37分53秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 11時37分53秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 11時37分53秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 11時37分53秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11時37分54秒 all 0.51 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.49 11時37分54秒 0 1.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.98 11時37分54秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 平均時間: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 平均時間: all 0.26 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.74 平均時間: 0 0.51 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.49 平均時間: 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 ┌──[root@liruilongs.github.io]-[~] └─$

      sar (系統(tǒng)活動報告)

      sar是一種低開銷的、記錄系統(tǒng)執(zhí)行情況信息的方法

      sar命令可以用于記錄性能信息,回放之前的記錄信息,以及顯示當(dāng)前系統(tǒng)的實(shí)時信息。sar命令的輸出可以進(jìn)行格式化,使之易于導(dǎo)入數(shù)據(jù)庫,或是輸送給其他Linux命令進(jìn)行處理。

      如果沒有命令,可以啟動服務(wù)看看

      ┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] └─$ pwd /usr/lib/systemd/system ┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] └─$ cat sysstat.service # /usr/lib/systemd/system/sysstat.service # (C) 2012 Peter Schiffer (pschiffe redhat.com) # # sysstat-10.1.5 systemd unit file: # Insert a dummy record in current daily data file. # This indicates that the counters have restarted from 0. [Unit] Description=Resets System Activity Logs [Service] Type=oneshot RemainAfterExit=yes User=root ExecStart=/usr/lib64/sa/sa1 --boot [Install] WantedBy=multi-user.target ┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] └─$ systemctl status sysstat.service ● sysstat.service - Resets System Activity Logs Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2021-10-13 01:53:41 CST; 1 weeks 3 days ago Main PID: 584 (code=exited, status=0/SUCCESS) CGroup: /system.slice/sysstat.service Oct 13 01:53:41 liruilongs.github.io systemd[1]: Starting Resets System Activity Logs... Oct 13 01:53:41 liruilongs.github.io systemd[1]: Started Resets System Activity Logs.

      命令幫助文檔

      ┌──[root@liruilongs.github.io]-[~] └─$ sar -h 用法: sar [ 選項(xiàng) ] [ <時間間隔> [ <次數(shù)> ] ] 主選項(xiàng)和報告: -b I/O 和傳輸速率信息狀況 -B 分頁狀況 -d 塊設(shè)備狀況 -F [ MOUNT ] Filesystems statistics -H 交換空間利用率 -I { <中斷> | SUM | ALL | XALL } 中斷信息狀況 -m { <關(guān)鍵詞> [,...] | ALL } 電源管理統(tǒng)計(jì)信息 關(guān)鍵字: CPU CPU 頻率 FAN 風(fēng)扇速度 \t\tFREQ\tCPU 平均時鐘頻率 IN 輸入電壓 TEMP 設(shè)備溫度 \t\tUSB\t連接的USB 設(shè)備 -n { <關(guān)鍵詞> [,...] | ALL } 網(wǎng)絡(luò)統(tǒng)計(jì)信息 關(guān)鍵詞可以是: DEV 網(wǎng)卡 EDEV 網(wǎng)卡 (錯誤) NFS NFS 客戶端 NFSD NFS 服務(wù)器 SOCK Sockets (套接字) (v4) IP IP 流 (v4) EIP IP 流 (v4) (錯誤) ICMP ICMP 流 (v4) EICMP ICMP 流 (v4) (錯誤) TCP TCP 流 (v4) ETCP TCP 流 (v4) (錯誤) UDP UDP 流 (v4) SOCK6 Sockets (套接字) (v6) IP6 IP 流 (v6) EIP6 IP 流 (v6) (錯誤) ICMP6 ICMP 流 (v6) EICMP6 ICMP 流 (v6) (錯誤) UDP6 UDP 流 (v6) -q 隊(duì)列長度和平均負(fù)載 -r 內(nèi)存利用率 -R 內(nèi)存狀況 -S 交換空間利用率 -u [ ALL ] CPU 利用率 -v Kernel table 狀況 -w 任務(wù)創(chuàng)建與系統(tǒng)轉(zhuǎn)換統(tǒng)計(jì)信息 -W 交換信息 -y TTY 設(shè)備狀況 ┌──[root@liruilongs.github.io]-[~] └─$

      紅帽8沒有,需要自己開啟,紅帽7有,下面為歷史監(jiān)控的存放位置

      ┌──[root@liruilongs.github.io]-[/] └─$ cd /var/log/sa ┌──[root@liruilongs.github.io]-[/var/log/sa] └─$ ls sa01 sa03 sa04 sa05 sa06 sa08 sa09 sa13 sa14 sa23 sa24 sa30 sar03

      $sar [options] [] delay [ count ]]

      盡管sar的報告涉及Linux多個不同領(lǐng)域,其統(tǒng)計(jì)數(shù)據(jù)有兩種不同的形式。一組統(tǒng)計(jì)數(shù)據(jù)是采樣時的瞬時值。另一組則是自上一次采樣后的變化值。

      ┌──[root@liruilongs.github.io]-[~] └─$ sar Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時00分01秒 CPU %user %nice %system %iowait %steal %idle 11時10分01秒 all 0.12 0.00 0.12 0.00 0.00 99.76 11時20分01秒 all 0.11 0.00 0.11 0.00 0.00 99.78 11時30分01秒 all 0.13 0.00 0.13 0.00 0.00 99.73 11時40分01秒 all 0.11 0.00 0.11 0.00 0.00 99.78 平均時間: all 0.12 0.00 0.12 0.00 0.00 99.76

      使用 -o 選項(xiàng)輸出到指定文件,

      ┌──[root@liruilongs.github.io]-[~] └─$ sar -o /tmp/apache_tets 1 3 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 18時02分24秒 CPU %user %nice %system %iowait %steal %idle 18時02分25秒 all 0.00 0.00 0.56 0.00 0.00 99.44 18時02分26秒 all 0.00 0.00 0.00 0.00 0.00 100.00 18時02分27秒 all 0.00 0.00 0.00 0.00 0.00 100.00 平均時間: all 0.00 0.00 0.18 0.00 0.00 99.82

      通過 -f 來查看指定文件信息

      ┌──[root@liruilongs.github.io]-[~] └─$ sar -f /tmp/apache_tets Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 18時02分24秒 CPU %user %nice %system %iowait %steal %idle 18時02分25秒 all 0.00 0.00 0.56 0.00 0.00 99.44 18時02分26秒 all 0.00 0.00 0.00 0.00 0.00 100.00 18時02分27秒 all 0.00 0.00 0.00 0.00 0.00 100.00 平均時間: all 0.00 0.00 0.18 0.00 0.00 99.82 ┌──[root@liruilongs.github.io]-[~] └─$

      使用 -P指定CPU

      ┌──[root@liruilongs.github.io]-[~] └─$ sar -P 0 | head -5 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時00分01秒 CPU %user %nice %system %iowait %steal %idle 11時10分01秒 0 0.12 0.00 0.12 0.01 0.00 99.75 11時20分01秒 0 0.12 0.00 0.11 0.00 0.00 99.77 ┌──[root@liruilongs.github.io]-[~] └─$

      -w 上下文切換次數(shù)

      ┌──[root@liruilongs.github.io]-[~] └─$ sar -P 0 -w | head -5 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時00分01秒 proc/s cswch/s 11時10分01秒 0.92 313.58 11時20分01秒 0.81 316.81 ┌──[root@liruilongs.github.io]-[~] └─$

      -q 運(yùn)行隊(duì)列長度和平均負(fù)載

      ┌──[root@liruilongs.github.io]-[~] └─$ sar -q | head -5 Linux 3.10.0-693.el7.x86_64 (liruilongs.github.io) 2022年01月15日 _x86_64_ (2 CPU) 11時00分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 11時10分01秒 0 219 0.01 0.08 0.53 0 11時20分01秒 0 219 0.03 0.03 0.29 0

      procinfo (從/proc文件系統(tǒng)顯示信息)

      procinfo也為系統(tǒng)整體信息特性提供總覽,它提供的有些信息與vmstat相同,但它還會給出CPU從每個設(shè)備接收的中斷數(shù)量

      $procinfo [-f] [-d] [-D] [-n sec] [-f file]

      嗯,這個命令沒找到,以后再研究下

      gnome-system-monitor

      嗯,用SSH連接的機(jī)器,這個也以后再研究下

      oprofile

      oprofile是性能工具包,它利用幾乎所有現(xiàn)代處理器都有的性能計(jì)數(shù)器來跟蹤系統(tǒng)整體以及單個進(jìn)程中CPU時間的消耗情況。除了測量CPU周期消耗在哪里之外, oprofile還可以測量關(guān)于CPU執(zhí)行的非常底層的信息。

      根據(jù)由底層處理器支持的事件,它可以測量的內(nèi)容包括: cache缺失、分支預(yù)測錯誤和內(nèi)存引用,以及浮點(diǎn)操作。profile不會記錄發(fā)生的每個事件,相反,它與處理器性能硬件一起工作,每count個事件采樣一次,這里的count是一個數(shù)值,由用戶在啟動oprofile時指定。count的值越·低,結(jié)果的準(zhǔn)確度越高,而oprofile的開銷越大。若count保持在一個合理的數(shù)值,那么,oprofile不僅運(yùn)行開銷非常低,并且還能以令人驚訝的準(zhǔn)確性描述系統(tǒng)性能。

      ┌──[root@liruilongs.github.io]-[~] └─$ yum -y install oprofile

      oprofile實(shí)際上是一組協(xié)同工作的組件,用于收集CPU性能統(tǒng)計(jì)信息。oprofile主要有三個部分:

      oprofile核心模塊控制處理器并允許和禁止采樣,

      oprofile后臺模塊收集采樣,并將它們保存到磁盤。

      oprofile報告工具獲取收集的采樣,并向用戶展示它們與在系統(tǒng)上運(yùn)行的應(yīng)用程序的關(guān)系

      oprofile工具包使用opcontrol命令中。opcontrol命令用于選擇處理器采樣的事件并啟動采樣。進(jìn)行后臺控制時,你可以使用如下命令行調(diào)用

      $opcontrol [--start] [--stop] [--dump]

      ┌──[root@liruilongs.github.io]-[~] └─$ opcontrol -s ATTENTION: Use of opcontrol is discouraged. Please see the man page for operf. No vmlinux file specified. You must specify the correct vmlinux file, e.g. opcontrol --vmlinux=/path/to/vmlinux If you do not have a vmlinux file, use opcontrol --no-vmlinux Enter opcontrol --help for full options

      這個貌似有些復(fù)雜,先不看了,之后遇到有機(jī)會再學(xué)習(xí)

      關(guān)于CPU的性能調(diào)優(yōu)工具就學(xué)到這里,歡迎小伙伴指正

      Linux 應(yīng)用性能調(diào)優(yōu)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:牛B程序員在“創(chuàng)建索引”時都會注意啥?
      下一篇:服務(wù)端技術(shù)進(jìn)階(五)分布式系統(tǒng)解決之道:目錄、消息隊(duì)列、事務(wù)系統(tǒng)及其他
      相關(guān)文章
      亚洲精品美女久久久久| 亚洲午夜在线电影| 亚洲高清日韩精品第一区| 中文字幕亚洲激情| 亚洲一区二区精品视频| 亚洲成A人片在线观看无码3D | 久久精品亚洲综合| 亚洲女初尝黑人巨高清| 亚洲色欲色欲www在线丝| 国产亚洲一区二区三区在线不卡| 国产成人亚洲精品91专区手机| 亚洲精品99久久久久中文字幕| 在线观看亚洲网站| 亚洲A∨精品一区二区三区| 亚洲精品无码久久久久AV麻豆| 亚洲欧洲精品成人久久奇米网| 国产亚洲av片在线观看18女人| 久久久久亚洲精品无码网址| 亚洲无人区午夜福利码高清完整版| 亚洲女初尝黑人巨高清| 亚洲AV日韩AV永久无码免下载| 中文字幕亚洲综合久久2| 亚洲国产成人久久77| 亚洲色无码专区一区| 久久亚洲中文无码咪咪爱| va亚洲va日韩不卡在线观看| 久久久久亚洲AV综合波多野结衣| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 亚洲欧洲久久av| 亚洲精品一品区二品区三品区| 亚洲成色WWW久久网站| 亚洲一区二区三区日本久久九| 亚洲欧洲国产成人精品| 亚洲粉嫩美白在线| 国产成人精品亚洲| 亚洲最大激情中文字幕| 亚洲精品免费在线观看| 精品亚洲成在人线AV无码| 亚洲精品亚洲人成在线| 亚洲色一色噜一噜噜噜| 亚洲国产精品福利片在线观看|