di  -  giovedì 1 ottobre 2009

Windows Vista

Chiunque segua un po’ il mondo dell’informatica conosce bene che l’impressione globale a seguito del lancio di Windows Vista non è stata di certo quella di un sistema operativo accolto di buon grado. Notevoli, infatti, sono state le critiche più o meno condivisibili effettuate in merito ai problemi di compatibilità, di performance con hardware non recentissimo, ecc…

Come spesso accade in situazioni simili, quello che di buono è stato introdotto di fatto è passato in secondo piano. Tuttavia oggi, a oltre due anni dalla sua introduzione, a mente fresca, possiamo analizzare una delle più interessanti, almeno ai fini multimediali, funzionalità che Microsoft ha implementato in Windows Vista e che sarà presente anche nell’ormai imminente, e a prima vista destinato a miglior sorte, Windows 7: il Multimedia Class Scheduler.

Nell’ambito del processo di reingegnerizzazione che hanno subito il kernel e le componenti principali di Windows con l’avvento di Vista, Microsoft ha pensato bene di rivedere globalmente il thread scheduler e, in aggiunta, di fornire uno speciale servizio dedicato allo scheduling delle operazioni multimediali.

Tutte le versioni di Windows basate su kernel NT integrano un sistema di monitoraggio dei cicli di clock spesi dal processore su ogni thread. Tale sistema effettua ad intervalli regolari di tempo (dai 10 ai 15 ms) un polling, cioè essenzialmente interrompe l’esecuzione del thread in corso prendendo nota del suo ID, informazione successivamente utilizzata per dedurre statisticamente su quali thread spende la maggioranza del tempo il processore.

Il problema di questo approccio è che se l’intervallo di tempo destinato a quel thread non è sufficientemente lungo, l’interruzione dovuta al polling potrebbe rubargli buona parte del tempo che lo scheduler gli ha assegnato, rendendo di fatto nulla l’esecuzione del thread per quello specifico intervallo di tempo. In altre parole il sistema di monitoraggio assume che tutti i thread interrotti dal processo di polling abbiano consumato completamente il tempo a loro assegnato dallo scheduler, non considerando, ad esempio, il caso in cui l’interruzione avviene all’inizio dell’intervallo di tempo concesso.

Naturalmente una stima siffatta è sufficiente per i programmi di diagnostica che mostrano approssimatamente quanto tempo spende il processore su ogni thread, ma può risultare essere a dir poco grossolana se viene utilizzata dal thread scheduler stesso per prendere decisioni sui cicli di clock da destinare ad ogni thread.

E’ per questo motivo che Windows Vista e , conseguentemente, Windows 7, introducono un nuovo meccanismo che recupera in un ciclo di clock le informazioni relative al tempo speso dalla CPU su ogni thread usando i registri dei più recenti processori destinati a questa mansione. Inoltre il nuovo thread scheduler, nel caso in cui un thread dovesse essere interrotto per quel ciclo di clock, ne tiene conto al fine di prevedere per quello specifico thread un ciclo di clock addizionale e, conseguentemente, di evitare che il thread campionato sia penalizzato.

Dei miglioramenti appena descritti ne traggono beneficio tutte le applicazioni che girano su Windows Vista, ma specificatamente per le applicazioni multimediali Microsoft ha deciso di mettere a punto un nuovo servizio chiamato Multimedia Class Scheduler Service (MCSS).

Basandosi sull’assunzione che la fruizione di contenuti multimediali come flussi audio e video, pone come caratteristica vitale la fluidità della riproduzione, il MCSS dispone di una serie di categorie che definiscono l’uso che il sistema operativo deve fare della CPU e della GPU sulla base della tipologia di elaborazione da effettuare: riproduzione audio, riproduzione video, cattura video, registrazione audio, videogames, ecc… Tali impostazioni sono presenti nel registro di configurazione di Windows e possono essere arricchite anche da tool esterni al sistema operativo.

Ogni volta che un’applicazione multimediale richiede un thread a scopo multimediale, il MCSS, che a sua volta lavora in un thread ad elevatissima priorità, crea un nuovo thread sulla base della classificazione effettuata nel registro di configurazione. In questo modo lo scheduling dei thread destinati alle applicazioni multimediali viene ottimizzato sulla base della natura dell’applicazione stessa.

