lunedì dic 15, 2008

Un'ottima introduzione al progetto Crossbow

Per festeggiare l'integrazione nella build 105 di Nevada (il kernel di OpenSolaris), ecco un'ottima introduzione del collega Sunay Tripathi al progetto Crossobow, che aggiunge ad OpenSolaris una serie di funzionalità molto interessanti per la virtualizzazione della rete.

mercoledì mar 19, 2008

Janne (Java Artificial Neural Network Evolution)

Quando è stato rilasciato NetBeans 6.0 (e tra poco sarà disponibile la 6.1) ho cercato un argomento che mi interessasse per provarne le funzionalità e provare a sviluppare qualcosa.

Ne è venuto fuori Janne. Gli eseguibili sono disponibili qui. Ho creato un progetto su java.net e chiunque volesse è il ben venuto per partecipare. Il resto del post è in inglese ed include una breve descrizione del progetto.



Janne (Java Artificial Neural Network Evolution) is a platform for testing an evolutionary approach in optimizing a predator-pray model.

The GUI has three main components:

  • the world map (left)
  • the top genomi statistics (top-right)
  • the top genoma graphical representation (bottom-right).

Each entity has:

  • a position (x, y) in the world map
  • a direction (d) between 0 (north) and 7, growing clockwise by a 45 degree step
  • a genoma, identified by a "genome id"

Each genoma details the structure of a three-layer feed-forward neural network that acts as the "brain" of the entity. The size of the network is described by the M/S/H/A tuple, where:

  • M is the number of Memory Neurons
  • S is the number of Sensor Neurons
  • H is the number of Hidden Neurons
  • A is the number of Action Neurons

The first layer is the Input Layer and is composed by both the Memory and the Sensor Neurons. The second layer is the Hidden Layer and is composend by the Hidden Neurons. The third layers is the Output Layer and is composed by nothe the Memory (again) and the Action Neurons.

Memory Neurons act as "stateful" neurons that repeat as input what they get as output. They are identified by "M" plus an integer greater or equal to zero, e.g. "M0", "M1", etc.

Senson Neurons get informations from the area surrounding the entity and can be of different types:

  • "SL", look in the left direction (90 degree left)
  • "SFL", look in the front-left direction (45 degree left)
  • "SF", look in the front direction
  • "SFR", look in the front-right direction (45 degree right)
  • "SR", look in the right direction (90 degree right)
  • "SSL", look for a "similar" entity in the left direction
  • "SSFL", look for a "similar" entity in the front-left direction
  • "SSF", look for a "similar" entity in the front direction
  • "SSFR", look for a "similar" entity in the front-right direction
  • "SSR", look for a "similar" entity in the right direction

A "similar" entity has a genoma id equal to the genoma of the entity or to the "parent" genoma of the entity. The "parent" genoma is the genoma from with the other genoma was "born" by "mutation".

Action Neurons can be of different types:

  • "ATL", turn 45 degree left
  • "ATR", turn 45 degree right
  • "AMF", move forward (can eat)
  • "AMB", move backward (must be empty)
  • "AML", move left (must be empty)
  • "AMR", move right (must be empty)

lunedì mar 17, 2008

Virtualizzare la Rete con Solaris

Il progetto Crossbow della comunità OpenSolaris ha prodotto una interessante beta release in cui si possono testare le funzionalità di virtualizzazione della rete all'interno di un sistema Solaris.

Uilizzando Crossobow è possibile creare su una scheda di rete fisica (in inglese Network Interface Controller o NIC) dei "Virtual NIC" (VNIC). Ad un VNIC è possibile allocare risorse di banda o risorse computazionali. E' inoltre possibile creare delle entità logiche denominate "Ethernet Stubs" su cui è possibile attestare dei VNIC, in modo da poter creare un modello virtuale a partire da una qualsiasi rete, arbitrariamente complessa.

Ecco un esempio di cosa di può implementare associando dei VNIC a tre local zone di un sistema Solaris (una zona prende le funzionalità di "router"):

Le immagini per installare la beta sono disponibili qui. Questa release include anche l'interfaccia di gestione Web del progetto Virtual Networking Machine. Per creare una rete multi-livello virtuale come quella in figura, su cui testare la connettività, l'allocazione di banda e l'integrazione con altre funzionalità di Solaris (come, ad esempio, le zone ed il firewall opensource IP Filter per fare NAT) è possibile consultare questo documento. E' facile immaginare le potenzialità di Crossbow in sinergia con le nuove tecnologie di virtualizzazione basate sul lavoro del comunità OpenSolaris Xen.

I blog più recenti del team di progetto possono essere una ulteriore fonte di informazioni. 

mercoledì mar 05, 2008

Come scaricare Sun SPOT SDK e provare l'emulatore

Se siete interessati alle reti wireless o al solo progetto Sun SPOT, che ho descritto in precedenza qui e qui, potete scaricare la beta dell'ultimo SDK, che include un emulatore software, seguendo le istruzioni indicate in questo blog.

