我正在嘗試在 macOS 中獲得 CPU 的空閑駐留(x86 上的 C-State C0 駐留,在 arm64 上不確定)。我知道您可以通過sudo powermetrics -i1 -n1 -s cpu_power | grep residency在終端中運行類似的東西來找到此資訊,但我需要一種方法來使用 C、C 、Objective-C 甚至 Assembly 提取此資訊……尤其是不需要管理員的方式特權。
關于這個話題,我能找到的只是:每個 CPU 內核在 C0 電源狀態下花費的時間,但答案并不是最清楚的。請幫忙!
uj5u.com熱心網友回復:
powermetrics 工具使用私有 API 來執行此操作: IOReportStateGetResidency
您也可以嘗試匯入它并自己進行一些反向使用:
https://github.com/samdmarshall/OSXPrivateSDK/blob/master/PrivateSDK10.10.sparse.sdk/usr/local/include/IOReport.h
https://opensource.apple.com/source/PowerManagement/PowerManagement-637.1.2/pmset/pmset.c
除此之外,還有一個直接使用 mwait asm 的示例,但它是針對內核模式的(您需要撰寫一個 kext 來嘗試在 macos 上運行它):
https://rayanfam.com/topics/using-intels-streaming-simd-extensions-3-monitormwait-as-a-kernel-debugging-trick/
我不知道是否可以在沒有 root 權限的情況下執行此操作,并且由于 API 是私有的 - 這是供您研究的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/416057.html
標籤:
