Linux中的应用程序计数器 (和OSX?)

Joe*_*Joe 11 linux performancecounter

我试图弄清楚是否有一个库给我一些接近相当于Windows自定义性能计数器的东西(这里描述http://geekswithblogs.net/.NETonMyMind/archive/2006/08/20/88549.aspx)

基本上,我正在寻找可用于跟踪应用程序中的全局计数器的东西,以及(理想情况下)通过定义良好的接口向其他应用程序/用户呈现该信息的东西.这些是应用统计; 像内存和磁盘这样的东西可以通过其他方式捕获,但我希望公开在我的应用程序生命周期中处理的吞吐量/事务/"小部件".

我见过这个问题:

Linux/Unix中"性能计数器"的概念

还有这个

Linux中的注册表级别计数器可从Java访问

但这两者都不是我想要的.我不想写一个静态文件(毕竟这是动态信息;即使磁盘已满,我也应该能够得到它),而且如果可能的话,宁可避免使用自己开发的代码集.理想情况下,至少在Linux上,这些数据(我认为)会以某种方式通过/ proc浮出水面,虽然我不清楚是否可以从用户区域完成(这不太重要,只要它在某些方面浮出水面)给客户的方式.)

但回到问题的关键:是否有任何内置或合适的第三方库为我提供适用于我可以在Linux和其他*NIXy操作系统上使用的应用程序指标的自定义全局(线程安全,高性能)计数器?(并且可以从C/C++接口?)

Par*_*rse 1

除了@user964970评论/解决方案之外,我建议使其与操作系统无关。

使用与操作系统无关的 API(例如 ACE 或 BOOST)来创建您自己的库,提供放置在命名共享内存段内的命名信号量写保护计数器。

这应该是你的图书馆的 API :

long * createCounter(const char * name); // Create a counter
                                         // Will create a named semaphore and a named
                                         // shared memory segment, holding the counter     
                                         // value. Will return pointer to counter
long * getCounter(const char * name); // Get existing counter pointer
                                      // in the calling process' address space
long incCounter(const char * name);   // increment existing counter
Run Code Online (Sandbox Code Playgroud)