【运维案例】业务iowait高问题

产品:openEuler

版本:openEuler20.03 LTS SP3

分类:内核/IO

来源:现网

[问题描述]

客户由centos openEuler-20.03-LTS-SP1后,运行postgreSQL业务进行磁盘读写,发现数据库查询和建表等操作有明显卡顿。sar观察发现iowait较高。

[问题根因]:

对比x86环境下centos 7.6 3.10内核和openEuler 4.19内核相关编译选项,发现CONFIG_BLK_WBT centos未开启,而openEuler为y,开启后会启用对后台写回的带宽限制,使得io时延降低。

查看磁盘wbt_lat_usec值,确认该BLK模块已生效:
image

此时查看iostat发现此案读写带宽明显减低,业务建表和查询很慢:

不中断业务,修改该磁盘wbt_lat_usec文件值为0后,再次查询发现带宽升高,io时延升高,业务顺畅,符合预期。

经多轮测试,修改磁盘参数后业务指标立即变化 ,确认为此编译选项导致。

[解决方案]:

由于openEuler内核开启了CONFIG_BLK_WBT编译选项,在后台回写io压力高的场景下,优先保证io时延,限制了io压力,导致回写带宽降低,进而导致客户数据库场景查询和建表变慢。

针对客户关注带宽而非时延的需要, 提供两个解决方案:

1. 关闭此编译选项重编内核。

2. 编写开机自启动脚本或服务,开机后修改磁盘参数:echo 0 > /sys/block/sdx(盘符)/queue/wbt_lat_usec

2 Likes