openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU

文章目录

    • openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU
      • 216.1 CPU
      • 216.2 查看CPU状况
      • 216.3 性能参数分析

openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU

获取openGauss节点的CPU、内存、I/O和网络资源使用情况,确认这些资源是否已被充分利用,是否存在瓶颈点。

216.1 CPU

通过top命令查看openGauss内节点CPU使用情况,分析是否存在由于CPU负载过高导致的性能瓶颈。 top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

参数解释:

  • d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。
  • b:以批次的方式执行top。
  • n:与b配合使用,表示需要进行几次top命令的输出结果。
  • p:指定特定的pid进程号进行观察。

216.2 查看CPU状况

查询服务器CPU的使用情况主要通过以下方式:

在所有存储节点,逐一执行top命令,查看CPU占用情况。执行该命令后,按“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 cachedPID 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利用率。

其中,统计信息中“us”表示用户空间占用CPU百分比,“sy”表示内核空间占用CPU百分比,“id”表示空闲CPU百分比。如果“id”低于10%,即表明CPU负载较高,可尝试通过降低本节点任务量等手段降低CPU负载。

216.3 性能参数分析

1、使用“top -H”命令查看CPU,显示内容如下所示。

    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 cachedPID 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-snf4015 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 top54885 omm  20   0  615m 396m 116m S    0  5.1   0:09.44 gaussdb1 root      20   0 13592  944  792 S    0  0.0   0:08.54 init

2、根据查询结果中“Cpu(s)”分析是系统CPU(sy)还是用户CPU(us)占用过高。

  • 如果是系统CPU占用过高,需要查找异常系统进程进行处理。

  • 如果是“USER”为omm的openGauss进程CPU占用过高,请根据目前运行的业务查询内容,对业务SQL进行优化。请根据以下步骤,并结合当前正在运行的业务特征进行分析,是否该程序处于死循环逻辑。

    a. 使用“top -H -p pid”查找进程内占用的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 cachedPID 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 ”查看进程内各线程的函数调用栈。查找上一步骤中占用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 ?? ()
    

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法-链表(力扣附链接)

之前我们对C语言进行了一定的学习,有了一些基础之后,我们就可以学习一些比较基础的数据结构算法题了。这部分的知识对于我们编程的深入学习非常有用,对于一些基本的算法,我们学习之后,就可以参加一些编程比赛了&#x…

Pandas数据清洗手册:从缺失值到多层索引,掌握完整数据处理技巧【第70篇—python:Pandas数据清洗】

文章目录 Pandas数据清洗手册:从缺失值到多层索引,掌握完整数据处理技巧1. 判断缺失值2. 删除空值3. 填补空值4. 替换元素5. 分割元素6. 字符串操作7. 数据类型转换8. 去重9. 自定义函数10. 处理日期数据11. 缺失值插值12. 透视表13. 数据合并14. 数据采…

C++:二叉搜索树模拟实现(KV模型)

C:二叉搜索树模拟实现(KV模型) 前言模拟实现KV模型1. 节点封装2、前置工作(默认构造、拷贝构造、赋值重载、析构函数等)2. 数据插入(递归和非递归版本)3、数据删除(递归和非递归版本…

C++面试宝典第27题:完全平方数之和

题目 给定正整数 n,找到若干个完全平方数(比如:1、4、9、16、...),使得它们的和等于n。你需要让组成和的完全平方数的个数最少。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4。 示例2: 输入:n = 13 输出:2 解释:13 = 4 + 9。 解析 这道题主要考察应聘者对于…

2024年【R2移动式压力容器充装】考试内容及R2移动式压力容器充装免费试题

题库来源:安全生产模拟考试一点通公众号小程序 R2移动式压力容器充装考试内容参考答案及R2移动式压力容器充装考试试题解析是安全生产模拟考试一点通题库老师及R2移动式压力容器充装操作证已考过的学员汇总,相对有效帮助R2移动式压力容器充装免费试题学…

【自然语言处理】P4 神经网络基础 - 激活函数

目录 激活函数SigmoidTanhReLUSoftmax 本节博文介绍四大激活函数,Sigmoid、Tanh、ReLU、Softmax。 激活函数 为什么深度学习需要激活函数? 博主认为,最重要的是 引入非线性。 神经网络是将众多神经元相互连接形成的网络。如果神经元没有激…

基于微信小程序的校园二手交易平台

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Python进程之串行与并行

串行和并行 串行指的是任务的执行方式。串行在执行多个任务时,各个任务按顺序执行,完成一个之后才能进行下一个。(早期单核CPU的情况下) 并行指的是多个任务在同一时刻可以同时执行(前提是多核CPU)&#…

vueRouter中Hash模式和History模式有什么区别

VueRouter是Vue.js官方推荐的前端路由库,它提供了一种方便的方式来构建单页应用(SPA)。在使用VueRouter时,我们可以选择不同的路由模式,其中最常见的是Hash模式和History模式。本文将深入探讨这两种模式的区别&#xf…

【C/C++】整数及乘积的溢出问题

文章目录 一、为什么会溢出?二、怎样解决?三、看个例题四、补充:scanf和cin的区别 一、为什么会溢出? 整数乘积的溢出问题是指两个整数相乘得到的结果超过了所能表示的数据类型的范围。 在计算机中,整数的表示是有限…

2月7日作业

分别通过select、多进程、多线程实现一个并发服务器 #include <myhd.h> #define IP "192.168.250.100" #define PORT 8888 int deal_cli_msg(int newfd,struct sockaddr_in cin) {char buf[128] "";while(1){bzero(buf,sizeof(buf));int res recv…

Java完整版宿舍管理

项目技术&#xff1a; springboot layui idea mysql5.7 jdk1.8 maven3 有需要该项目的小伙伴可以私信我你的Q。 功能描述&#xff1a; &#xff08;1&#xff09;基本信息管理 基本信息分为学生信息和宿舍信息两部分&#xff0c;其功能是负责维护这些信息&#xff0c…