Время каждого Ядро ЦП тратит в состоянии питания C0

Любая помощь в выяснении того, как это сделать, была бы полезна: Сколько времени каждое ядро ​​ЦП провело в состоянии питания C0 за последнюю секунду.

Это для приложения Mac поэтому необходимы Objective-C, какао и c.

9
задан ThinkingStiff 29 June 2012 в 17:39
поделиться

1 ответ

OS X не имеет никаких API-интерфейсов, которые раскрывают c-состояние ЦП. Однако похоже, что вы можете сделать это, используя инструкции MWAIT/MONITOR на процессорах Intel. Intel упоминает, что вы можете отслеживать резидентность C-состояния с помощью этого метода в разделе 14.4 справочного руководства:

Программное обеспечение должно использовать CPUID, чтобы определить, поддерживает ли целевой процессор перечисление расширений MWAIT. Если CPUID.05H.ECX[Bit 0] = 1, целевой процессор поддерживает расширения MWAIT и их перечисление (см. главу 3 «Справочник по набору инструкций, AM» Руководства разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 2A). ).

Если CPUID.05H.ECX[Bit 1] = 1, целевой процессор поддерживает использование прерываний в качестве событий прерывания для MWAIT, даже если прерывания отключены. Используйте эту функцию для измерения резидентности состояния C следующим образом:

  • Программное обеспечение может записывать бит 0 в регистр расширений MWAIT (ECX) при выдаче MWAIT для входа в C-состояние процессора или суб-состояние C.
  • Когда процессор выходит из неактивного C-состояния или под-C-состояния, программное обеспечение может считывать метку времени до потенциального выполнения процедуры обслуживания прерывания (ISR).
  • Вы можете найти больше информации об инструкции MWAIT в том же руководстве. Удачи!

    Справочное руководство Intel

    7
    ответ дан 3 November 2019 в 04:40
    поделиться