在远程机器上顺利进行 rsync

在远程机器上顺利进行 rsync

当使用 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/rsyncRSYNC_NICE='17'值和该RSYNC_IONICE='-c3'

对于伊奥尼采值将代表硬盘优先级

  • 1 -> 实时
  • 2 -> 尽力而为
  • 3 -> 空闲(当任何其他进程未使用 HD 时)

请注意,对于 Linux,只有cfq调度程序真正实现了 IO 类和优先级。如果远程系统管理员选择了 IO 调度程序noopdeadline一些更奇特的变体,您可能会发现它ionice实际上什么都不做。您应该能够从中获得高性能,cfq并且仍然能够使用 IO 类和优先级正确调整 cfq

为了好的处理器优先级的值

  • -20(最有利于该过程)
  • (默认 10)如果没有指定 -n
  • 19(对该过程最不利)

答案3

您可以通过不包含参数来禁用网络压缩-z,这可能会节省双方的 CPU 时间。或者更改 rsync 使用校验和的方式,请查看--checksum

答案4

Rsync 不应该占用太多 CPU。我怀疑您是否可以从另一端强制执行某种精细度,但您可以做的是使用防火墙限制 rsync 使用的带宽,这最终将减少它在 X 时间内可以执行的处理量。

相关内容