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

标签 linux performancecounter

我想弄清楚是否有一个库可以提供与 Windows 自定义性能计数器相当的东西(此处描述 http://geekswithblogs.net/.NETonMyMind/archive/2006/08/20/88549.aspx)

基本上,我正在寻找既可用于跟踪应用程序内的全局计数器,又可(理想情况下)通过定义明确的界面向其他应用程序/用户呈现该信息的东西。这些是应用统计数据;内存和磁盘之类的东西可以通过其他方式捕获,但我希望公开在我的应用程序生命周期内处理的吞吐量/事务/“小部件”。

我看过这个问题:

Concept of "Performance Counters" in Linux/Unix

还有这个

Registry level counters in Linux accessible from Java

但这两者都不是我想要的。我不想写一个静态文件(毕竟这是动态信息;即使磁盘已满等,我也应该能够获取它),并且宁愿尽可能避免使用自己编写的代码集。理想情况下,至少在 Linux 上,这些数据(我认为)会以某种方式通过/proc 浮出水面,尽管我不清楚是否可以从用户空间完成(这不太重要,只要它在某些地方浮出水面)给客户的方式。)

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

最佳答案

除了@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

关于linux - Linux 中的应用程序计数器? (和 OSX?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525908/

相关文章:

linux - Intel Atom 主板上的 spidev Linux 驱动程序

regex - 使用 grep (或类似的)在第一次匹配后获取字符串

python - 如何在不通信的情况下读取 python 子进程标准输出

c# - 磁盘读/写时间的性能计数器

c# - 为什么调用 PerformanceCounter 很慢?

c# - 性能计数器类别名称? (C#)

linux - 如何在 bash 脚本中排序?

linux - 配置squid来处理相对url

x86 - 如何读取Intel处理器的PMC(性能监控计数器)?

java - 如何将自定义性能计数器数据从 Application Insights Java SDK 插入到云服务