当使用 rsync+ssh 访问远程机器时,有没有办法“nice”远程机器上的 rsync 进程(降低其优先级)?
编辑问题以澄清:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
backups 16651 86.2 0.1 3576 1636 ? Rs 11:06 0:06 rsync --ser...
(rsync 行被截断)
这是一个通常在凌晨 4 点运行的备份 cron 作业,但是当我碰巧醒来(并提交或使用托管在同一台机器上的 Bugzilla)时,它会降低服务器性能,所以我想要一个快速的“破解”来尝试修复它。
答案1
您可以使用该--rsync-path
选项,例如。
rsync --rsync-path="nice rsync" foo remotebox:/tmp/
答案2
- 采取
--rsync-path
选项你有rsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
- 采取配置文件选项您可以在文件中更改或取消注释
/etc/default/rsync
该RSYNC_NICE='17'
值和该RSYNC_IONICE='-c3'
值
对于伊奥尼采值将代表硬盘优先级
- 1 -> 实时
- 2 -> 尽力而为
- 3 -> 空闲(当任何其他进程未使用 HD 时)
请注意,对于 Linux,只有cfq
调度程序真正实现了 IO 类和优先级。如果远程系统管理员选择了 IO 调度程序noop
或deadline
一些更奇特的变体,您可能会发现它ionice
实际上什么都不做。您应该能够从中获得高性能,cfq
并且仍然能够使用 IO 类和优先级正确调整 cfq。
为了好的处理器优先级的值
- -20(最有利于该过程)
- (默认 10)如果没有指定 -n
- 19(对该过程最不利)
答案3
您可以通过不包含参数来禁用网络压缩-z
,这可能会节省双方的 CPU 时间。或者更改 rsync 使用校验和的方式,请查看--checksum
答案4
Rsync 不应该占用太多 CPU。我怀疑您是否可以从另一端强制执行某种精细度,但您可以做的是使用防火墙限制 rsync 使用的带宽,这最终将减少它在 X 时间内可以执行的处理量。