2010-08-18 19 views
9

यह करने में कोई मदद नहीं है कि यह कैसे करना है: पिछले सीपीयू में प्रत्येक सीपीयू कोर सी 0 पावर स्टेट में कितना समय बिताता है।प्रत्येक सीपीयू कोर सी 0 पावर स्टेट में खर्च करता है

यह एक मैक ऐप के लिए है ताकि उद्देश्य-सी, कोको और सी की आवश्यकता हो।

उत्तर

7

ओएस एक्स में कोई भी एपीआई नहीं है जो सीपीयू के सी-स्टेटस का पर्दाफाश करती है। हालांकि, ऐसा लगता है कि आप इंटेल CPUs पर MWAIT/मॉनिटर निर्देशों का उपयोग करके ऐसा कर सकते हैं। इंटेल कहा गया है कि आप संदर्भ मैनुअल की धारा 14.4 में इस तकनीक का इस्तेमाल सी राज्य निवास ट्रैक कर सकते हैं:

सॉफ्टवेयर लक्ष्य प्रोसेसर MWAIT एक्सटेंशन की गणना का समर्थन करता है खोजने के लिए CPUID उपयोग करना चाहिए। यदि CPUID.05H.ECX [बिट 0] = 1, लक्ष्य प्रोसेसर MWAIT एक्सटेंशन और उनकी गणना का समर्थन करता है (अध्याय 3, इंटेल® 64 और आईए -32 आर्किटेक्चर सॉफ़्टवेयर डेवलपर मैनुअल, वॉल्यूम 2 ​​ए के "निर्देश सेट संदर्भ, AM," देखें)।

यदि CPUID.05H.ECX [बिट 1] = 1, लक्ष्य प्रोसेसर एमडब्ल्यूएआईटी के लिए ब्रेक-इवेंट्स के रूप में इंटरप्ट्स का उपयोग करने का समर्थन करता है, भले ही इंटरप्ट अक्षम हो। :

  • सॉफ़्टवेयर प्रोसेसर-विशिष्ट सी-स्टेट या उप-राज्य ।
  • जब एक प्रोसेसर एक निष्क्रिय सी-स्टेट या उप सी-स्टेट से बाहर आता है, तो सॉफ़्टवेयर एक इंटरप्ट सेवा दिनचर्या (आईएसआर) संभावित रूप से निष्पादित होने से पहले टाइमस्टैम्प पढ़ सकता है।
  • आप एक ही मैनुअल में MWAIT अनुदेश बारे में अधिक जानकारी पा सकते हैं। सौभाग्य!

    Intel's Reference Manual

    0

    हो रही C0 प्रतिशत आपको क्या करना चाहिए के लिए निम्नलिखित:

    पढ़ें अवधि के प्रारंभ और अंत बिंदु पर MSRs आप को मापने के निम्नलिखित:

    0x3FC (कोर C3), 0x3FD (कोर

    Cx_ticks = (c3_after - c3_before) + (c6_after - c6_before) + (c7_after - c7_before) 
    total_ticks = (tsc_after - tsc_before) 
    Cx_percentage = Cx_ticks/total_ticks 
    C0_percentage = 100% - Cx_percentage 
    
    : C6), 0x3FE (कोर C7), 0x10 (टीएससी)

    तो निम्नलिखित गणना करते हैं

    आप इस document में अधिक जानकारी प्राप्त कर सकते हैं (वॉल्यूम पर जाएं। 3 सी 35-95)