What's am-ioband all about? =========================== dm-ioband is an I/O bandwidth controller implemented as a device-mapper driver, which gives specified bandwidth to each job running on the same block device. A job is a group of processes with the same pid or pgrp or uid or a virtual machine such as KVM or Xen. A job can also be a cgroup by applying the bio-cgroup patch. Setup and Installation ====================== Build a kernel with these options enabled: CONFIG_MD CONFIG_BLK_DEV_DM CONFIG_DM_IOBAND If compiled as module, use modprobe to load dm-ioband. # make modules # make modules_install # depmod -a # modprobe dm-ioband "dmsetup targets" command shows all available device-mapper targets. "ioband" and the version number are displayed when dm-ioband has been loaded. # dmsetup targets | grep ioband ioband v1.9.0 Getting started =============== The following is a brief description how to control the I/O bandwidth of disks. In this description, we'll take one disk with two partitions as an example target. Create and map ioband devices ----------------------------- Create two ioband devices "ioband1" and "ioband2". "ioband1" is mapped to "/dev/sda1" and has a weight of 40. "ioband2" is mapped to "/dev/sda2" and has a weight of 10. "ioband1" can use 80% --- 40/(40+10)*100 --- of the bandwidth of the physical disk "/dev/sda" while "ioband2" can use 20%. # echo "0 $(blockdev --getsize /dev/sda1) ioband /dev/sda1 1 0 0 none" \ "weight 0 :40" | dmsetup create ioband1 # echo "0 $(blockdev --getsize /dev/sda2) ioband /dev/sda2 1 0 0 none" \ "weight 0 :10" | dmsetup create ioband2 If the commands are successful then the device files "/dev/mapper/ioband1" and "/dev/mapper/ioband2" will have been created. Additional bandwidth control ---------------------------- In this example two extra ioband groups are created on "ioband1". The first group consists of all the processes with user-id 1000 and the second group consists of all the processes with user-id 2000. Their weights are 30 and 20 respectively. # dmsetup message ioband1 0 type user # dmsetup message ioband1 0 attach 1000 # dmsetup message ioband1 0 attach 2000 # dmsetup message ioband1 0 weight 1000:30 # dmsetup message ioband1 0 weight 2000:20 Now the processes in the user-id 1000 group can use 30% --- 30/(30+20+40+10)*100 --- of the bandwidth of the physical disk. Table 1. Weight assignments ioband device ioband group ioband weight ioband1 user id 1000 30 ioband1 user id 2000 20 ioband1 default group 40 ioband2 default group 10 Remove the ioband devices ------------------------- Remove the ioband devices when no longer used. # dmsetup remove ioband1 # dmsetup remove ioband2 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel