如果模拟磁盘IO慢的场景?

2023年 10月 23日 32.6k 0

磁盘IO问题可能是运维过程中比较常见的一个场景,技术社群的这篇文章《第02问:怎么模仿磁盘 IO 慢的情况?》给我们讲解了通过一些技术手段模拟磁盘IO慢的操作,借鉴学习一下。

问题:怎么模仿磁盘 IO 慢的情况?实验:1. 创建延迟的磁盘用 dd 创造一片 100M 的文件,

将创建的文件用 losetup 虚拟成块设备 dev/loop3,将块设备 dev/loop3 映射成带延迟的设备(对于读操作和写操作都延迟 100ms),

2. 用 MySQL 进行实验 

将磁盘格式化,并载入,用 dbdeployer 安装 MySQL,将 binlog 的位置设置到 mnt/slow,开启双 1 刷盘参数,
用 mysqlslap 进行压力测试,

通过 iostat 可以观察到 binlog 所在的块设备 IO 发生饱和,

1. dm-0 (/dev/mapper/dm-slow) 设备的 IO 出现了排队(aqu-sz),使用率饱和。

2. loop3 是 dm-0 背后的块设备,其 IO 还有充足的能力,可证明 dm-0 带有 IO 延迟。通过 pt-ioprofile 观察 MySQL 的 IO 消耗时间,可以看到花费在 binlog IO 上的时间远大于其他消耗,
因此:
我们制造了一个慢 IO 的设备,将 MySQL binlog 放在其中,制造了 binlog IO 慢的场景。有了这个手段,之后我们可以分析 MySQL 在局部文件 IO 慢时,哪些状态量会发生变化,以及 MySQL 会发生什么行为。

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,

近期更新的文章:《Table Cache作用》《MySQL的防火墙》《MySQL 8.0中窗口函数框架用法的介绍》《Linux删除大量小文件的两种方案场景介绍》《MySQL数据导入方案场景推荐》

近期的热文:《推荐一篇Oracle RAC Cache Fusion的经典论文》
《"红警"游戏开源代码带给我们的震撼》
文章分类和索引:《公众号1300篇文章分类和索引》

相关文章

Oracle-profile简单使用
【TiDB 社区智慧合集】TiDB 在核心场景的实战应用
如何理解数据库增量备份
Navicat for MySQL 17 | 实现更明智的业务决策
tidb8.1的磁盘选择,关于网络ssd,和本地ssd的选择对性能影响很大,差距60倍。
ORA-00600 internal error code, arguments [25026]

发布评论