# Simulatore GridSim

Il simulatore GridSim è uno software open source di simulazione del comportamento di una griglia, scritto in linguaggio Java, usato prettamente in ambito universitario. Questo strumento di simulazione è stato progettato e costruito principalmente per lo studio dell'efficienza di un algoritmo di scheduling.

## Classi di risorse

Il toolkit GridSim fornisce una struttura per la simulazione di diverse classi di risorse eterogenee, quali utenti, applicazioni, e la funzione di pianificazione denominata risorsa broker che esegue la scoperta delle risorse e la selezione e aggregazione di una serie diversificata di risorse distribuite per un singolo utente.

## Caratteristiche

Gli aspetti salienti della GridSim toolkit sono i seguenti:
* Permette la modellazione di tipologie eterogenee di risorse, nell'ambito di spazio-tempo o di modalità condivisa.
* La capacità delle risorse può essere definita sotto forma di MIPS (milioni di istruzioni al secondo) come SPEC (Standard Performance Evaluation Corporation) di riferimento.
* Le risorse possono essere ubicate in qualsiasi fuso orario e prenotate (prenotazione anticipata).
* Possono eseguirsi applicazioni in parallelo con diversi modelli di domanda e queste possono essere simulate.
* L'applicazione dei compiti può essere eterogenea ed è di CPU o di I / O intensivo.
* Non vi è alcun limite al numero di domande di lavoro che può essere sottoposta ad una risorsa.
* Entità di utenza multipla possono presentare compiti atti all'esecuzione contemporanea della stessa risorsa; questi possono essere condivisi nel tempo o nello spazio.
* Le velocità di rete tra le risorse possono essere specificate.
* È possibile sostenere la simulazione di pianificatori statici e dinamici.

## Architettura di sistema

L'architettura di questo software è stratificata e modulare, in modo da sfruttare tutte le tecnologie annesse ad essa e di gestirla come se fosse costituita da componenti separati.
Il primo livello si interessa della scalabilità con interfaccia Java Runtime e Java Virtual Machine, la cui applicazione è disponibile per il singolo e sistemi multiprocessore tra cui cluster.
Il secondo strato si interessa di costruire una base discrete-event infrastructure utilizzando le interfacce fornite dal primo strato. Una delle più popolari implementazioni discrete-event infrastructure disponibili in Java è SimJava.
Il terzo strato si occupa della modellazione e simulazione dell'entità di griglia come ad esempio le risorse, le informazioni, servizi, e così via.
Il quarto si occupa, infine, della creazione di organismi di livello superiore.
Il toolkit si concentra su quest'ultimo livello, che simula il sistema, utilizzando l'entità discrete-event service offerta dal più basso livello di infrastruttura. Il quarto livello è interessato, inoltre, alla simulazione di aggregatori di risorse chiamato Grid risorsa broker o pianificatore.

## Entità

La GridSim sostiene entità per la simulazione di un singolo processore e multiprocessore, mediante risorse eterogenee che possono essere configurate nel tempo o nello spazio condiviso, il quale consente di impostare l'orologio a diversi fusi orari con lo scopo di simulare la distribuzione geografica delle risorse, ed enti che simulano le reti utilizzate per la comunicazione fra le risorse. Durante la simulazione, GridSim crea una serie di entità multi-threaded, ciascuna delle quali corre in parallelo nel suo thread. La simulazione GridSim deve contenere entità per gli utenti, la funzione broker, le risorse, le informazioni di servizio e le statistiche di rete basate I / O.

### Enti Principali

* Utente: ogni istanza di entità-utente rappresenta una griglia utente. Ogni utente può essere diverso dal resto degli utenti per quanto riguarda le seguenti caratteristiche:
** tipi di lavoro creati
** tempo di esecuzione del lavoro
** numero di repliche parametriche
** pianificazione della strategia di ottimizzazione, minimizzazione dei costi, dei tempi, o di entrambi
** tasso di attività
** fuso orario
* Broker: ogni utente è collegato a dei broker di entità. Ogni lavoro relativo a ciascun utente è prima sottoposto al suo broker. L'intermediario ottiene dinamicamente un elenco di risorse disponibili dall'entità global directory. Ogni intermediario cerca di ottimizzare la sua politica in base all'utente che serve. Pertanto gli intermediari sono tenuti ad affrontare la concorrenza estrema per l'accesso alle risorse. Gli algoritmi utilizzati dal broker devono essere molto adattabili alla situazione di mercato della domanda e dell'offerta.
* Risorsa: ogni istanza di entità Resource Grid rappresenta una risorsa. Ogni risorsa può essere diversa dal resto delle risorse per quanto riguarda le seguenti caratteristiche:
** numero di processori
** costo del trattamento
** velocità di trasformazione
** politica di programmazione dei processi, e.g. tempo-spazio condiviso o condivisi
** fattore di carico locali
** fuso orario
La velocità e il tempo di esecuzione dei lavori possono essere definiti in termini di parametri di riferimento (ad esempio MIPS).

## La classe GridSim

La classe di GridSim contengono entità che si occupano dell'inizializzazione, la gestione, e il flusso di controllo:
* GridInformationService interno, che crea l'elenco contenente le risorse disponibili nella Griglia;
* GridSimShutdown, che si occupa della terminazione di una simulazione, chiudendo sistematicamente tutte le entità di GridSim aperte;
* GridStatistics, che offre servizi standard durante la simulazione per l'accumulo dati statistici.
La classe di GridSim sostiene metodi statici per inviare e ricevere comunicazioni o tra le entità direttamente o via entità di rete, maneggiando ed accedendo alle varie entità del GridSim.