Programmazione Hardware Software - Tutorial

bitPortal.it: Programmazione Hardware e Software



 Programmazione
Visual Basic.NET
Visual C++
LabView
C/C++ con Linux
Tcl/Tk
Bash
HTML
Javascript
Sicurezza

 Collegamenti    esterni
Centinaia di Giochi Gratis ai quali Giocare Online
 Giochi Gratis

Settore Finanza: Guida al Trading Online
 Guida Trading Online

Settore Finanza: Guida Prestiti e Finanziamenti
 Guida Prestiti e Finanziamenti

Tutorial e articoli su Php, Xml, AJjax,VoIP ..
 WebSpazio.it

Articoli riguardanti il tema del lavoro da casa
 lavorare da casa

Tutorial sul web hosting + Articoli riguardanti il tema dell' hosting di siti web
  Hosting Sito Web

Inviaresmsgratis.it si propone come bussola per tutti gli utenti che sono alla ricerca di siti internet per inviare sms gratis.
  SMS Gratis

Directory in cui segnalare il vostro sito gratis
    Directory

Guida alla zoologia e alle specie animali
    Zoologia




  Cluster di PC


Tutorial sui Cluster di PC








Introduzione ai Cluster di PC



Cos’è un cluster

Con il termine ”Cluster” si intende una particolare configurazione hardware e software avente per obiettivo quello di fornire all’utente un insieme di risorse computazionali estremamente potenti ed affidabili. Il cluster risponde all’esigenza di utenti ed amministratori di sistema di assemblare insieme più macchine per garantire prestazioni, capacità, disponibilità, scalabilità ad un buon rapporto prezzo/prestazioni.
Si può pertanto parlare propriamente di cluster quando un insieme di computer completi ed interconnessi ha le seguenti proprietà:
  • I vari computer appaiono all’utente come una singola risorsa computazionale;
  • Le varie componenti sono risorse dedicate al funzionamento dell’insieme.

Motivazioni

La scelta di adoperare un cluster per smaltire il calcolo computazionale è dettato da alcune esigenze:
  • un ambiente distribuito è scalabile, e può essere facilmente incrementato per venire incontro a nuove esigenze computazionali;
  • la richiesta di risorse computazionali può essere distribuita fra un insieme di macchine invece di essere confinata ad un singolo sistema, eliminando i cosiddetti ”colli di bottiglia” e fornendo, quindi, migliori prestazioni;
  • la disponibilità delle risorse e dei servizi viene fortemente incrementata.

Problematiche

Insieme ai vantaggi che si percepiscono con queste architetture, nascono anche una serie di svantaggi da tenere in considerazione:
  • l’amministrazione di decine o centinaia di sistemi è molto più onerosa di quella del singolo sistema;
  • la gestione della sicurezza cresce esponenzialmente all’aumentare degli host presenti nella rete;
  • la gestione di risorse condivise via rete, è più complessa rispetto a quella locale.

Tipologie di cluster

Si possono individuare quattro categorie di problemi in cui l'utilizzo di cluster può apportare sostanziali miglioramenti delle prestazioni e dei servizi:
  • alta disponibilità dei servizi;
  • affidabilità dei servizi;
  • bilanciamento del carico
  • calcolo parallelo

Cluster per l'alta disponibilità dei servizi

Tale soluzione prevede la predisposizione di un insieme di sistemi che devono mantenere copie separate dei servizi e che rispondano comunque ad un unico nome di host virtuale con il quale i client interrogano il singolo servizio;


Cluster per l’affidabilità dei servizi

Questa tipologia di cluster è costituita essenzialmente da due (o più) server gemelli dove meccanismi hardware e software permettono di far sì che se il nodo principale del cluster si blocca, il nodo secondario, fino a quel momento in attesa, si riconfiguri per apparire come il nodo principale del cluster, con un’immagine congrua al nodo originale immediatamente prima della sua indisponibilità.


Cluster per il bilanciamento del carico

L’idea è quella di introdurre un sotto-sistema di schedulazione delle richieste applicative, ad esempio un sistema di code, che sia in grado di reindirizzare la richiesta sul nodo più scarico, in grado di far fronte alla richiesta utente. I sotto-sistemi di questo tipo solitamente sono dotati di vari strumenti amministrativi che permettono un controllo molto fine sull’utilizzo delle risorse e che consentono un monitoraggio avanzato dello stato del cluster;


Cluster per il calcolo parallelo

Lo sviluppo di architetture cluster per il calcolo parallelo trova ampi spazi nel panorama delle soluzioni computazionali ad alte prestazioni grazie alla forte riduzione dei costi che questi sistemi hanno rispetto ai supercalcolatori. Si è sempre più affermata l’idea di assemblare grandi quantità di processori classe PC con una struttura di comunicazione a banda alta e bassa latenza, appositamente progettata. Per mantenere tali caratteristiche a volte viene utilizzato un protocollo di rete diverso dal TCP/IP (come Myrinet), che contiene troppo overhead rispetto alle limitate esigenze di indirizzamento, routing e controllo nell’ambito di una rete in cui i nodi siano ben noti a priori. In alcuni casi viene utilizzato un meccanismo di Direct Memory Access (DMA) fra i nodi, fornendo una sorta di distribuited shared memory che può essere acceduta direttamente da ogni processore su ogni nodo.
Inoltre, è previsto un livello di comunicazione a scambio di messaggi (message passing) per la sincronizzazione dei nodi, le cui implementazioni più diffuse sono rappresentate da MPI (Message Passing Interface), OpenMP (Open Message Passing) e PVM (Parallel Virtual Machine):
  • MPI: è una API (Application Program Interface) per gli sviluppatori di programmi paralleli che garantisce una piena astrazione dall’hardware correntemente utilizzato senza alcuna necessità di inserire nel codice del programma alcuna direttiva di effettiva distribuzione dei segmenti di codice fra i nodi del cluster garantendo, fra l’altro, una buona portabilità del codice prodotto;
  • PVM: permette ad un insieme di computer di essere visto come una singola macchina parallela; la Parallel Virtual Machine è composta da due entità principali: il processo PVM daemon su ogni processore e l’insieme delle routine che ne forniscono il controllo.

Sistemi cluster esistenti

Si possono già trovare in giro per la rete diversi sistemi che permettono il clustering di risorse computazionale, molti dei quali sono distribuiti con licenza gpl e sono open source. Tra quelli più noti potete trovare Mosix, OpenMosix e Beowulf.