Ricordo ancora il mio primo vero computer: era il 2000, la macchina un Pentium 3 800Mhz con 256MB di RAM e una scheda video nVidia di tutto rispetto.
Ero ancora studente, e quella era la mia prima macchina usata per lo sviluppo di piccoli software.
Poi ricordo il mio primo smartphone: il glorioso Nexus S, prodotto da Samsung e progettato assieme a Google. Le caratteristiche erano già superiori rispetto al mio primo PC, in un ingombro ridottissimo.
Ed infine, il più recente, il microelaboratore usato per un enorme progetto di automazione/internet delle cose, una scheda embedded con processore di 1.2GHz (poco più potente dei due dispositivi precedenti), 1 GB di RAM e la possibilità di svilupparci sopra quasi quello che volevo.
Perchè ho aperto questo articolo con questi ricordi? Il motivo è semplice oggi voglio parlare di potenza di calcolo.
Tutti i clienti che fino adesso mi hanno commissionato un lavoro legato all’automazione industriale avevano sempre lo stesso cruccio, infatti prima di preoccuparsi quanto dovrebbe essere performante ed efficiente il software mi chiedevano informazioni riguardo alle prestazioni del computer su cui tutto questo meccanismo doveva girare.
Intendiamoci è una domanda più che lecita, ed in parte ne capisco anche le motivazioni che ci stanno dietro (spesso legate alle dimensioni ed i consumi).
Molti addirittura mi hanno raccontato di esperienza da incubo in cui altri fornitori avevano fatto richieste assurde riguardo macchine dalle prestazioni assurde (server con processori e memorie sovradimensionati per la reale utilità applicativa) e dai costi ancora più esorbitanti.
Ovviamente ogni caso va analizzato a se, ma nella maggior parte dei casi ci sono errori enormi nella valutazione delle prestazioni necessarie al corretto funzionamento.
Ecco quindi 5 regole base per valutare in autonomia le caratteristiche hardware minime per realizzare un’automazione industriale:
- Conosci il sistema operativo: in alcuni casi è necessario utilizzare un particolare sistema operativo, cerca di sperimentare e di capire quanta memoria e potenza di calcolo necessita in situazioni di stress. Cerca di capire se è un sistema operativo ben ottimizzato o tende a degradare le prestazioni con l’utilizzo. Un metodo utile per sperimentare è l’utilizzo delle macchine virtuali.
- Valuta il corretto linguaggio di programmazione. La logica nel codice è sempre uguale, ma le singole potenzialità che può offrirti un particolare linguaggio possono aiutarti nel risparmio delle risorse. Ad esempio: se hai risorse parecchio risicate, utile è lavorare con un linguaggio a basso livello (come il C), che ti permette di avere un controllo assoluto della memoria e nessun interprete di mezzo (come avviene con le applicazioni Java). Certo la difficoltà del programmatore aumenta, ma i rischi sono estremamente controllati.
- Sperimenta al ribasso. Una volta che hai realizzato il primo mockup dell’applicazione, prova a ridurre le risorse e vedi come si comporta. Se pensi che blocchi di codice possano essere ottimizzati, crea una nuova versione e mettila sotto stress.
- Pensa sul lungo periodo. Non ha senso vedere un’applicazione industriale, che rimane attiva 24 ore al giorno in un test di pochi minuti (o poche ore). Devi avere un’idea estremamente precisa sul degrado delle prestazioni e sull’effetto di esse sull’hardware. Prova ad eseguire delle simulazioni, oppure se è possibile, prova a creare una versione accelerata, in cui a differenza della versione di produzione, le operazioni eseguite in un determinato lasso di tempo aumentano esponenzialmente. Questo ti permetterà di avere un sufficiente span temporale di analisi ed un’idea estremamente precisa sulla decadenza delle prestazioni.
- Misura. Non andare ad istinto. Misura tutto quello che puoi misurare: CPU, RAM, errori, tempi di ciclo. Solo misurando potrai capire quali sono i punti deboli dell’applicazione e di conseguenza potrai tarare l’hardware corretto per avere la situazione migliore possibile.
LEAVE A COMMENT