作者:【吴业亮】

博客:https://wuyeliang.blog.csdn.net/

磁盘IO配额控制
相对于CPU和内存的配额控制,docker对磁盘IO的控制相对不成熟,大多数都必须在有宿主机设备的情况下使用。主要包括以下参数:

  • -device-read-bps:限制此设备上的读速度(bytes per second),单位可以是kb、mb或者gb。
  • -device-read-iops:通过每秒读IO次数来限制指定设备的读速度。
  • -device-write-bps :限制此设备上的写速度(bytes per second),单位可以是kb、mb或者gb。
  • -device-write-iops:通过每秒写IO次数来限制指定设备的写速度。
  • -blkio-weight:容器默认磁盘IO的加权值,有效值范围为10-100。
  • -blkio-weight-device: 针对特定设备的IO加权控制。其格式为DEVICE_NAME:WEIGHT

blkio-weight

要使-blkio-weight生效,需要保证IO的调度算法为CFQ。可以使用下面的方式查看:

# cat /sys/block/vda/queue/scheduler
noop [deadline] cfq

如果不是cfq,修改方法

sh -c "echo cfq > /sys/block/vda/queue/scheduler"

使用下面的命令创建两个-blkio-weight值不同的容器:

docker run -it --rm --blkio-weight 100 centos:latest /bin/bash
docker run -it --rm --blkio-weight 1000 centos:latest /bin/bash

在容器中同时执行下面的dd命令,进行测试:

while  true  ; do time dd if=/dev/zero of=test.out bs=1M count=1024 oflag=direct; done

–device-read-bps,–device-write-bps,–device-read-iops,–device-write-iops

docker run -it --device-write-bps /dev/sda:10MB   centos

docker run -it   --device-write-iops /dev/vda:60 centos


docker run -it  --device-read-iops /dev/vda:60 centos 


docker run -it  --device-read-bps /dev/vda:1mb centos

测试

yum install  fio -y

写入配置文件fio.conf

[global]
ioengine=libaio
time_based
direct=1
thread
group_reporting
randrepeat=0
norandommap
numjobs=1
ramp_time=10
runtime=60
size=1G
filename=/mnt/test



[randwrite-4k-io32]
bs=4k
iodepth=32
rw=randwrite
stonewall


[randread-4k-io32]
bs=4k
iodepth=32
rw=randread
stonewall
# fio fio.conf -output=fio-all.log
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