2012-01-06 9 views
8

के लिए हार्डवेयर प्रदर्शन काउंटर एपीआई मैं hardware performance counter का उपयोग करना चाहता हूं, खासकर x86 CPUs कैश मिस या शाखा गलत भविष्यवाणी प्राप्त करने के लिए। इंटेल वीट्यून जैसे उन्नत प्रोफाइलरों में प्रदर्शन काउंटर का भारी उपयोग किया जाता है। विंडोज ऑपरेटिंग सिस्टम पर कृपया प्रदर्शन काउंटर उलझन में न हों।विंडोज

आदेश/C++ कार्यक्रम सी में इन काउंटरों का उपयोग करने के लिए, एक PAPI उपयोग कर सकते हैं: http://icl.cs.utk.edu/papi/

यह आप आसानी से प्रदर्शन काउंटरों का उपयोग करने की अनुमति देता है, लेकिन केवल लिनक्स पर। पीएपीआई ने एक बार विंडोज का समर्थन किया, लेकिन अब नहीं।

क्या कोई ऐसा व्यक्ति है जिसने हाल ही में विंडोज़ पर हार्डवेयर प्रदर्शन काउंटर का उपयोग करने के लिए पीएपीआई या अन्य एपीआई की कोशिश की है?

+0

अगर मैं पूछता हूं कि मन: क्या आप वास्तविक बैंग-ऑन-बिट कोड लिख रहे हैं? अधिकांश विंडोज़ ऐप कोड उसके पास कहीं भी नहीं मिलता है। –

+0

मैं वीट्यून का सुझाव देने जा रहा था, लेकिन आप इसे पहले ही लाए हैं। तो इसके साथ क्या गलत है? –

+0

नहीं, मैं कुछ प्रोफाइलिंग कोड लिख रहा हूं। तो, मुझे कार्यक्रम के लिए एपीआई चाहिए। लिनक्स पीएपीआई के साथ ठीक है, लेकिन विंडोज़, मैं अभी भी एचडब्ल्यू प्रदर्शन काउंटर का उपयोग करने के लिए नवीनतम एपीआई की तलाश में हूं। – Nullptr

उत्तर

4

आप RDPMC निर्देश या __readpmc एमएसवीसी कंपाइलर आंतरिक का उपयोग कर सकते हैं, जो एक ही बात है।

हालांकि, विंडोज़ सीआर 4.पीसीई को 0 पर सेट करके इस निर्देश को निष्पादित करने के लिए उपयोगकर्ता-मोड अनुप्रयोगों को प्रतिबंधित करता है। संभवतः, ऐसा इसलिए किया जाता है क्योंकि प्रत्येक काउंटर का अर्थ एमएसआर रजिस्ट्रार द्वारा निर्धारित किया जाता है, जो केवल कर्नेल मोड में ही पहुंच योग्य होता है। दूसरे शब्दों में, जब तक कि आप कर्नेल-मोड मॉड्यूल (उदा। एक डिवाइस ड्राइवर) न हों, आपको इस निर्देश को निष्पादित करने का प्रयास करने पर "विशेषाधिकार प्राप्त निर्देश" जाल प्राप्त होगा।

यदि आप उपयोगकर्ता-मोड एप्लिकेशन लिख रहे हैं, तो आपका एकमात्र विकल्प (जैसा कि @ क्रिस्टोफर टिप्पणियों में उल्लिखित है) एक कर्नेल मॉड्यूल लिखने के लिए है जो आपके लिए इस निर्देश को निष्पादित करेगा (आपको उपयोगकर्ता-> कर्नेल कॉल पेनल्टी) और अपनी मशीन पर परीक्षण हस्ताक्षर सक्षम करें ताकि आपके संभावित रूप से स्वयं हस्ताक्षरित "ड्राइवर" को लोड किया जा सके। इसका मतलब है कि आप आसानी से इस ऐप को वितरित नहीं कर सकते हैं, लेकिन यह इन-हाउस ट्यूनिंग के लिए काम करेगा।

1

इस HCP Reference के बारे में क्या? क्या यह आपको प्रदान नहीं करता है?