是否有可用于获取系统使用指标的跨平台C API?
发布于 2010-02-13 10:19:15
我以前和libstatgrab合作过。通过Cygwin为主要的类Unix变体和Windows获取一些非常有用的系统统计信息(据说从未尝试过)。不同操作系统的工作方式如此不同--尤其是在使用指标方面--要想得到你想要的东西可能是一件很有挑战性的事情。即使是像“空闲内存”这样听起来很简单的事情,在跨平台的方式下也可能很棘手。如果你把范围缩小一点,也许我们能找到点什么。
发布于 2010-02-13 09:27:04
不幸的是没有。
C标准在很大程度上仅限于动态分配、字符串操作、数学和文本I/O。一旦超出这些限制,您就需要操作系统API,这些API根据定义是特定于操作系统的,而不是跨平台的。
发布于 2010-02-14 13:37:33
根据您想要收集的指标,您可能需要考虑查看PCP (性能联合测试)。这是一个开源的性能框架,最初是由Silicon Graphics开发的,它从大量来源收集和整理大量可能的指标,并允许您从任何地方监控它们。
基本上,PCP将涉及到向您的系统中添加另一个“层”--例如,您可能监视一个分布式的混合OS机器集群,每个机器都在本地安装了PCP;一组“代理”收集每台机器上的性能数据,然后您的代码可以根据需要使用libpcp来收集这些指标。
如果不知道具体的使用场景,很难说(如果你说的是在终端用户的机器上无缝运行的东西,PCP可能不适合,但如果你想监控你控制的机器,并乐于在它们上运行PCP服务,这是一个很棒的解决方案)。
我们非常高兴地使用PCP从Windows和Linux机器上收集指标,以及从我们的应用程序中收集内部指标,并集中记录它们,报告它们,监控趋势等。
https://stackoverflow.com/questions/2256069
复制相似问题