domenica 1 ottobre 2017

PC con CPU da 24 core ma il mouse va a scatti!

Non importa se il tuo PC è un mostro di potenza, non importa se ha una CPU da 24 core capace di eseguire 48 thread simultaneamente, non importa se si ha un SSD rapidissimo, non importa se si ha i 64 GB di memoria RAM, perchè tanto si sa come va a finire con Windows 10. E lo volete proprio sapere? Sarà fatto!

Bruce Dawson, programmatore che lavora per Google e si occupa niente di meno che di ottimizzazione e affidabilità dei sistemi (un po' come me), porta le prove di come Windows 10 girasse in tempo reale, con tanto di grafici, tabelle e analisi.

Dawson fu rimasto colpito dal fatto che la sua macchina super-potente abbia problemi a registrare il movimento del mouse, rappresentato nel puntatore sullo schermo, con ritardi, rallentamenti, improvvisi blocchi. Da cosa dipende? Utilizzando sistemi di tracciamento per sviluppatori si è messo a guardare cosa accade frazione di secondo per frazione di secondo, considerando soprattutto che buona parte della potenza bruta della CPU e della memoria era ovviamente libera.

Dopo aver preso appunti inseguendo una serie di processi che mirano ad altri processi critici che a loro volta mirano ad altri processi critici ancora, per una dozzina di volte, alla fine ha trovato una serie di attività del sistema (soprattutto gomacc.exe) che bloccavano la catena per alcuni millesimi di secondo, quanto basta per inchiodare il mouse e renderlo malamente funzionante.

Analizzando ancora meglio l’accaduto, in 1 secondo e 125 millesimi avvenivamo più di 5.768 chiamate e cambiamenti di contesto per una somma totale di eventi che richiedeva 5 secondi e 77 per essere eseguita. Senza contare poi il problema dell’avvio e della chiusura dei processi: entrambe le fasi sono gestite direttamente dalla CPU (ovviamente), ma prima di essere terminati i processi vengono “messi in fila” e serializzati. Windows 10 non usa il multi-threading e quindi c’è un solo core che attende l’arrivo di tutti i processi da chiudere (una porcheria proprio!), in concomitanza con le altre attività che quel core di riferimento deve esere (tutti i lavori “single-core” poggiano sullo stesso core di riferimento, altrimenti sarebbero distribuiti parallelamente e considerati come multi-core, altrimenti Windows già andrebbe molto meglio con più core). Siccome la macchina ha molti core lo sbilanciamento tra il numero di thread che vengono attivati e vanno in esecuzione in parallelo e il numero di processi che poi devono essere terminati dal core principale è fortemente sbilanciata.

Secondo Dawson, che cita la legge di Amdahl, le parti che non possono essere parallelizzate dominano l’esecuzione del programma o del sistema. In questo caso, a meno come non si riavvia il computer ogni pochi giorni, la coda di processi che attendono di essere terminati diventa enorme e alla fine infligge troppo sul movimento del mouse, che “poggia” su quello stesso core e ha una velocità che richiede spazio di esecuzione non più disponibile.

Quindi ecco un altro motivo per non usare quella porcheria di Windows 10, se non ci credete a quello che ho detto basta andare nella pagina di quell'utente.

Disqus Comments