龙空技术网

性能分析 之 磁盘IO密集型性能问题分析

lT点工小橙子 632

前言:

目前各位老铁们对“改善磁盘设备io性能”可能比较讲究,我们都需要学习一些“改善磁盘设备io性能”的相关资讯。那么小编在网络上搜集了一些关于“改善磁盘设备io性能””的相关内容,希望我们能喜欢,小伙伴们快快来学习一下吧!

#头条创作挑战赛#

IO密集型

系统的CPU性能相对硬盘、内存要好很多,平衡负载值会很高,但是cpu 的us 和ys 负载不是很高,因为平均负载是由 cpu+ IO 共同组成 。而 Cpu 内存,外设 网络 大量的换入换出会导致IO密集型

可以理解为简单的业务逻辑处理,比如计算1+1=2,但是要处理的数据很多,每一条都要去插入数据库,对数据库进行频繁操作。

模拟磁盘IO 密集型

执行命令

stress-ng -i 6 --hdd 1 --timeout 150

开启1 个worker 不停的读写temp文件同时开启6个worker不停的调用sync系统调用提交缓存,持续运行150s

后台启动node_exporter

# 后台启动node_exporternohup ./node_exporter &    

监听机器启动 grafana 和 prometheus

#启动 grafanasystemctl restart grafana-server#后台启动 prometheusnohup ./prometheus &

启动grafana

启动 promethues

执行 stress-ng -i 6 --hdd 1 --timeout 150 查看监控

top查看 wa非常高、sy不是很大, buff/cache有增大 ,导致 load average 开始增大

us  用户进程空间中未改变过优先级的进程占用CPU百分比  -用户进程sy:  内核空间占用CPU百分比  -系统进程 ni:  用户进程空间内改变过优先级的进程占用CPU百分比 -由内核进入非内核的状态切换的耗时id: 空闲时间百分比wa:空闲&等待I/O的时间百分比  -资源不够时导致cpu处于等待时间hi:  硬中断时间百分比  -程序切换si:   软中断时间百分比  -管理员自愿切换st:虚拟化时被其余VM窃取时间百分比

vmstat查看系统内存 bo开始升高

mem free开始减少, cache开始明显的增大, bo 有明显数据, 说明有大量磁盘数据交换

memory :  swod显示多少块被换出磁盘  free显示剩下的空闲块  buff正在被用作缓冲区的块  cache正在被用作操作系统的缓存IO:  显示了多少块(BYTE)设备 读取 (bi)写(bo) 通常反映了硬I/0

监控平台查看

io操作达到了100%

通过mpstat的iowa 的值 可以知道系统负载高的原因是因为IO问题导致,所以需要找到对应那个线程导致的磁盘读写高,这个时候可以通过 pidstat 命令查看

mpstat -P ALL 3 3 秒获取一次所有的监控数据

pidstat -w 1 查到 stress-ng-hdd这个进程的 自愿上下文切换数据比较大,pid的值 进程id

优化方案更换磁盘迁移到io性能更好的服务器启动另外一个IO性能比较好服务器安装数据库 给数据库做读写分离。在性能好的数据库读操作,在本机性能差的数据作写操作 要么 减少io操作如 减少日志打印频率定位问题代码

思路:通过pidstat 或者top 找到具体进程id之后, 找到线程 进程 id,然后把线程id进行16进制转换, 进程id日志打印出来,过滤出线程id(16进程)

标签: #改善磁盘设备io性能