BSD/DDarwin cpu统计数据



所有BSD是否都有一种通用的方法来获取CPU统计数据(在内核、空闲、用户等方面花费的时间),就像Linux在/proc/stats的第一行中所做的那样?

我试图检测一个处于负载状态的系统,而不是在它处于活动状态(高于特定阈值)时执行计算。我已经想好了如何在Windows/Linux上做到这一点。

我想我需要以某种方式使用sysctl。我发现了这个:

http://osdir.com/ml/darwin-kernel/2009-06/msg00036.html

这是跨平台的吗?我正试图特别针对这些BSD:

  • Mac OS 10.6+
  • FreeBSD 8+
  • OpenBSD 5+

我对BSD只是稍微熟悉一点(我十几岁的时候玩过一段FreeBSD),所以任何帮助都将不胜感激。

不——这些东西不是那么便携。尽管

      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

这是非常跨平台的,并且具有非常相似的语义。

如果这还不够好,您可以做的是确保系统运行一个SNMP代理,该代理公开主机资源MIB。这为您提供了一种简单的独立于平台的加载方式。如果你真的想从你的代码中做到这一点,可以考虑从net-snmp中获取这段代码,因为它在很多平台上都有/proc和sysctl的各种风格。

最新更新