Novità per CPUFreq e P-state su Linux 4.6
Nella giornata di lunedì, Rafael Wysocki (Ingegnere del reparto open source di Intel e maintainer del core ACPI del kernel Linux) ha pubblicato gli update per la gestione energetica e ACPI di Linux 4.6.
Questi aggiornamenti sono piuttosto corposi e contengono alcuni grossi cambiamenti, in particolar modo per il codice di scaling di CPUFreq/P-state, ovvero la combinazione di voltaggio operativo e frequenza del processore. Wysocki ha brevemente spiegato le novità introdotte:
“Prima di tutto è cambiato il modo con cui vengono innescati gli aggiornamenti di frequenza del processore. Invece di dover impostare e gestire un timer differibile per ogni CPU nel sistema per valutare ed eventualmente cambiare la loro frequenza periodicamente, i cpufreq governor impostano delle callback per essere chiamati dallo scheduler su una base regolare (in sostanza sulle variazioni di utilizzo). I “vecchi” governor, “ondemand” e “conservative”, fanno ancora il loro lavoro nel contesto del processo (anche se quello è gestito dallo scheduler adesso), ma intel_pstate fa tutto nella callback chiamata dallo scheduler senza bisogno di alcun processo asincrono.
Ovviamente, questo elimina l’overhead relativo alla gestione di quei timer, inoltre permette al codice del cpufreq governor di essere semplificato un bel po’. In particolare il codice e le strutture dati in comune con “ondemand” e “conservative” sono state snellite e rese più dirette e alcuni problemi di vecchia data piuttosto noiosi sono stati risolti. Nello specifico la gestione degli attributi del governor sysfs è stata modificata e i relativi blocchi sono stati meglio dettagliati, il che permette di evitare alcuni problemi di concorrenza (in particolare i deadlock con il core del codice di cpufreq).
In pratica i nuovi meccanismi per innescare gli aggiornamenti di frequenza permettono l’utilizzo di informazioni che vengono passate dallo scheduler a cpufreq. Anche se il codice corrente non le utilizza, durante il lavoro sarà il nuovo cpufreq governor a prendere le decisioni sulla base dei dati utilizzati dallo scheduler. Ciò dovrebbe permettere allo scheduler e a cpufreq di lavorare più strettamente a contatto sul lungo termine.”
Oltre a questa rielaborazione di P-state e CPUFreq per usare le callback chiamate dallo scheduler invece dei timer differibili, ci sono anche diversi bugfix ed ottimizzazioni per il P-State ed uno snellimento del core di CPUFreq, seguito da un aggiornamento per ACPICA, diversi fix ai driver Intel RAPL e all’utility TurboStat.
[Fonte]