In che modo Apple calcola il consumo di energia di un processo in OS X Mavericks


15

In OS X Mavericks è possibile monitorare il consumo di energia di diversi processi in Activity Monitor. Activity Monitor che mostra le colonne sull'impatto energeticoQui possiamo vedere "Impatto energetico" e Impatto energetico medio "e che i valori possono superare 100.

Inoltre ci sarà un'icona della barra dei menu che elenca le applicazioni che consumano più energia in esecuzione in questo momento.

Esiste una documentazione su come Apple calcola l'attuale consumo di energia? Esiste una mappatura tra utilizzo della CPU e consumo di energia?

Spero che ci siano alcuni esperti qui che possono darmi un suggerimento.

Risposte:


1

Esistono molti aspetti dell'utilizzo della CPU che influiscono sul consumo di energia. Non è solo quanta CPU consuma un'applicazione, ma anche quanto spesso e quanto è flessibile. Quest'ultimo può avere un effetto molto più grande.

Un'applicazione che deve svegliarsi esattamente ogni 10ms per eseguire solo poche righe di codice Obj-C semplice può avere un ordine di grandezza maggiore impatto sull'energia rispetto alla stessa applicazione che esegue migliaia di righe di codice ma solo una volta al secondo e non essere molto in particolare su esattamente quando entro quel secondo avverrà il calcolo.

Apple probabilmente utilizza i contatori delle prestazioni di Intel e li tiene in considerazione nella tua applicazione. Probabilmente otterrai maggiori informazioni seguendo prima i manuali Intel per comprendere gli stati di alimentazione e la gestione dell'energia. Ciò varierà notevolmente tra le architetture. Un'app che si comporta male può avere un impatto molto maggiore su Haswell che su una "vecchia" macchina Core 2.

Può essere preso in considerazione anche l'uso di altre risorse, come il sistema audio, l'I / O su disco o l'utilizzo di dispositivi USB. Un probabile metodo di contabilizzazione assegnerebbe alla tua applicazione tutto il consumo di energia necessario alle risorse utilizzate esclusivamente dalla tua applicazione (ad esempio un dispositivo USB personalizzato, accedere a un sistema audio altrimenti spento) e fare una sorta di valutazione per l'hardware condiviso.


1

Tutto inizia con il monitoraggio e le misurazioni di precisione fino a Millisecondi.

Ad esempio, Intel ha creato uno strumento per monitorare i parametri della CPU Intel.

Visualizza la potenza, la frequenza e la temperatura.

Il consumo di energia e la temperatura sono prodotti della frequenza (la velocità) o della quantità di dati elaborati.

La frequenza di campionamento è di millisecondi e la potenza è espressa in Watt e misura la potenza totale per la CPU mentre il monitor delle attività la suddivide per applicazione / processo.

Intel

Ecco un articolo di Apple sulla gestione / il consumo di energia che fornisce ulteriori dettagli su come viene gestita la potenza.

In sintesi, utilizzando la misurazione della potenza in ms si è in grado di controllare meglio il consumo energetico complessivo.

Prima di TC

prima

Utilizzando le informazioni di cui sopra su per Applicazione e il conseguente utilizzo cumulativo di energia Apple ha implementato le funzioni Timer coalescing e App Nap per gestire il consumo di energia risultante nella tabella seguente.

Dopo TC

dopo

Per ulteriori informazioni sui grafici sopra, visita questo articolo .

Poiché l'attività del controllo CPU, inclusa la gestione della RAM e la lettura / scrittura del disco, la scheda di rete e altri, ad esempio, migliorano la gestione della RAM, riducono anche il consumo di energia che si verifica a causa della frequente attività di R / W del disco.

Esistono molti aspetti della gestione dell'alimentazione e sono una combinazione di misurazioni e progetti software molto accurati per ridurre il consumo di energia.

Alcuni esempi sono:

Funzione App Nap

Funzione di coalescenza del timer PDF

Funzionalità di gestione RAM


1
@grgarside Le immagini sembrano provenire dai siti collegati nelle risposte. Tuttavia, non sarebbe male dichiarare esplicitamente la fonte di ogni immagine.
Nohillside

1
@ patrix- fatto, ha mostrato fonti per tutto :)
Ruskes

0

Non sembra esserci alcuna documentazione su come viene calcolato il consumo di energia. L'utilizzo della CPU da solo non può prevedere in modo affidabile il consumo di energia. Quindi i principali fattori considerati sarebbero (questi sono in qualche modo complementari a ciò che App Nap guarda e controlla):

  • uso della CPU
  • Ingresso / uscita disco
  • Ingresso / uscita di rete
  • Uso periferico (come ad esempio altoparlanti audio)

Ancora una volta, non ci sono dettagli su come ciascuno di questi fattori viene misurato e le formule utilizzate per calcolare il consumo di energia. Possiamo fare alcune ipotesi colte dal fatto che ogni Mac (e anche PC) è dotato di vari sensori all'interno del sistema. Puoi utilizzare uno strumento come Hardware Monitor per vedere quali sensori ha il tuo Mac e cosa stanno segnalando in tempo reale.

I sensori chiave relativi al consumo di energia che sono disponibili (e lo sono da diversi anni) in Hardware Monitor sono Tensione CPU, Corrente CPU e Potenza CPU. Per altri elementi nell'elenco sopra, non ci sono sensori hardware per misurare il consumo di energia. Pertanto, Apple deve utilizzare specifici fattori di estrapolazione a seconda del modello di Mac e dell'hardware sottostante.


0

Il numero sembra provenire dal programma top. Ho trovato il seguente post sul blog che indaga questo calcolo in modo molto più dettagliato: https://blog.mozilla.org/nnethercote/2015/08/26/what-does-the-os-x-activity-monitors-energy-impact -actually su misura /

In ogni caso, "Energy Impact" di Activity Monitor era lo stesso della topmisura POWER. Ogni indicazione è che i due sono calcolati in modo identico su questa macchina.

Dato che topè open-source, possiamo studiare una formula / codice reale per come viene calcolato questo numero e il post del blog lo riassume come:

|elapsed_us| is the length of the sample period
|used_us| is the time this process was running during the sample period

%CPU = (used_us * 100.0) / elapsed_us

POWER = if is_a_kernel_process()
          0
        else
          ((used_us + IDLEW * 500) * 100.0) / elapsed_us

Come suggerisce @Ruskes, il calcolo si basa su riattivazione del processo misurata a livello di millisecondi. Il post sul blog menziona che:

Il calcolo POWER è una funzione di CPU e IDLEW. È sostanzialmente lo stesso di% CPU ma con una "tassa" di 500 microsecondi per ogni riattivazione e un'eccezione per i processi del kernel. Il valore di questa funzione può facilmente superare 100, ad esempio un programma con zero utilizzo della CPU e 3.000 riattivazioni al secondo avranno un punteggio POWER di 150, quindi non è una percentuale. Infatti, POWER è una misura senza unità perché è una combinazione semi-arbitraria di due misure con unità incompatibili.

Quindi, in sostanza, puoi pensare al numero come una misura di riattivazione della CPU.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.