所有的BSD都有一个通用的方法来获取CPU统计数据(内核,空闲,用户等的时间花费),就像Linux在/proc/stats
的第一行中那样?
我正在尝试检测处于负载状态的系统,并且当它处于活动状态时(高于某个阈值)不执行计算。我已经想出了如何在Windows / Linux上做到这一点。
我想我需要以某种方式使用sysctl。我发现了这个:
http://osdir.com/ml/darwin-kernel/2009-06/msg00036.html
这是跨平台吗?我试图特别针对这些BSD:
我对BSD只是略微熟悉(我在青少年时期玩过FreeBSD),所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
不 - 那些东西不那么便携。虽然
sysctl vm.loadavg
vm.loadavg: { 0.98 1.39 1.50 }
恰好适用于上述设定并且有些可比性。
如果你需要简单但广泛的东西 - 我会考虑解析命令的正常运行时间(在幕后依赖于平台之间略有不同的sysctl) - 并提取负载数字:
uptime
11:38AM up 18 days, 15:50, 2 users, load averages: 0.04, 0.01, 0.00
这是非常跨平台的 - 并且具有非常相似的语义。
如果这还不够好 - 你可以做的是确保系统运行一个暴露主机资源MIB的SNMP代理。这可以让您轻松获得平台独立的加载方式。如果你真的想从你的代码中做到这一点 - 考虑从net-snmp中获取这些代码 - 因为它具有适用于许多平台的各种风格的/ proc和sysctl。