运行 在 docker 带有绑定安装的容器中使用 ionice 的命令是否有意义

Does it make sense to run a command with ionice in docker container with a bind mount

假设我正在从 docker 容器中的绑定挂载归档文件,并希望为磁盘时间设置优先级,所以我 运行 喜欢:

ionice -c2 -n7 tar....

这样行吗?主机 OS 会考虑来自容器 (cgroups) 的 class/priority 吗?

测试表明 ionicetar 性能没有任何显着影响,相反,我使用 RAM/CPU docker 容器限制

这应该是有道理的:

  • 如果此 tar 命令在 gzip 或类似 CPU 上没有瓶颈
  • 如果您的系统是 运行 您正在使用的磁盘的 CFQ IO 调度程序,根据注释部分:man ionice

要检查您的系统配置,请尝试:

for SCHEDULER in /sys/block/*/queue/scheduler; do echo "For disk: ${SCHEDULER}"; cat $SCHEDULER; done

要获得磁盘概览并 file-systems 使用:

lsblk

有关具有 Docker v 1.10 功能的其他可能解决方案,请参阅 this answer