DEV Community

Abood Nasr
Abood Nasr

Posted on

Slow I/O simulation in linux

  1. Create place to store our data.
dd if=/dev/zero of=/tmp/delayed-block bs=1G count=1
Enter fullscreen mode Exit fullscreen mode

OUTPUT

1+0 records in
1+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 5,24011 s, 205 MB/s
Enter fullscreen mode Exit fullscreen mode
  1. Create a loop device
losetup --find --show /tmp/delayed-block
Enter fullscreen mode Exit fullscreen mode

OUTPUT

/dev/loop5
Enter fullscreen mode Exit fullscreen mode
  1. Create a delayed mapper using dm-delay
echo "0 `blockdev --getsz /dev/loop0` delay /dev/loop5 0 <milliseconds> | dmsetup create delayed-device"
Enter fullscreen mode Exit fullscreen mode
  1. Format and mount the delayed device to folder
mkfs.ext4 /dev/mapper/delayed-device
mkdir ~/delayed-folder
mount -o sync /dev/mapper/delayed-device ~/delayed-folder
Enter fullscreen mode Exit fullscreen mode

we must select sync option to prevent kernel enhancements.

Top comments (1)

Collapse
 
fatuglynoobtroll profile image
NoobPhat

The dmsetup mapper command didn't work for me; guessing the pipe messes it up. Here is my version:
sudo dmsetup create delayed-device --table "0 $(sudo blockdev --getsz /dev/loop1) delay /dev/loop1 0 100"