2012-05-10 14 views
10

मैं यह पता लगाने की अगर वहाँ एक पुस्तकालय है कि मुझे विंडोज कस्टम प्रदर्शन काउंटर के बराबर के पास कुछ देता है कोशिश कर रहा हूँ (यहाँ वर्णित http://geekswithblogs.net/.NETonMyMind/archive/2006/08/20/88549.aspx)आवेदन काउंटर? (और OSX?)

असल में, मैं कुछ के लिए देख रहा हूँ कर सकते हैं कि किसी एप्लिकेशन के भीतर ग्लोबल काउंटर ट्रैक करने के लिए उपयोग किया जा सकता है, और (आदर्श) कुछ ऐसा है जो उस जानकारी को अन्य अनुप्रयोगों/उपयोगकर्ताओं को एक अच्छी तरह से परिभाषित इंटरफ़ेस के माध्यम से प्रस्तुत करता है। ये आवेदन आंकड़े हैं; मेमोरी और डिस्क जैसी चीजें अन्य तरीकों पर कब्जा कर लिया जा सकता है, लेकिन मैं अपने आवेदन के जीवनकाल के दौरान संभाले गए थ्रूपुट/लेनदेन/"विजेट्स" का पर्दाफाश करना चाहता हूं।

मैं इस सवाल को देखा है:

Concept of "Performance Counters" in Linux/Unix

और यह एक

Registry level counters in Linux accessible from Java

लेकिन न तो मैं के लिए काफी क्या देख रहा हूँ है। मैं एक स्थैतिक फ़ाइल नहीं लिखना चाहता हूं (यह सभी के बाद गतिशील जानकारी है; डिस्क पर पूर्ण होने पर भी मुझे इसे प्राप्त करने में सक्षम होना चाहिए), और यदि संभव हो तो कोड के होमग्राउंड सेट से बचने के बजाय। आदर्श रूप से, कम से कम लिनक्स पर, यह डेटा (मुझे लगता है) कुछ तरीकों से/proc के माध्यम से सामने आएगा, हालांकि यह मुझे स्पष्ट नहीं है कि यह उपयोगकर्तालैंड से किया जा सकता है (यह कम महत्वपूर्ण है, जब तक कि यह कुछ में सामने आता है ग्राहकों के लिए रास्ता।)

लेकिन सवाल के क्रूक्स पर वापस: क्या कोई अंतर्निहित या उपयुक्त तृतीय-पक्ष लाइब्रेरी है जो मुझे कस्टम मीट्रिक (थ्रेड-सुरक्षित, प्रदर्शनकर्ता) काउंटर प्रदान करती है जो मैं कर सकता हूं लिनक्स और अन्य * NIXy ऑपरेटिंग सिस्टम पर उपयोग करें? (और सी/सी ++ से इंटरफेस किया जा सकता है?)

+2

ही की तलाश में गया, मैं किसी भी अब तक नहीं मिला है। मेरे लिए सबसे आसान तरीका एक साझा मेमोरी सेगमेंट में एप्लिकेशन काउंटर का पर्दाफाश करना है। ऐसे काउंटरों की एक मानक संरचना को देखते हुए, लिनक्स पर बाहरी रूप से/dev/shm/में देखकर उनके माध्यम से चलना आसान है। उन्हें/proc के माध्यम से एक्सपोज़ करना शायद अच्छा होगा - जब तक एप्लिकेशन को अपडेट करने के लिए सिस्कोल नहीं करना पड़ता है। – user964970

+1

विंडोज प्रदर्शन काउंटर कर्नेल फ़ंक्शन नहीं हैं। उन्हें एक एपीआई के रूप में लागू किया गया है जिसमें एक साझा साझा लाइब्रेरी (.dll) है जो काउंटर तक पहुंच प्रदान करता है। काउंटर, बदले में, आम तौर पर आवेदन द्वारा उजागर साझा स्मृति वस्तुओं के रूप में लागू होते हैं। इस तरह, उन्हें अपडेट करने के लिए लगभग कुछ भी लागत नहीं है, और उन्हें समझाने के लिए एक एप्लिकेशन विशिष्ट तरीका है।/Proc एकीकरण की आवश्यकता नहीं होनी चाहिए। शायद Argus दर्शक का उपयोग लिनक्स में गैर-जावा अनुप्रयोगों (http://sourceforge.net/projects/argusjmx) के लिए किया जा सकता है, हालांकि जेएमएक्स स्पेस की मुद्रा अस्पष्ट है। – Pekka

उत्तर

0

@user964970 टिप्पणी/समाधान के अलावा, मैं इसे ओएस अज्ञेयवादी बनाने का सुझाव देता हूं।

एएसई या बूस्ट जैसी ओएस अज्ञेय एपीआई का उपयोग अपनी खुद की लाइब्रेरी बनाने के लिए, नामित-सेमफोर लेखन-संरक्षित-काउंटर की आपूर्ति, नामित-साझा-स्मृति खंड के अंदर रखा गया है।

यह अपने पुस्तकालय के एपीआई होना चाहिए:

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