Grafica e kernel: corsi e ricorsi

Brandon LeBlanc segnala un articolo su Techworld dove si segnala il fatto che in Windows Vista molto codice che gestisce la grafica non sarà più eseguito a livello di kernel, come invece avviene in Windows oggi.


Il titolo di questo post si riferisce al fatto che le prime versioni di NT (Windows NT 3.0, NT 3.5 e NT 3.51) avevano un’architettura in cui i moduli GDI e USER (rispettivamente responsabili di primitive grafiche e gestione dell’interfaccia utente a finestre) venivano eseguiti in modalità utente (user-mode). Con NT 4.0 spostarono questi due moduli a livello kernel, essenzialmente per motivi prestazionali: a parità di hardware Windows 95 era estremamente più veloce nell’interfaccia utente: ciò era dovuto all’assenza di passaggi continui tra kernel-mode e user-mode, cosa cui NT 3.x era obbligato visto che i driver della scheda video erano necessariamente codice da eseguire in modalità kernel e la continua richiesta di primitive grafiche contribuiva ad aumentare il traffico di  richieste e quindi il tempo perso in continui passaggi tra kernel e user-mode.


L’articolo fa cenno di questo e (direi erroneamente) segnala che la presunta perdita di prestazioni sarà compensata dalla potenza dell’hardware odierno. Io credo che non sarà esattamente così (in senso positivo, però), perché in Windows Vista anche i driver delle schede video saranno eseguiti in modalità user: questo però sposta il problema della comunicazione con la scheda video a un livello ancora più basso (un qualche driver in modalità kernel deve pur occuparsi di comunicare con l’hardware); non conosco ancora bene i dettagli di questo livello architetturale, ma intuisco che in alcune modalità (per es. Aero Glass) questa comunicazione è inferiore di quella richiesta da altre modalità (Windows Classic), per quanto paradossalmente l’interfaccia di Aero sia più complessa e ricca di quella classica. Ovviamente bisogna avere hardware (e soprattutto una scheda video) adeguato.


Da poco è uscito Windows Vista CTP Dicembre: sto scaricando i bit, ci vorrà ancora un po’… vediamo se per Natale riesco a fare qualche prova su una macchina reale (non virtuale) adeguata.

SQL Server 2000 SP4 bis ?

Microsoft ha rilasciato una serie di hotfix per SQL Server 2000 SP4 (KB 894905) che sembrano quasi un SP4a. Le correzioni riguardano solo il motore relazionale e non Analysis Services e includono anche un elenco di post-SP3 hotfix elencati nell’articolo KB 904660.


Tra i bug corretti c’è il problema della memoria sopra i 4Gb con AWE (con SP4) e un bug sui linked server con cui mi ero scontrato.


Una cosa che non è assolutamente chiara è se Microsoft consiglia o no l’installazione di questo aggiornamento: normalmente gli hotfix vanno richiesti al PSS perché non sono stati fatti tutti i test di regressione, ma il fatto che questa volta sia tutto scaricabile senza problemi sembra voler dire che va bene installarlo… se qualcuno ha notizie in merito può mettere un commento.

Fix per il bug di Intellisense (VS2005)

Poco più di un mese fa avevo parlato del bug dell’IDE di Visual Studio (precisamente di IntelliSense) che può bloccare l’editor mentre si scrive codice C#.


Una settimana fa il servizio di kbAlertz mi segnala questo articolo, che però è rimasto non attivo almeno fino a un paio di giorni fa (evidentemente dev’essere stato pubblicato, ritirato e poi ripubblicato). Volevo scriverne subito ma ho preferito aspettare di capire cosa fosse successo. Nel frattempo però l’articolo è stato reso pubblico e quindi ora sappiamo che esiste un fix al problema.


Tutto bene? Non proprio. Come fa notare Frans Bouma, questa fix è disponibile solo attraverso il PSS (il servizio di supporto di Microsoft): non so se avete mai dovuto averci a che fare, spesso si tratta di gente in gamba, ma la trafila burocratica non è esattamente veloce e di solito la prima e spesso anche la seconda telefonata si perdono nel descrivere il problema a qualcuno che decide a chi “inoltrare” la pratica. Tutto questo senza contare il tempo perso sentendo musichette al centralino. Sottoscrivo ogni parola del post di Frans: non si farebbe prima a mettere questa DLL online, scaricabile da chiunque, con un bel avviso burocratese da sottoscrivere che dica più o meno “lo installi a tuo rischio e pericolo”? Cosa cambia quando il file arriva dopo una chiamata al PSS, non si corrono gli stessi rischi?


Sono sempre un po’ perplesso (e preoccupato?) quando un’azienda mostra così palesemente una sua inefficienza: prima o poi questa si scarica sui suoi clienti o su altri aspetti dell’azienda stessa. Nessuno è perfetto, ma le critiche servono appunto a fornire stimoli per il miglioramento…

Documentazione per command line

Cercando sulla rete un riassunto delle variabili di environment come %WinDir% mi sono imbattuto in questa pagina, che mi ha fatto scoprire l’esistenza di questa documentazione sui comandi che si possono usare da linea di comando. Oggettivamente il vantaggio di queste pagine sta nella loro essenzialità e specializzazione: un Bignami della linea di comando, insomma, che copre da DOS 1.0 a Windows XP (praticamente anche 2003). Imperdibile.

Hard Drive senza dischi (ma con la RAM)

Su segnalazione di Alessandro Perilli ho letto e valutato questa recensione di drive a stato solido (insomma invece del disco c’è memoria RAM) che costano poco e vanno veloci.


Recentemente ho  pensato seriamente di prendere un disco così per un desktop, ma ho valutato che non fosse ancora il momento (optando per due dischi Raptor 73Gb 10.000 rpm SATA in RAID 0, ma questa è un’altra storia).
Il problema era prima di tutto la capacità: questi sistemi economici costano poco ma hanno poca capacità, quelli professionali sono più capienti (anche se salire sopra i 30/40Gb è difficile) ma costano un patrimonio.


L’alimentazione non mi convince molto, anche se è proprio questa tecnica che rende il tutto relativamente economico.
Ciò detto, bisogna ammettere che ci sono due situazioni in cui questa soluzione è interessante:



  1. per chi fa demo/training/test con prodotti troppo in beta, facendo un SATA esterno, non appena fanno un notebook (tipo desktop replacement) con un connettore SATA esterno, si potrebbero mettere sul notebook 2Gb di RAM, copiare sul disco esterno un 10Gb di macchine virtuali e fare delle demo complesse senza portarsi dietro due casse di server (ovviamente una copia delle macchine virtuali usate andrebbe su degli HD veri, copiandole sul drive RAM poco prima di cominciare…).

  2. per mettere il disco di sistema e programmi facendo l’immagine di un disco “reale” con il minimo indispensabile per partire e lavorare (viste le limitazioni di capienza)

Ci sono però dei campi in cui non sono ancora convinto:



  • Database file: è vero che il guadagno in scrittura è enorme, ma non è sempre vero che si guadagni tanto in lettura. Con RAM sufficiente sul server, la cache di SQL è molto, molto, molto più efficiente. Qui il fattore sicurezza è poi determinante: i drive a stato solido con memoria non volatile costano molto di più, ma non hanno l’handicap dell’alimentazione continua

  • Swap file: aumentando la RAM del PC si guadagna molto di più in termini prestazionali. Ha senso ricorrere a un disco RAM sono se non si può più aumentare la RAM del PC, ma se questa situazione si verificasse su un server forse il server è stato scelto male per venire a trovarsi in queste condizioni…

Qualcuno ha esperienze in merito?