我正在使用tar
机器进行备份。但是,它使用大量 I/O 并减慢了整个机器的速度。
那么有没有办法限制读的速度tar
?
我知道pv
,但它只限制写速度。因为我使用 进行增量备份tar --listed-incremental
,所以这只适用于第一个完整备份(如果只有很小的更改,后续增量备份将消耗大量读取 I/O)。
我尝试结合使用nice
和来降低备份的总体优先级ionice
,但这并没有真正改变任何东西。
信息:它是 Debian 9 机器,文件驻留在 LVM 卷顶部的 ext4 文件系统上。
答案1
您可以使用 运行 tar 命令ionice
。像这样:
ionice -c3 tar --listed-incremental [...]
这将使该tar
进程仅在没有其他进程等待 I/O 时才执行 I/O。
在 Debian 中,该ionice
实用程序位于 package 中util-linux
,因此您可能需要先安装它。
与普通 (cpu)nice
实用程序一样,进程的 I/O 调度程序类由其子进程继承。当我计划做需要大量资源的事情时,我不希望用户的 I/O 速度因此变慢。我经常这样启动我的 shell:
nice ionice -c3 bash
那么我从那个 shell 所做的一切都会非常非常好:)
答案2
使用cgroup
mkdir -p /sys/fs/cgroup/blkio/g1
echo "8:0 1048576" > /sys/fs/cgroup/blkio/g1/blkio.throttle.read_bps_device
pgrep -f tar > /sys/fs/cgroup/blkio/g1/cgroup.procs