为进程设置更高的级别是一种减少其对系统负载/ CPU时间的影响的有效方法吗?


10

我有一个rsync cron作业,它正在推动服务器负载并触发监视器警报。如果我将作业设置为较高的运行级别,是否可以有效地减少其对系统负载值的影响?


对于rsync,使用其开关减少压缩或限制带宽使用会更有效。
Nemo

Answers:


9

它不会减轻您的负担。

如果存在可能的资源争用(只有几个进程“竞争”没有足够的可用CPU时间),它只会让其他进程更频繁地使用CPU时间。


9

更改nice值不会直接减少系统负载。但是,可以使用它为其余进程保留更多资源,我怀疑这是您真正想要的。

http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

内核根据nice值确定一个进程需要多少处理器时间。可能的精确值范围是:-20到20。正确值-20的进程具有很高的优先级。值为20的进程的优先级非常低。

因此,是的,如果要确保其他进程具有优先级,则希望在比其他进程更高的级别上运行cron作业。

为此,您希望像这样执行cron脚本:

/bin/nice -n 10 /path/to/cron-script

这将使cron脚本的正常运行速度提高10。

另请参阅效果如何?http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/了解更多详细信息。


5

更改过程的良好级别不太可能影响系统负载值。系统负载值是运行队列平均长度,基本上是要使用CPU的进程数。

如果您正在运行受CPU约束的进程(不是rsync,仅作为示例),那么只要有可用的时间,它将总是要使用CPU时间。由于它总是要运行,因此它将为系统负载值贡献1.0的负载值。进程的良好级别无关紧要,因为运行队列的平均长度不受运行队列中进程顺序的影响。


要记住这一点很重要。如果您运行许多运行良好的进程,则即使实际上并没有减慢实际工作的速度,系统负载也会看起来很高。在某些情况下,负载揭示了一个真正的问题,即Linux无法让经过处理的进程毫无问题地使用它们实际可以使用的所有资源(大多数情况下,所有这些资源都在等待以获取任何收益)。
Nemo

3

您可能会考虑以下三种方法来减少对系统负载/ CPU时间的影响:

  • 使用nice命令手动降低任务的优先级。
  • 使用该cpulimit命令重复暂停该过程,以使其不超过特定限制。
  • 使用Linux的built-in control groups一种机制,该机制告诉调度程序限制可用于该进程的资源量。

资源资源

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups


您肯定要使用cgroup来平衡系统资源。这样就可以根据需要对资源(CPU,内存,磁盘IO,磁盘带宽)进行分区,并且在低负载情况下,即使“低优先级”进程也能获得最佳性能,而用户模式的窍门常常会导致缓慢降低低优先级进程的速度。
Mikko Rantalainen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.