如何限制正在运行的复制过程的处理器使用限制?我和我的朋友计划用一台 PC 来托管服务器,我们需要知道如何限制复制过程的处理器使用,因为上次我们做了一台主机,每次我们复制新文件时,服务器就开始滞后。
答案1
用于nice
CPU
CPU 调度优先级由 nice(1) 处理,其含义为:
运行调整了优先级的 COMMAND,这会影响进程调度。如果没有 COMMAND,则打印当前优先级。优先级范围从 -20(最有利的调度)到 19(最不利的调度)。
用于ionice
磁盘 I/O
使用ionice -c3
将使用空闲优先级进行磁盘 I/O。ionice(1) 手册页说:
以空闲 io 优先级运行的程序只有在定义的宽限期内没有其他程序请求磁盘 io 时才会获得磁盘时间。空闲 io 进程对正常系统活动的影响应该为零。
结合两个选项
为了尽量减少对系统的影响,您可以将两者结合起来。例如:
# Run script with lowest possible CPU and disk priorities.
nice -n19 ionice -c3 foo.sh
答案2
复制对 CPU 的影响很小,它使用的资源是 IO 带宽。
ionice -c2 -n6
如果不希望 io密集型命令对其他应用程序造成太大影响,则应在命令前加上前缀。您还可以使用 cgroups 和 blkio 控制器来限制内容,但这会更复杂。