注册
【与达梦同行】linux性能优化
技术分享/ 文章详情 /

【与达梦同行】linux性能优化

不能自已 2022/12/13 3746 15 1

操作系统内存性能诊断

Linux 内核给每一个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,也就是虚拟内存。本文介绍常见内存性能分析命令,以及内存性能分析方法。
image.png
Linux 内存性能分析常用命令
• top
top 命令经常用来监控 Linux 的系统状况,比如 CPU、内存的使用情况,如下图所示
image.png

图中第四行显示为系统内存状态
total: 物理内存总量
used: 使用中的内存总量
free: 空闲内存总量
buffers: 缓存的内存量

图中第五行显示 swap 交换分区
total: 交换区总量
used: 使用的交换区总量
free: 空闲交换区总量
cached: 缓冲的交换区总量
• vmstat
vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO 读写、CPU 活动等进行监视,如下图所示:
image.png
memory 部分
swpd:切换到内存交换区的内存大小;
free:当前空闲的物理内存;
buff:baffers cached 内存大小;
swap:
si:内存进入内存交换区的内存大小;
so:由内存进入磁盘,也就是由内存交换区进入内存的内存大小;
Linux 内存性能诊断
这里我们使用 vmstat 来进行分析,如下所示:
image.png
• MEMORY
o swap:切换到交换内存上的内存(默认以 KB 为单位)。如果 SWAP 的值不为 0,或者还比较大,比如超过 100 MB 了,但是 SI 和 SO 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
o free:空闲的物理内存。
o buff:作为 buffer cache 的内存,对块设备的读写进行缓冲。
o cache:作为 page cache 的内存,文件系统的 cache 如果 cache 的值大的时候,说明 cache 处的文件数多,如果频繁访问到的文件都能被 cache,那么磁盘的读 IO bi 会非常小。
• SWAP
o si:交换内存使用,由磁盘调入内存。
o so:交换内存使用,由内存调入磁盘。
注意
内存够用的时候,这 2 个值都是 0,如果这 2 个值长期大于 0 时,系统性能会受到影响,磁盘 IO 和 CPU 资源都会被消耗。
空闲内存 (FREE) 很少的或接近于 0 时,并不能认定为内存不够用,Linux 是抢占内存的 OS,还要结合 si 和 so;如果 free 很少,si 和 so 也很少(大多时候是 0),那么不用担心,系统性能这时不会受到影响的。
image.png
内存优化常用手段:
image.png
内存优化常用步骤:
image.png

操作系统 CPU 性能诊断

CPU 是计算机系统的大脑,这个重要性不可置否。在性能优化的过程中,CPU 的性能指标是很重要的。本文介绍 CPU 性能分析命令,以及 CPU 性能分析方法。
image.png
CPU 性能分析命令
• top
top 命令经常用来监控 Linux 的系统状况,比如 CPU、内存的使用,如下图所示:image.png
第三行 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 活动等进行监视,如下图所示:
image.png
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 整体运行状况,如下所示:
image.png
指标解读如下所示:
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 5,sar -q 1 5,可以观察 CPU 的使用率和 CPU 运行进程队列长度及负载。
• 查看具体是什么进程在消耗 CPU,就要使用命令:top,ps –auxw | more。
• 知道了某个进程消耗大量的 CPU,想知道这个进程在做成什么,那就用命令:strace。
cpu诊断常用工具:
image.png

cpu优化常用流程:image.png

cpu优化常用手段:
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服