Purtroppo il risvolto della medaglia legato all’uso del MCSS è che, ottenendo thread con maggiore priorità, necessariamente le risorse destinate alle altre componenti del sistema operativo vengono ridimensionate. In particolare, prima del rilascio del Service Pack 1, è stato osservato che una delle cause delle altalenanti performance di Windows Vista nel networking è proprio l’uso del MCSS. In particolare il calo delle prestazioni  è apprezzabile nelle reti LAN ad 1 Gb e per quanto concerne il traffico in download. Per risolvere questo problema Microsoft ha rivisto la politica di bilanciamento di carico tra networking e MCSS, rendendola anche configurabile a partire dal Service Pack 1 di Windows Vista.

Ecco un esempio di nuove funzionalità introdotte in Windows Vista che, pur rappresentando un indubbio passo in avanti rispetto ai precedenti Windows, danno ragione a coloro che aspettano il rilascio del primo Service Pack prima di cimentarsi nell’installazione di un sistema operativo radicalmente rinnovato come è stato Windows Vista rispetto al suo predecessore.

9 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    paolo
     scrive: 

    proprio grazie a quel servizio windows media player sul mio notebook riesce tranquillamente nel play in streaming di filmati FullHD su una rete 10/100, cosa in cui VLC arranca in maniera imbarazzante.

  • # 2
    Edoardo
     scrive: 

    Paolo: al contrario tuo nelle stesse condizioni io li vedo bene solo con VLC… Non saprei a cosa possa essere dovuto ma WMP a volte ha dei problemi mentre VLC mai.

  • # 3
    j / Marco
     scrive: 

    va anche detto che in Vista è stata introdotta la prioritizzazione delle operazioni di I/O, sotto forma di meccanismi di accodamento, policy di scheduling che in presenza di applicazioni multimediali o interattive in foreground, avvantaggiano queste (per far sì che possano mantenere la maggiore reattività) rispetto alle applicazioni che operano in background, e API che le applicazioni possono usare per richiedere un certo livello di servizio (come priorità di IO o banda consentita)

  • # 4
    paolo
     scrive: 

    Edoardo: I file che visualizzo sono MKV h264 1920×1080.
    Con altri container e codec utilizzo sempre VLC quindi non saprei dirti il comportamento di WMP, dovrei provare.

    In ogni caso un software per sfruttare il MCS deve essere (ovviamente) programmato appositamente, non credo che VLC lo sia.

    Comunque, qui: http://technet.microsoft.com/en-us/magazine/2007.02.vistakernel.aspx?pr=blog

    c’è l’articolo technet da cui Fanizzi (credo) ha elaborato le informazioni per il post. Come potete notare ci sono anche i grafici del Performance Monitor che mostrano i benefici apportati.

  • # 5
    densou
     scrive: 

    Media Player Classic Home Cinema SUPPORTA la codifica in hw (gpu) con le dxva …. perché usare WMP o VLC quando con poco si ottiene il massimo ? (fidatevi, usarlo anche solo come audio player mangia meno risorse dei corrispettivi foobar, winamp, ecc -e non per sentito dire-)
    Perché “pubblicizzo” ciò ? Trovatemi altre alternative valide GRATUITE per vedere MKV H264 alla stessa qualità ;) Poi se consideriamo che c’è pure la versione X64 ad hoc….

    (KMPlayer è un mezzo clone, e solo x86, quindi evitiamo di considerarlo)

  • # 6
    paolo
     scrive: 

    densou: il software da te proposto aprendo gli mkv di cui prima mi fa impennare entrambi i core della cpu al 100% e non inizia mai il play

  • # 7
    nenco
     scrive: 

    confermo Media palyer classic home cinema come miglior mediaplayer, scarico sempre l’ultima vers da xvidvideo.ru

  • # 8
    densou
     scrive: 

    @paolo
    ovviamente necessita di essere configurato manualmente, pardon, mi ero dimenticato di scriverlo…. e sarebbe intollerante a codec pack di terzi (meglio usarlo stand-alone, imo). Le guide non si sprecano cmq, le trovi quasi ovunque :)

  • # 9
    paolo
     scrive: 

    densou: dopo una velocissima configurazione ora effettua il play ma dopo un tot di tempo va fuori sincro con l’audio in modo esagerato.

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.