我在 php 中编写了一个图像处理脚本,它作为 cron 计划任务(在 OSX 中)运行。为避免系统过载,脚本会检查系统负载(使用“正常运行时间”),并且仅在负载低于预定义阈值时运行。
我现在已经将它移植到 Windows (2003 Server) 并且正在寻找一个类似的命令行函数来将系统负载报告为整数或浮点数。
在这种情况下,系统负载不是一个好的指标。在 Unix 上,它基本上告诉您,目前有多少进程已准备好并等待执行。但是,由于进程可能必须等待的原因有很多,因此即使系统上的“负载”很高,您的脚本实际上也可以在不消耗其他进程任何性能的情况下运行。
您应该nice(1)
在 Unix 上使用,在 Windows 上使用等价物(“进程优先级”?),这样操作系统就可以决定何时运行您的脚本!
如果您将脚本的优先级设置为可能的绝对最低优先级,那么它只会在当前无事可做时由调度程序执行。
可能您将不得不实施某种机制来防止同时运行多个脚本实例,以防执行时间超过两次调用之间的时间间隔。
您可以在 Windows 命令行中尝试此操作。这适用于 XP,也可以获得很多其他信息。
wmic CPU
您可以使用名为pv的命令行实用程序来显示特定时间段(默认为 500 毫秒)内的进程名称和 CPU% 使用率:
pve.exe -o"%n\t%c"
有使用-?
描述可用参数的开关的帮助。
它需要比 OSX/linux 上的正常运行时间多一点的工作,因为您必须将第一列中的数字相加(或省略进程名称,只需将每行输出的值相加)才能得到总数(以 % 为单位) ) CPU使用率。
好的一面是,通过更多的工作,您可以获得执行进程正在使用的特定 CPU 数量,而不是整个系统 CPU 消耗。
WMI 对 Windows 中的几乎所有内容进行基准测试,包括系统负载。
我找到了一个关于它的线程。
只需使用标准的 win32 api (GTC)