【发布时间】:2012-01-22 03:38:52
【问题描述】:
是否可以命令 CPU 暂停所有非必要的进程,直到我的程序完成处理?目标是减少竞争 CPU 处理时间的进程数量,我最终期望我的程序的挂钟运行时间有所改善。
所以我想启动我的程序运行,命令 CPU 暂停除我的程序之外的非必要进程,当我的程序终止时,CPU 可以恢复之前暂停的进程。
【问题讨论】:
-
我在 Windows 7 上运行
是否可以命令 CPU 暂停所有非必要的进程,直到我的程序完成处理?目标是减少竞争 CPU 处理时间的进程数量,我最终期望我的程序的挂钟运行时间有所改善。
所以我想启动我的程序运行,命令 CPU 暂停除我的程序之外的非必要进程,当我的程序终止时,CPU 可以恢复之前暂停的进程。
【问题讨论】:
在 linux 上,显而易见的初始策略是使用 renice 提高进程的优先级。 nice value越低,优先级越高,最高优先级为-20。
(这里我以创建一个长时间运行的进程为例)
sleep 100000 &
作为进程的根 grep;
ps -ef | grep sleep
500 **4323** 2995 0 18:44 pts/1 00:00:00 sleep 100000
500 4371 2995 0 18:45 pts/1 00:00:00 grep --color=auto sleep
将进程重新设置为非常高的优先级;
renice -20 4323
您也可以像这样发送 SIGSTOP 和 SIGCONT 信号来停止和继续特定进程;
skill -STOP -p <processid>
skill -CONT -p <processid>
不幸的是,非必要流程的构成取决于您自己的定义。您可以通过检查进程列表来停止所有非 root 进程,并使用以下命令暂时停止特定用户的所有进程;
skill -STOP -u <userid>
skill -CONT -u <userid>
显然要小心停止进程,例如产生你的 sudo root 会话的 shell。
【讨论】: