docker存储资源限制
作者:【吴业亮】博客:https://wuyeliang.blog.csdn.net/磁盘IO配额控制相对于CPU和内存的配额控制,docker对磁盘IO的控制相对不成熟,大多数都必须在有宿主机设备的情况下使用。主要包括以下参数:-device-read-bps:限制此设备上的读速度(bytes per second),单位可以是kb、mb或者gb。-device-read-iops:...
·
作者:【吴业亮】
博客: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
更多推荐
已为社区贡献11条内容
所有评论(0)