openGauss學習筆記-216 openGauss性能調(diào)優(yōu)-確定性能調(diào)優(yōu)范圍-硬件瓶頸點分析-CPU

openGauss學習筆記-216 openGauss性能調(diào)優(yōu)-確定性能調(diào)優(yōu)范圍-硬件瓶頸點分析-CPU216.1 CPU216.2 查看CPU狀況216.3 性能參數(shù)分析

openGauss學習筆記-216 openGauss性能調(diào)優(yōu)-確定性能調(diào)優(yōu)范圍-硬件瓶頸點分析-CPU

獲取openGauss節(jié)點的CPU、內(nèi)存、I/O和網(wǎng)絡資源使用情況,確認這些資源是否已被充分利用,是否存在瓶頸點。

216.1 CPU

通過top命令查看openGauss內(nèi)節(jié)點CPU使用情況,分析是否存在由于CPU負載過高導致的性能瓶頸。 top命令經(jīng)常用來監(jiān)控linux的系統(tǒng)狀況,是常用的性能分析工具,能夠實時顯示系統(tǒng)中各個進程的資源占用情況。

參數(shù)解釋:

  • d:number代表秒數(shù),表示top命令顯示的頁面更新一次的間隔。默認是5秒。

  • b:以批次的方式執(zhí)行top。

  • n:與b配合使用,表示需要進行幾次top命令的輸出結果。

  • p:指定特定的pid進程號進行觀察。

216.2 查看CPU狀況

查詢服務器CPU的使用情況主要通過以下方式:

在所有存儲節(jié)點,逐一執(zhí)行top命令,查看CPU占用情況。執(zhí)行該命令后,按“1”鍵,可查看每個CPU核的使用率。

top - 17:05:04 up 32 days, 20:34,  5 users,  load average: 0.02, 0.02, 0.00
Tasks: 124 total,   1 running, 123 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.3%sy,  0.0%ni, 69.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.3%us,  0.3%sy,  0.0%ni, 69.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.3%us,  0.3%sy,  0.0%ni, 69.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.3%us,  0.3%sy,  0.0%ni, 69.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8038844k total,  7165272k used,   873572k free,   530444k buffers
Swap:  4192924k total,     4920k used,  4188004k free,  4742904k cached

 PID USER  PR  NI  VIRT  RES  SHR  S   %CPU %MEM   TIME+  COMMAND
 35184 omm   20   0  822m 421m 128m  S    0    5.4   5:28.15 gaussdb
 1 root   20   0 13592  820  784 S    0    0.0   1:16.62 init

分析時,請主要關注進程占用的CPU利用率。

其中,統(tǒng)計信息中“us”表示用戶空間占用CPU百分比,“sy”表示內(nèi)核空間占用CPU百分比,“id”表示空閑CPU百分比。如果“id”低于10%,即表明CPU負載較高,可嘗試通過降低本節(jié)點任務量等手段降低CPU負載。

216.3 性能參數(shù)分析

1、使用“top -H”命令查看CPU,顯示內(nèi)容如下所示。

14 root      20   0     0    0    0 S    0  0.0   0:16.41 events/3
top - 14:22:49 up 5 days, 21:51,  2 users,  load average: 0.08, 0.08, 0.06
Tasks: 312 total,   1 running, 311 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.3%us,  0.7%sy,  0.0%ni, 95.0%id,  2.4%wa,  0.5%hi,  0.2%si,  0.0%st
Mem:   8038844k total,  5317668k used,  2721176k free,   180268k buffers
Swap:  4192924k total,        0k used,  4192924k free,  2886860k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 
 3105 root      20   0 50492  11m 2708 S    3  0.1  22:22.56 acc-snf
 4015 gdm       20   0  232m  23m  11m S    0  0.3  11:34.70 gdm-simple-gree 
 51001 omm  20   0 12140 1484  948 R    0  0.0   0:00.94 top
 54885 omm  20   0  615m 396m 116m S    0  5.1   0:09.44 gaussdb
 1 root      20   0 13592  944  792 S    0  0.0   0:08.54 init

