sabato 29 novembre 2008

Windows 7: maggiore efficienza energetica.

Ecco una serie di novita' riguardo il risparmio energetico che da sole giustificheranno il passaggio da XP/Vista a Windows 7.

Le due sessioni del PDC che ne parlano sono sono queste:
http://channel9.msdn.com/pdc2008/PC02/
http://channel9.msdn.com/pdc2008/PC19/

La prima si intitola Extending Battery Life with Energy Efficient Applications ma per quanto si parli di batteria in realta' interessa anche chi usa il desktop perche' maggiore efficienza energetica significa anche minor consumi sul desktop.
Le attuali CPU hanno un meccanismo di gestione del clock che fa cambiare di molto i consumi in base al carico di lavoro.
Quello che su un portatile si traduce in maggiore autonomia, sul desktop significa minor consumo di corrente elettrica.

La seconda sessione e' Designing Efficient Background Processes che analizza una classe di applicazioni nell'ottica degli obiettivi prefissati dalla presentazione precedente.

L'obiettivo principale, come detto, e' che il PC consumi di meno facendo le stesse cose, ma per ottenere questo risultato si ottengono anche una serie di risultati collaterali che sono altrettanto interessanti.

Ad esempio in Windows 7 beta vedremo un numero nettamente inferiore di servizi avviati al boot (nella pre-beta non e' ancora cosi') con relativo tempo di boot migliorato (di quanto non lo sappiamo ancora, ma pare che circa la meta' dei servizi attualmente avviati da Vista Ultimate non saranno avviati in fase di boot).

Non avviare un servizio al boot non significa che quel servizio non sara' disponibile, significa che hanno modificato l'architettura del Service Control Manager e questo fara' si' che i servizi verranno attivati solo nel momento in cui e' richiesto quel particolare servizio.
In pratica ogni servizio di questo tipo in fase di registrazione dichiara quali eventi devono farlo attivare, ad esempio un servizio che gestisce certi dispositivi USB restera' spento fino a quando l'utente non collega alla porta USB quel particolare dispositivo.

Questi servizi possono poi disattivarsi da soli appena hanno concluso il loro lavoro, in quanto appunto il Service Control Manager provvedera' a riattivarli nuovamente se necessario.

Un altro aspetto molto interessante e' che in Windows 7 i servizi o le applicazioni che hanno bisogno di effettuare periodicamente delle operazioni possono specificare un ritardo massimo nell'invocazione da parte del sistema.
In questo modo Windows 7 puo' lasciare il sistema in stato di idle per periodi piu' lunghi e poi svegliare le varie applicazioni/servizi in tempi ravvicinati in modo che svolgano tutti le loro funzioni quando il sistema non e' piu' in idle.
Attualmente invece puo' succedere che un paio di servizi abbiano dei timer distanziati tra loro in modo tale che alternativamente tengono attivo il sistema non permettendogli di entrare in modalita' idle, nonostante di per se' facciano operazioni semplici che si concludono rapidamente.

Un altro aspetto collaterale di tutto cio' e' che si spera che i produttori di software inizini ad usare le funzionalita' di Windows in modo corretto.
Ad esempio Google, Apple e Sun invece di usare il Task Scheduler per gestire gli aggiornamenti automatici installano dei servizi ad hoc che girano il 100% del tempo che il PC e' acceso, quando invece con un semplicissimo task schedulato il tutto potrebbe essere fatto in modo efficiente e potrebbero tra l'altro lasciare che sia l'utente a configurare la frequenza dei controlli stessi.

Per chi sviluppa applicazioni vengono anche messi a disposizione nuove API in modo che le applicazioni possano gestire internamente delle strategie di risparmi energetico. Ad esempio i player di DVD possono passare da una riproduzione a 60 frame al secondo a 30 frame quando il sistema passa ad usare la batteria. Questo senza bisogno che l'applicazione controlli ogni tot lo stato del sistema ma ricevendo delle notifiche in modo estremamente semplice. Inoltre le applicazioni che di tanto in tanto devono accedere al disco possono richiedere di essere avvisate quando il sistema esce dallo stato di idle in modo da non essere loro a farlo senza motivo.

Tutto questo poi e' correlato con nuovi tools (alcuni gia' disponibili anche su Vista) che permettono di avere informazioni sullo stato del sistema e di poter scoprire chi o cosa impedisce ad esempio di far entrare il sistema in stato di idle oppure che driver non sta gestendo in modo corretto lo stato di basso consumo energeti di una periferica.

