暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8达梦数据库操作系统 CPU 性能诊断

原创 达梦 2021-01-31
1552

CPU 是计算机系统的大脑,这个重要性不可置否。在性能优化的过程中,CPU 的性能指标是很重要的。本文介绍 CPU 性能分析命令,以及 CPU 性能分析方法。

CPU 性能分析命令

  • top

top 命令经常用来监控 Linux 的系统状况,比如 CPU、内存的使用,如下图所示:

top命令

第三行 CPU 信息统计数据如下所示:

Cpu(s):  
  0.0% us:  用户空间占用 CPU 百分比。
  0.3% sy:  内核(系统)空间占用 CPU 百分比。
  0.0% ni:  用户进程空间内改变过优先级的进程占用 CPU 百分比。
  99.7% id: 空闲 CPU 百分比。
  0.0% wa: 等待输入输出的 CPU 时间百分比。
  0.0%hi:  硬件 CPU 中断占用百分比。
  0.0%si:  软中断占用百分比。
  0.0%st:  虚拟机(虚拟化技术)占用百分比。
  • vmstat

vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO 读写、CPU 活动等进行监视,如下图所示:

top命令

CPU 以百分比显示如下所示:

us(user time):用户进程执行时间。
sy(system time):系统进程执行时间。
id:空闲时间(包括 IO 等待时间)。
wa:等待 IO 时间,wa 的值高时,说明 IO 等待比较严重,这可能由于磁盘大量做随机访问造成的,也有可能是磁盘出现瓶颈。
st:表示被偷走的 CPU 所占百分比(一般都为 0,不用关注)。
us + sy + id + wa =100% 近似为 100%

CPU 性能诊断

使用 vmstat 查看系统的 CPU 整体运行状况,如下所示:

[root@dm8 ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2273472 32968 701004 0 0 458 128 165 154 0 2 98 0 0
0 0 0 2273748 32968 701004 0 0 0 36 248 253 0 1 99 0 0
0 0 0 2273812 32976 701004 0 0 0 128 673 530 0 2 98 0 0
1 0 0 2274360 32976 701020 0 0 0 4 594 439 0 2 98 0 0
0 0 0 2274728 32976 701024 0 0 0 12 279 256 0 1 99 0 0
0 0 0 2274684 32976 701024 0 0 0 4 106 191 0 0 100 0 0
0 0 0 2274684 32976 701024 0 0 0 8 156 203 0 1 100 0 0
0 0 0 2273832 32984 701016 0 0 0 80 649 531 1 2 98 0 0
0 0 0 2274052 32984 701056 0 0 0 8 491 431 0 1 98 0 0
0 0 0 2274336 32984 701060 0 0 0 4 107 192 0 0 100 0 0

指标解读如下所示:

r:如果在 procs 中运行的序列 (process r) 是连续的大于在系统中的 CPU 的个数,表示 CPU 比较忙,系统现在运行比较慢,有多数的进程等待 CPU。如果r的输出数大于系统中可用 CPU 个数的 4 倍的话,则系统面临着 CPU 短缺的问题,或者是 CPU 的速率过低,系统中有多数的进程在等待 CPU,造成系统中进程运行过慢。

b:如果在 procs 中运行的序列 (process b),即处于不可中断状态的进程数,连续为 CPU 的 2~3 倍就表明 CPU 排队比较严重了。

  • SYSTEM

in:每秒产生的中断次数。

cs:每秒产生的上下文切换次数。

in 和 cs 这两个值越大,会看到由内核消耗的 CPU 时间会越大。

  • CPU

us:用户进程消耗的 CPU 时间百分。us 的值比较高时,说明用户进程消耗的 CPU 时间多,在服务高峰期持续大于 50~60,是可以接受,但是如果长期超 50% ,那么我们就该考虑优化程序算法。

sy:内核进程消耗的 CPU 时间百分比。sy 的值高时,说明系统内核消耗的 CPU 资源多,这并不是良性表现,我们应该检查原因。

wa:IO 等待消耗的CPU时间百分比。wa 的值高时,说明 IO 等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id:CPU 处于空闲状态时间百分比,如果空闲时间 (cpu id) 持续为 0 并且系统时间 (cpu sy) 是用户时间的两倍 (cpu us) 系统则面临着 CPU 资源的短缺,在服务高峰期持续小于 50,可以接受。

通过以下方式可以判断 CPU 性能:

  • 如果 r 连续大于 CPU 的个数,甚至几倍 CPU 个数;b 也有持续有值,甚至 CPU 的 2~3 倍,并且 id 也持续小于 50%,wa 也比较小,这就表明 CPU 负荷很严重。
  • 再详细确认用:sar -u 1 5sar -q 1 5,可以观察 CPU 的使用率和 CPU 运行进程队列长度及负载。
  • 查看具体是什么进程在消耗 CPU,就要使用命令:topps –auxw | more
  • 知道了某个进程消耗大量的 CPU,想知道这个进程在做成什么,那就用命令:strace
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论