任何幫助搞清楚如何做到這將是巨大的:多少時間每個CPU內核在C0電源狀態在過去的第二度過。時間每個CPU內核花費在C0電源狀態
。這是一個MAC應用程序,以便Objective-C的,需要可可以及c。
任何幫助搞清楚如何做到這將是巨大的:多少時間每個CPU內核在C0電源狀態在過去的第二度過。時間每個CPU內核花費在C0電源狀態
。這是一個MAC應用程序,以便Objective-C的,需要可可以及c。
OS X沒有任何暴露CPU的c狀態的API。但是,您似乎可以使用Intel CPU上的MWAIT/MONITOR指令來執行此操作。英特爾提到,您可以在參考手冊中的部分14.4使用這種技術跟蹤C狀態居留:
軟件應該使用CPUID發現,如果目標處理器支持MWAIT擴展的枚舉。如果CPUID.05H.ECX [位0] = 1,目標處理器支持MWAIT擴展及其枚舉(請參閱英特爾®64和IA-32架構軟件開發人員手冊第2A卷第3章「指令集參考AM」 )。
如果CPUID.05H.ECX [位1] = 1,則目標處理器支持使用中斷作爲破裂事件MWAIT,即使當中斷被禁止。 使用此功能測量C狀態駐留如下:
當發出MWAIT以進入處理器特定的C狀態或子C狀態時,軟件可以寫入MWAIT擴展寄存器(ECX)中的位0 。 當處理器脫離非活動C狀態或子C狀態時,軟件可以在可能執行中斷服務例程(ISR)之前讀取時間戳。
在同一本手冊中可以找到關於MWAIT指令的更多信息。祝你好運!
爲了得到C0百分比,你應該做到以下幾點:
閱讀下列在週期的起點和終點的MSR你衡量:
0x3FC中(核心C3),0x3FD(核心C6),0x3FE(核心C7),爲0x10(TSC)
然後執行下列的計算:
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
你可以在這裏找到更多的信息document(去卷。 3C 35-95)