3.2. Potenza di processazione

Spesso conosciuta come potenza della CPU, cicli CPU, e diversi altri nomi, la potenza di processazione rappresenta l'abilità di un computer di manipolare i dati. Tale potenza varia a seconda dell'architettura (e della velocità dell'orologio) della CPU — generalmente le CPU con una velocità di orologio più elevata e quelle che supportano un numero di dati più elevati, possiedono una potenza di processazione più elevata rispetto alle CPU più lente che supportano un numero minore di dati.

3.2.1. Dati relativi alla potenza di processazione

Ecco due dei dati principali inerenti la potenza di processazione che dovreste tener presente:

La potenza di processazione è fissa, e cioè la CPU non può superare un certo limite. Per esempio, se avete bisogno di aggiungere due numeri insieme (una operazione che necessita di una sola istruzione sulla maggior parte delle architetture), una CPU particolare può eseguire questa operazione ad una sola velocità. Con qualche eccezione, non è possibile rallentare la velocità con la quale una CPU processa le istruzioni, tanto meno aumentarla.

La potenza di processazione è anche limitata. Cioè, ci sono limiti dovuti al tipo di CPU da collegare ad ogni computer. Alcuni sistemi sono capaci di supportare un'ampia gamma di CPU con diverse velocità, mentre altri potrebbero non essere aggiornabili[1].

La potenza di processazione non può essere conservata per un uso futuro. In altre parole, se una CPU è in grado di processare 100 milioni d'istruzioni al secondo, un secondo in posizione idle, risulta essere uguale a 100 milioni d'istruzioni che non sono state processate.

Se teniamo presenti questi fattori e li esaminiamo attraverso una prospettiva diversa , una CPU "produce" una serie di istruzioni eseguite ad una velocità fissa. E se la CPU "produce" alcune istruzioni precedentemente eseguite, ciò significa che vi è qualcosa che le "consuma". La sezione successiva affronta tale aspetto.

3.2.2. Utenze interessate all'uso della potenza di processazione

Sono presenti due utenze principali per la potenza di processazione:

3.2.2.1. Le applicazioni

Le normali utenze della potenza di processazione sono le applicazioni ed i programmi che desiderate far eseguire dal computer. Da uno spreadsheet ad un database, le applicazioni sono la ragione per la quale avete un computer.

Un sistema con una sola CPU è in grado di eseguire un compito per volta. Per questo, se la vostra applicazione è in esecuzione, non è possibile eseguire altro. È anche vero che — se state eseguendo qualcosa di diverso da un'applicazione, allora la stessa non può essere eseguita.

Come mai è possibile eseguire diverse applicazioni contemporaneamente su sistemi operativi moderni? La risposta è che essi sono sistemi operativi del tipo 'multitasking'. In altre parole, essi sono in grado di creare l'illusione che è possibile eseguire diverse cose contemporaneamente, quando in effetti ciò non può essere fatto. Il segreto è quello di conferire ad ogni processo una frazione di secondo dove il processo stesso è in grado di essere eseguito sulla CPU, prima di rendere disponibile quest'ultima ad un altro processo nella frazione di secondo successiva. Se questi cambi di contesto avvengono molto frequentemente, è possibile raggiungere l'illusione di eseguire applicazioni multiple contemporaneamente.

Naturalmente, le applicazioni eseguono diversi altri compiti oltre a quello di manipolare i dati usando la CPU. Esse possono attendere l'input di un utente o eseguire l'I/O per dispositivi come le unità disco ed i display grafici. Quando si verificano questi eventi, l'applicazione non ha più bisogno della CPU. A questo punto la CPU stessa può essere utilizzata per altri processi in grado di eseguire altre applicazioni senza rallentare l'applicazione in attesa.

In aggiunta, la CPU può essere utilizzata da un'altra utenza della potenza di processazione: il sistema operativo.

3.2.2.2. Il sistema operativo

È difficile determinare il consumo della potenza di processazione da parte del sistema operativo. Il motivo è rappresentato dal fatto che i sistemi operativi utilizzano un mix di codici system-level e process-level, per svolgere il loro lavoro. Mentre per esempio, è più semplice utilizzare un monitor per visualizzare l'attività del processo che esegue un demone o un servizio, non risulta essere altrettanto semplice determinare la quantità di potenza di processazione consumata dalla processazione relativa all'I/O del system-level (la quale viene determinata normalmente all'interno del contesto del processo che richiede l'I/O.)

In generale, è possibile dividere questo tipo di overhead del sistema operativo in due tipi:

  • Gestione del sistema operativo

  • Attività relative al processo

La gestione del sistema operativo include l'attività di programmazione del processo e della gestione della memoria, mentre le attività relative al processo includono qualsiasi processo che supporta il sistema operativo, ad esempio un processo che gestisce l'event logging dell'intero sistema oppure il cache flushing I/O.

3.2.3. Migliorare la carenza di CPU

Là dove non è disponibile una potenza di processazione sufficiente per il lavoro da svolgere è possibile:

3.2.3.1. Riduzione del carico

La riduzione del carico della CPU è un approccio che si può intraprendere senza alcuna spesa. Il segreto è quello di identificare gli aspetti del carico del sistema sotto il vostro controllo, che possono essere eliminati. A questo scopo vi suggeriamo di fare particolare attenzione a tre aree principali:

  • Riduzione dell'overhead del sistema operativo

  • Riduzione dell'overhead dell'applicazione

  • Eliminazione completa delle applicazioni

3.2.3.1.1. Riduzione dell'overhead del sistema operativo

Per ridurre l'overhead del sistema operativo, è necessario esaminare l'attuale carico del sistema e determinare gli aspetti che danno luogo ad un numero elevato di overhead. Queste aree possono includere:

  • Riduzione della necessità di una programmazione frequente del processo

  • Riduzione della quantità I/O eseguita

Non aspettatevi miracoli, in un sistema configurato in modo corretto, è improbabile notare una migliore prestazione riducendo l'overhead del sistema operativo stesso. Questo è divuto dal fatto che il suddetto sistema, per definizione, presenta una minima quantità di overhaed. Tuttavia, se il vostro sistema è in esecuzione con poca RAM, sareste in grado di ridurre l'overhaed alleviando la carenza della stessa RAM.

3.2.3.1.2. Riduzione dell'overhead dell'applicazione

La riduzione dell'overhead dell'applicazione significa accertarsi che l'applicazione stessa abbia tutto il necessario per essere eseguita in modo corretto. Alcune applicazioni hanno mostrato diversi comportamenti sotto diversi ambienti — un'applicazione può richiedere molte risorse quando processa alcuni tipi di dati, ma comportarsi in modo diverso quando ne processa altri.

È quindi necessario comprendere tutte le applicazioni eseguite sul vostro sistema per poterle eseguire più efficientemente. Spesso questo procedimento comporta lavorare a stretto contatto con i vostri utenti e/o con gli sviluppatori dell'organizzazione, in modo da scoprire i diversi modi attraverso i quali le applicazioni possono essere meglio eseguite.

3.2.3.1.3. Eliminazione completa delle applicazioni

A seconda dell'organizzazione, questo approccio potrebbe non essere a voi disponibile in quanto spesso non è responsabilità dell'amministratore del sistema decidere quali applicazioni devono essere eseguite. Tuttavia, se siete in grado d'identificare qualsiasi applicazione conosciuta come "CPU hogs", allora sareste in grado di influenzare il loro ritiro.

Potreste non essere i soli ad essere interessati seguendo questa procedura. Anche gli utenti coinvolti dovrebbero far parte di questo processo; in molti casi essi potrebbero avere la conoscenza ed il potere per eseguire i cambiamenti necessari all'applicazione.

SuggerimentoSuggerimento
 

Ricordatevi che non è necessario eliminare un'applicazione da ogni sistema presente nella vostra organizzazione. Infatti potreste essere in grado di muovere una particolare applicazione perticolarmente 'affamata' di CPU, da un sistema sovraccarico ad un altro sistema che è quasi in una posizione di idle.

3.2.3.2. Aumento della capacità

Ovviamente, se non risulta essere possibile ridurre la domanda di potenza di processazione, allora dovreste cercare il modo di aumentare la potenza di processazione disponibile. Per fare ciò è necessario l'uso di risorse economiche.

3.2.3.2.1. Migliorare la CPU

L'approccio più semplice è quello di determinare se la CPU del vostro sistema può essere migliorata. La prima fase è quella di determinare se l'attuale CPU può essere rimossa. Alcuni sistemi (in modo particolare i portatili) possiedono CPU in grado di essere integrate, rendendo così impossibile l'esecuzione di un miglioramento. Il resto dei sistemi possiedono delle CPU 'socketed' che rendono possibili, almeno in teoria, l'esecuzione di tale miglioramento.

Successivamente, dovete eseguire alcune ricerche per determinare se esiste una CPU più veloce per la configurazione del vostro sistema. Per esempio, se avete una CPU di 1GHz, ed esiste una unità di 2GHz dello stesso tipo, allora è possibile eseguire un miglioramento.

Per finire, dovete determinare la velocità massima dell'orologio che può essere supportata dal vostro sistema. Per continuare l'esempio sopra indicato, se il vostro sistema supporta solo processori che vengono eseguiti con un valore di 1GHz o inferiore, anche se esiste una tipologia corretta di CPU di 2GHz, non è possibile eseguire una semplice sostituzione della stessa.

Se non riuscite a installare nel vostro sistema una CPU più veloce, allora la vostra opzione sarà limitata alla sostituzione della scheda madre oppure all'adozione del 'forklift upgrade', cioè della sostituzione dell'intero computer, ma questa procedura risulta essere molto più costosa.

Tuttavia, alcune configurazioni rendono possibile un approccio leggermente diverso. Invece di sostituire la CPU corrente, perchè non aggiungerne un'altra?

3.2.3.2.2. La Multiprocessazione Simmetrica è l'opzione migliore per voi?

La multiprocessazione simmetrica (conosciuta anche come SMP), rende possibile per un sistema computerizzato, avere più di una CPU in grado di condividere tutte le risorse del sistema. Ciò significa che, a differenza di un sistema uniprocessor, un sistema SMP potrebbe presentare più di un processo in esecuzione contemporaneamente.

Questo potrebbe sembrare come il sogno principale di un amministratore di sistema. Diciamo innanzitutto che SMP rende possibile aumentare la potenza della CPU di un sistema, anche se non sono disponibili CPU con una maggiore velocità dell'orologio, — aggiungendo soltanto un'altra CPU. Tuttavia questa flessibilità presenta delle avvertenze.

La prima è che tutti i sistemi sono in grado di supportare operazioni SMP. Il vostro sistema deve presentare una scheda madre creata per supportare processori multipli. Se non li supporta, è necessario (almeno) eseguire un miglioramento della stessa scheda madre.

La seconda è che SMP aumenta l'overhead del sistema. Con più lavoro da programmare per le CPU, il sistema operativo richiede un maggior numero di cicli CPU per l'overhead. Un altro aspetto è quello che con CPU multiple, è possibile il verificarsi di maggiori dispute per le risorse del sistema. A causa di questi fattori, il miglioramento di un sistema dual-processor in una unità quad-processor, non corrisponde ad un aumento del 100% in potenza disponibile della CPU. Infatti, a seconda dell'hardware corrente, del carico di lavoro e dell'architettura del processore, è possibile raggiungere un punto dove l'aggiunta di un altro processore potrebbe ridurre le prestazioni del sistema.

Un altro punto da considerare è che SMP non aiuta i carichi di lavoro che consistono in un'applicazione monolitica con un singolo livello di esecuzione. In altre parole, se un programma di simulazione compute-bound molto grande viene eseguito come un processo senza thread, esso non verrà eseguito più velocemente su di un sistema SMP rispetto ad una macchina con un processore singolo. Infatti, potrebbe essere anche più lento, a causa di maggiori overhead dovuti all'SMP. Per queste ragioni molti amministratori di sistema convengono nel fatto che quando si tratta di potenza CPU, la potenza di processazione con un singolo livello rappresenta la scelta migliore. Tale scelta fornisce una maggiore poteza CPU con minore restrizione.

Anche se gli argomenti affrontati sembrerebbero portare all'idea che SMP non è mai la scelta giusta, vi sono alcune circostanze nelle quali SMP può risultare la scelta più idonea. Per esempio, ambienti in grado di eseguire molteplici applicazioni compute-bound rappresentano il caso ideale per SMP. La ragione per questo è data dal fatto che le applicazioni che non fanno altro che eseguire calcoli per lunghi periodi, mantengono le contese presenti tra i processi attivi (e quindi, l'overhead del sistema operativo) ad un livello minimo, mentre gli stessi processi mantengono ogni CPU occupata.

Un'altra cosa da ricordare riguardante l'SMP, è che la prestazione di un sistema SMP tende a 'peggiorare' in modo più omogeneo con l'aumentare del carico di lavoro del sistema. Questa caratterisstica rende i sistemi SMP molto più diffusi negli ambienti server e multi-utente, in quanto i diversi processi possono avere un minor impatto sul carico generale del sistema su di una macchina a processori multipli.

Note

[1]

Questa situazione porta ad una situazione conosciuta come forklift upgrade, e cioè ad una sostituzione completa del computer.