que estoy tratando de averiguar si hay una biblioteca que me da algo cerca del equivalente de contadores de rendimiento personalizados de Windows (que se describe aquí http://geekswithblogs.net/.NETonMyMind/archive/2006/08/20/88549.aspx)Contadores de aplicaciones en Linux? (Y OSX?)
Básicamente, estoy buscando algo que puede se usará para rastrear los contadores globales dentro de una aplicación, y (idealmente) algo que presente esa información a través de una interfaz bien definida a otras aplicaciones/usuarios. Estas son estadísticas de aplicaciones; cosas como la memoria y el disco se pueden capturar de otras formas, pero estoy buscando exponer el rendimiento/transacciones/"widgets" manejados durante la vida útil de mi aplicación.
que he visto esta pregunta:
Concept of "Performance Counters" in Linux/Unix
y éste
Registry level counters in Linux accessible from Java
pero tampoco es exactamente lo que estoy buscando. No quiero escribir un archivo estático (después de todo, esta es información dinámica, debería poder acceder incluso si el disco está lleno, etc.), y si es posible, preferiría evitar un conjunto de códigos local. Idealmente, al menos en Linux, estos datos (creo) aparecerán en/proc de alguna manera, aunque no me queda claro si eso se puede hacer desde el territorio del usuario (esto es menos importante, siempre y cuando aparezca en algunos camino a los clientes.)
Pero volvamos al quid de la cuestión: ¿existe alguna biblioteca incorporada o adecuada de terceros que me proporcione contadores globales personalizados (subprocesos, seguros) adecuados para métricas de aplicación que pueda usar en Linux y otros * sistemas operativos NIXy? (¿Y se puede interconectar desde C/C++?)
estado buscando el mismo, no he encontrado ninguna hasta ahora. La forma más fácil para mí ha sido exponer los contadores de aplicaciones en un segmento de memoria compartida. Dada una estructura estándar de dichos contadores, es fácil para Linux recorrerlos externamente mirando en/dev/shm /. Exponerlos a través de/proc probablemente sería más agradable, siempre y cuando la aplicación no tenga que hacer syscalls para actualizarlos. – user964970
Los contadores de rendimiento de Windows no son una función del kernel. Se implementan como una API con una biblioteca compartida de aplicaciones (.dll) que proporciona acceso a los contadores. Los contadores, a su vez, generalmente se implementan como objetos de memoria compartida expuestos por la aplicación. De esta manera, no cuestan casi nada actualizar, y hay una forma específica de aplicación para interpretarlos. No debería haber ninguna necesidad de integración/proc. Tal vez el visor Argus podría usarse para aplicaciones que no son Java (http://sourceforge.net/projects/argusjmx) en Linux, aunque la moneda de la especificación JMX no está clara. – Pekka