2、根據(jù)查詢結果中“Cpu(s)”分析是系統(tǒng)CPU(sy)還是用戶CPU(us)占用過高。

  • 如果是系統(tǒng)CPU占用過高,需要查找異常系統(tǒng)進程進行處理。

  • 如果是“USER”為omm的openGauss進程CPU占用過高,請根據(jù)目前運行的業(yè)務查詢內(nèi)容,對業(yè)務SQL進行優(yōu)化。請根據(jù)以下步驟,并結合當前正在運行的業(yè)務特征進行分析,是否該程序處于死循環(huán)邏輯。

    a. 使用“top -H -p pid”查找進程內(nèi)占用的CPU百分比較高的線程,進行分析。

top -H -p 54952
查詢結果如下所示,top中可以看到占用CPU很高的線程,下面以線程54775為主,分析其為何占用CPU過高。
top - 14:23:27 up 5 days, 21:52,  2 users,  load average: 0.04, 0.07, 0.05
    Tasks:  13 total,   0 running,  13 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.9%us,  0.4%sy,  0.0%ni, 97.3%id,  1.1%wa,  0.2%hi,  0.1%si,  0.0%st
    Mem:   8038844k total,  5322180k used,  2716664k free,   180316k buffers
    Swap:  4192924k total,        0k used,  4192924k free,  2889860k cached
    
     PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
     54775 omm  20   0  684m 424m 131m S    0  5.4   0:00.32 gaussdb 
     54951 omm  20   0  684m 424m 131m S    0  5.4   0:00.84 gaussdb 
     54732 omm  20   0  684m 424m 131m S    0  5.4   0:00.24 gaussdb 
     54758 omm  20   0  684m 424m 131m S    0  5.4   0:00.00 gaussdb 
     54759 omm  20   0  684m 424m 131m S    0  5.4   0:00.02 gaussdb 
     54773 omm  20   0  684m 424m 131m S    0  5.4   0:02.79 gaussdb 
     54780 omm  20   0  684m 424m 131m S    0  5.4   0:00.04 gaussdb 
     54781 omm  20   0  684m 424m 131m S    0  5.4   0:00.21 gaussdb 
     54782 omm  20   0  684m 424m 131m S    0  5.4   0:00.02 gaussdb 
     54798 omm  20   0  684m 424m 131m S    0  5.4   0:16.70 gaussdb 
     54952 omm  20   0  684m 424m 131m S    0  5.4   0:07.51 gaussdb 
     54953 omm  20   0  684m 424m 131m S    0  5.4   0:00.81 gaussdb 
     54954 omm  20   0  684m 424m 131m S    0  5.4   0:06.54 gaussdb
b. 使用“gstack ”查看進程內(nèi)各線程的函數(shù)調(diào)用棧。查找上一步驟中占用CPU較高的線程ID對應的線程號。
gstack 54954
查詢結果如下所示,其中線程ID54775對應線程號是10。
192.168.0.11:~ # gstack 54954
    Thread 10 (Thread 0x7f95a5fff710 (LWP 54775)):
    #0  0x00007f95c41d63c6 in poll () from /lib64/libc.so.6
    #1  0x0000000000d3d2d3 in WaitLatchOrSocket(Latch volatile*, int, int, long) ()
    #2  0x000000000095ed25 in XLogPageRead(XLogRecPtr*, int, bool, bool) ()
    #3  0x000000000095f6dd in ReadRecord(XLogRecPtr*, int, bool) ()
    #4  0x000000000096aef0 in StartupXLOG() ()
    #5  0x0000000000d5607a in StartupProcessMain() ()
    #6  0x00000000009e19f9 in AuxiliaryProcessMain(int, char**) ()
    #7  0x0000000000d50135 in SubPostmasterMain(int, char**) ()
    #8  0x0000000000d504ec in MainStarterThreadFunc(void*) ()
    #9  0x00007f95c79b85f0 in start_thread () from /lib64/libpthread.so.0
    #10 0x00007f95c41df84d in clone () from /lib64/libc.so.6
    #11 0x0000000000000000 in ?? ()

?? 點贊,你的認可是我創(chuàng)作的動力!

?? 收藏,你的青睞是我努力的方向!

?? 評論,你的意見是我進步的財富!

image.png
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容