Per una panoramica delle nuove board open source per i device Sun SPOT potete vedere il blog di Roger Meike dei Sun Labs.

domenica ott 21, 2007

3 mesi di Utility Computing gratis su Network.com

...per un periodo limitato ci sono 3 mesi gratis (max 200 ore di CPU) su Network.com, maggiori informazioni qui.

giovedì set 13, 2007

Il progetto Sun SPOT

Il progetto Sun SPOT ( Small Programmable Object Technology) è il risultato delle ricerche in corso presso i Sun Labs, il laboratorio di ricerca di Sun. Nel 2003 i Sun Labs iniziarono a lavorare su reti di sensori senza filo (Wireless Sensor Networks). L'obiettivo del loro studio era di creare device più potenti e allo stesso tempo più facilmente programmabili. Partendo dall'esperienza già applicata a piccoli device (come i telefoni cellulari), l'idea fu quella di utilizzare Java come piattaforma di sviluppo (adattando la Java Virtual Machine del progetto Squawk) ed una architettura estendibile per i device.

Questi video chiariscono meglio gli ambiti ed i risultati del progetto:

Sun SPOT Overview

Sun SPOT Java

Sul sito del progetto è disponibile un Tutorial, altri video sono disponibili qui.

mercoledì apr 04, 2007

Open Architecture Network: una Architettura "aperta" e collaborativa

Sun partecipa all'iniziativa Architecture for Humanity ed in particolare al nuovo spazio collaborativo denominato Open Architecture Network. Questo spazio permette la condivisione tra designer, architetti ed ingenieri di idee e progetti che possono portare ad una architettura sostenibile che minimizzi gli impatti ambientali. La collaborazione può avvenire attraverso lo scambio di documenti, forum di discussione e strumenti di project management che permettono di seguire l'evoluzione dei concetti dall'idea iniziale fino all'implementazione finale, favorendone il riutilizzo. Ma l'accesso a questo spazio non è limitato ai soli professionisti: la collaborazione di organizzazioni governative, mondo del volontariato, partner tecnologici ed il mondo dell'istruzione a tutti i livelli sono ritenuti fondamentali per il successo dell'iniziativa.

L'obiettivo non è ovviamente quello di sostituire l'Architettura tradizionale, ma di creare una rete di conoscenza che sia accedibile in qualsiasi luogo del mondo, producendo idee pratiche che possano migliorare le condizioni di vita di tutti.

In sostanza si tratta di applicare il modello dell'opensource, nato nell'ambito dello sviluppo software, al mondo dell'Architettura, sperando di ottenere benefici simili in termini di innovazione, diffusione e partecipazione.


venerdì mar 31, 2006

La latenza del TCP/IP e l'algoritmo di Nagle

Le applicazioni che effettuano tante piccole chiamate sincrone via rete (di tipo request/reply) possono generare un traffico composto a sua volta da piccoli pacchetti. Le performance di tali applicazioni dipendono quindi più dalla latenza introdotta nel processare tali pacchetti che dal massimo throughput gestibile dall'architettura fisica utilizzata.

Nell'effettuare un tuning dello stack TCP/IP è importante in questi casi considerare le implicazioni dell'algoritmo di Nagle (dal nome di John Nagle, autore della RFC 896 dove tale algoritmo è definito).

L'utilizzo di piccoli pacchetti è solitamente ritenuto inefficiente dal punto di vista di chi ottimizza una rete. Ciò è particolarmente vero nei punti di raccordo del traffico IP (es. un Internet backbone) e l'algoritmo di Nagle cerca proprio di scoraggiarne l'uso quando il trasporto è TCP.

Gli stack TCP/IP solitamente implementano in modo parametrico la dimensione massima per cui un pacchetto è ritenuto "piccolo" ed è applicato questo algoritmo: ad esempio impostare tale parametro a 1 equivale a disabilitarne l'uso.

L'algoritmo di Nagle indica che lo stack di chi invia non deve trasmettere il prossimo piccolo pacchetto (come definito in precedenza) se è ancora in attesa di ricevere l'ACK di un piccolo pacchetto già inviato.

Di conseguenza chi invia deve accumulare i dati in spedizione fino a che sia soddisfatta una delle due seguenti condizioni:

  • la dimensione dei dati pronti per l'invio ha superato l'MTU
  • è stato ricevuto l'ACK per tutti i piccoli pacchetti in sospeso

Un effetto non gradito di questa ottimizzazione è che le applicazioni che inviano continuamente piccoli pacchetti possono osservare una latenza maggiore di quelle che utilizzano pacchetti con dimensione dell'ordine dell'MTU. In tali casi è possibile testare le performance disabilitando l'uso dell'algoritmo (nelle modalità offerta dalle singole piattaforme) e confrontare i risultati ottenuti con la configurazione precedente per verificare se si ricade in una delle casistiche in cui l'algoritmo peggiori le performance complessive.


About

Un diario digitale sui miei interessi: Internet, Solaris, Java, Fotografia, ecc.

Search

Archives
« aprile 2014
lunmarmergiovensabdom
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today