tar gzip减慢服务器

我有一个备份脚本:

  1. 压缩一些文件
  2. 生成md5
  3. 将压缩文件复制到另一台服务器。
  4. 另一台服务器完成比较MD5(查找复制错误)。

这是核心脚本:

nice -n 15 tar -czvf $BKP $PATH_BKP/*.* \ | xargs -I '{}' sh -c "test -f '{}' && md5sum '{}'" \ | tee $MD5 scp -l 80000 $BKP $SCP_BKP scp $MD5 $SCP_BKP 

这个例程在gzip例程中使CPU达到90%,使生产服务器变慢。 我试图添加一个nice -n 15但服务器仍然挂起。

我已经读了1,但谈话没有帮助我。

什么是解决这个问题的最好方法? 我接受新的体系结构/解决scheme:)

如果你使用的很好,你可以改变优先级,但是只有当CPU接近100%的使用率时才会有明显的影响。

在您的情况下,服务器变慢,不是因为CPU使用率,而是因为存储上的I / O。 使用ionice来改变I / O优先级并保持CPU优先级。

您可以尝试使用chrt将tar程序的调度策略更改为SCHED_BATCH。

根据手册页sched_setscheduler(2)

SCHED_BATCH:调度批处理进程(从Linux 2.6.16开始)。SCHED_BATCH只能用于静态优先级0.该策略与SCHED_OTHER相似,因为它根据dynamic优先级(基于nice值)来调度进程。 不同之处在于,这个策略会导致调度器总是假设这个过程是CPU密集型的。 因此,调度器将对唤醒行为应用一个小的调度惩罚,所以这个过程在调度决策中是轻度不利的。

  This policy is useful for workloads that are noninteractive, but do not want to lower their nice value, and for workloads that want a determin‐ istic scheduling policy without interactivity causing extra preemptions (between the workload's tasks). 

如果你仍然运气不好,你可以尝试SCHED_IDLE。 这将使这个程序只有在没有别的东西可以运行时才会醒来。

这会将tar行更改为批处理:

 nice -n 15 chrt -b tar -czvf $BKP $PATH_BKP/*.* \ 

您是否尝试过使用pigz而不是gzip?