我有一个大文件需要 mv,即使使用 Nice -n19,它似乎也会影响服务器性能。
我认为一个选择是以“块”的方式运行该进程,即我运行命令几秒钟,然后休眠几秒钟,然后恢复该进程。
有没有办法从命令行或更好的替代方案来执行此操作?目前我手动执行 Ctrl Z 和 fg 。
答案1
您的性能影响可能是由 I/O 瓶颈引起的,因为mv
通常不需要大量 CPU 周期(除非涉及加密/解密)。nice
改变任务列表中任务的调度优先级,使该任务在CPU上运行。
因此,不要nice
尝试(对于内核> 2.6.25)
ionice -c3 mv <src> <dest>
从ionice -h
ionice [options] <command>
-c, --class <class> name or number of scheduling class,
0: none, 1: realtime, 2: best-effort, 3: idle
从man ionice
Idle A program running with idle I/O priority will only get disk time
when no other program has asked for disk I/O for a defined grace
period. The impact of an idle I/O process on normal system activity
should be zero.
答案2
就像是:
$command & pid=$!
while kill -STP -$pid && sleep $interval && kill -CONT -$pid && sleep $interval; do :; done
能做到这。
作业控制实际上是发送这两个信号(SIGSTP 和 SIGCONT),因此这基本上是手动完成的作业控制。