How to Simulate Slow Disk I/O for MySQL Experiments
This guide explains how to create a delayed‑disk device on Linux, place MySQL binlog files on it, and use tools like mysqlslap and pt‑ioprofile to observe the impact of artificially slow I/O on MySQL performance.
The article addresses the problem of reproducing slow disk I/O conditions to study MySQL behavior when its binlog resides on a sluggish storage device.
Step 1 – Create a delayed disk: Use dd if=/dev/zero of=slow.img bs=1M count=100 to generate a 100 MiB file, attach it as a loop device with losetup /dev/loop3 slow.img , and then map the loop device to a dm‑target that adds a 100 ms latency to both read and write operations.
Step 2 – Prepare MySQL on the slow device: Format the delayed device, mount it, and install MySQL via dbdeployer . Configure the binary log directory to point to the mounted slow device (e.g., /mnt/slow ) and enable double‑write flush parameters.
Run a workload with mysqlslap to generate I/O pressure. Monitoring with iostat shows that the dm‑0 device (the delayed mapper) experiences queueing and high utilization, while the underlying /dev/loop3 remains under‑utilized, confirming the introduced latency.
Further profiling with pt‑ioprofile reveals that the majority of MySQL’s I/O time is spent on binlog operations, highlighting the impact of the artificial slowdown.
Result: By creating a slow I/O device and placing MySQL’s binlog on it, the experiment provides a reproducible environment for analyzing MySQL’s behavior under local file I/O bottlenecks, enabling deeper performance investigations.
Aikesheng Open Source Community
The Aikesheng Open Source Community provides stable, enterprise‑grade MySQL open‑source tools and services, releases a premium open‑source component each year (1024), and continuously operates and maintains them.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.