Una cosa molto interessante che viene spiegata nelle presentazioni e' che disabilitare una periferica dal Device Manager non sempre e' una buona idea perche' mentre il driver della periferica e' in grado di tenerla in stato di idle, non e' detto che questo avvenga se il driver e' disabilitato.

Ma poi all'utente finale cosa gliene viene in tasca? Come detto l'utente sui portatili vedra' la batteria durare di piu' pur facendo esattamente le stesse cose. L'utente di desktop non lo notera' ma la bolletta dell'enel sara' un po' meno esosa. Infine entrambi noteranno una minor invasivita' del sistema, ci saranno meno occasioni nelle quali sentiranno i dischi uscire dallo stato di idle e probabilmente noteranno meno situazioni nelle quali il sistema e' occupato a discapito della reattivita' dell'applicazione in primo piano in quanto un'altra novita' e' che verra' prestata piu' attenzione a non effettuare operazioni "pesanti" che possono essere posticipate quando il sistema e' in uso da parte dell'utente.

8 commenti:

  1. Interessantissimo,
    Chissà nell'uso normale del mio XPS quanto guadagno in durata, sono sempre piu ansioso di arrivare alla RC.

    RispondiElimina
  2. Sembra davvero un bel lavoro. Non ci resta che aspettare 7.

    RispondiElimina
  3. Mettere insieme XP con Vista è scorretto, in quanto con Vista è già stato fatto un notevole passo avanti nel risparmio energetico rispetto a XP (la frase "passaggio da XP/Vista a Win7" è quindi errata! Perchè ignori che ci sia stato il salto da XP a Vista). Inoltre nel SP1 c'è stato un ulteriore miglioramento e nelle note di rilascio della beta del SP2 di Vista c'è scritto che il risparmio energetico migliorerà del 20%, quindi allineandosi quasi a Win7.

    RispondiElimina
  4. Suc, il post e' sulle novita' di Windows 7 non un confronto tra XP e Vista.
    La frase "passaggio da XP/Vista a Win7" non e' errata, quello che e' errato e' non capire il senso di un post e mettersi a fare polemica sul nulla.

    In compenso fino a che non avremo dati sperimentali sui consumi energetici della SP2 di Vista e della RTM di Windows 7, affermazioni come "il risparmio energetico migliorerà del 20%, quindi allineandosi quasi a Win7" sono del tutto campate in aria.

    RispondiElimina
  5. @Enrico giordani

    "Non avviare un servizio al boot non significa che quel servizio non sara' disponibile, significa che hanno modificato l'architettura del Service Control Manager e questo fara' si' che i servizi verranno attivati solo nel momento in cui e' richiesto quel particolare servizio."

    Un risultato molto simile (uguale?) mi pare sia già ottenibile ora con alcuni servizi.
    E' sufficiente impostare a "manuale" l'avvio di questi per fare in modo che vengano avviati solo quando necessario.
    La miglioria in Win7 quindi potrebbe riguardare anche il caricamento del servizio (questo, cioè, oltre che essere avviato su richiesta, dovrà poter essere caricato su richiesta).

    RispondiElimina
  6. No Enrico, l'avvio manuale di un servizio e' tutt'altra cosa.
    Adesso in Vista/XP un servizio con avvio manuale deve essere appunto avviato da qualcuno/qualcosa.
    Prova a mettere in manuale il print service e vedrai che se provi a stampare avrai un errore.

    Del resto oggi un servizio non ha modo di dire al Service Control Manager per cosa vuole essere attivato, quindi se tu lo metti in manuale come potrebbe essere attivato se non in modo esplicito da qualcuno/qualcosa che ne fa richiesta al Service Control Manager.

    Mi sono spiegato?

    RispondiElimina
  7. @Enrico Giordani
    Ci sono alcuni servizi che, impostati per l'avvio manuale, si avviano automaticamente senza che sia necessario l'intervento dell'operatore.
    Lo si evince facilmente guardando questo snapshot.
    Da quel che ho capito (ma confesso di non aver approfondito l'argomento), questo comportamento è possibile a patto che il servizio non richieda l'interazione con il desktop (lo spooler di stampa è uno di questi).
    In ogni caso, ben venga una gestione più intelligente dell'avvio dei servizi, così come sembra implementata in Windows 7.

    RispondiElimina
  8. Quelli sono servizi che vengono esplicitamente avviati da qualche altro componente, non partono in automatico, come detto l'attuale Control Service Manager non ha modo di sapere quando deve avviare un servizio che sia modalita' manuale.
    In compenso ci sono servizi che provvedono ad avviarne di altri dato che si appoggiano su di essi.

    RispondiElimina