Vedremo all’opera un’architettura basata su un cluster Raspberry Pi, con tutti gli hack necessari per poter utilizzare e ottimizzare applicazioni preesistenti basate su JAVA e PHP.
Verranno illustrati tutti quei piccoli accorgimenti che ci permettono di sfruttare al meglio le risorse limitate di questa architettura, in modo da capire cosa è possibile fare e cosa non è consigliabile fare.
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...Matteo Baccan
Per Linux Day 2014 a Novara abbiamo discusso di come costruire una semplice stazione meteo con raspberry Pi e componenti opensource. Queste sono le slide del mio intervento, che parlava della parte software scritta per leggere e visualizzare i sensori connessi a Raspberry Pi
Matteo baccan raspberry pi - linox 2014Matteo Baccan
Introduzione a Raspberry Pi
Cos’è? A chi è rivolto? Cosa ci posso fare? Cosa ci collego? Mi serve? A queste, e ad altre domande, proveremo a dare una risposta
Matteo baccan raspberry pi - linox 2015 - corso parte 2Matteo Baccan
Seconda puntata del corso Raspberry Pi tenuto per il Linox di Novara. Piccoli accorgimenti per ottimizzare il vostro raspberry, installazione LAMP server e realizzazione di una macchina virtuale
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...Matteo Baccan
Per Linux Day 2014 a Novara abbiamo discusso di come costruire una semplice stazione meteo con raspberry Pi e componenti opensource. Queste sono le slide del mio intervento, che parlava della parte software scritta per leggere e visualizzare i sensori connessi a Raspberry Pi
Matteo baccan raspberry pi - linox 2014Matteo Baccan
Introduzione a Raspberry Pi
Cos’è? A chi è rivolto? Cosa ci posso fare? Cosa ci collego? Mi serve? A queste, e ad altre domande, proveremo a dare una risposta
Matteo baccan raspberry pi - linox 2015 - corso parte 2Matteo Baccan
Seconda puntata del corso Raspberry Pi tenuto per il Linox di Novara. Piccoli accorgimenti per ottimizzare il vostro raspberry, installazione LAMP server e realizzazione di una macchina virtuale
CodingGym - Lezione 3 - Corso Linux, Android e Internet of ThingsMirko Mancin
Corso frontale di 20 ore indirizzato a docenti di scuole superiori nel settore ICT. Il corso vuole essere una palestra (per questo CodingGym) di rafforzamento delle basi già esistenti e di supporto per corsi futuri. Queste slide sono rilasciate con la licenza Creative Commons e quindi potete scaricarle ed utilizzarle a vostro piacere. Ricordate però di CITARMI! :D
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsMirko Mancin
Corso frontale di 20 ore indirizzato a docenti di scuole superiori nel settore ICT. Il corso vuole essere una palestra (per questo CodingGym) di rafforzamento delle basi già esistenti e di supporto per corsi futuri. Queste slide sono rilasciate con la licenza Creative Commons e quindi potete scaricarle ed utilizzarle a vostro piacere. Ricordate però di CITARMI! :D
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsMirko Mancin
Corso frontale di 20 ore indirizzato a docenti di scuole superiori nel settore ICT. Il corso vuole essere una palestra (per questo CodingGym) di rafforzamento delle basi già esistenti e di supporto per corsi futuri. Queste slide sono rilasciate con la licenza Creative Commons e quindi potete scaricarle ed utilizzarle a vostro piacere. Ricordate però di CITARMI! :D
Linux Capabilities: Un miglior root di SUID root.
Traduzione in lingua italiana delle diapositive presentate alla conferenza organizzata dalla Linux Foundation LinuxCon2014, Düsseldorf, 15 ottobre 2014.
Il TechAdvisor Babel Roberto Polli ci propone questo mese un esercizio rivolto a sistemisti e sviluppatori junior: la trasformazione di un comune modem/router ADSL in una postazione multimediale.
Il processo è realizzato grazie a MiniDLNA, un media server open source per musica e video, che impariamo a compilare dopo aver precedentemente configurato un cross-compiler sul PC.
Se siete interessati a questo approfondimento sul modo in cui Linux gestisce i processi su un device minimale, vi invitiamo a scaricare l’articolo completo.
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
Introduzione a BeRTOS, sistema operativo embedded open source. Il sistema è gratuito anche per progetti embedded commerciali grazie alla sua speciale licenza.
Il talk prevede una breve introduzione alla piattaforma Maemo ed ai Nokia Internet Tablet, sia dal punto di vista dell'utente comune, sia da quello dello sviluppatore.
Verrà poi spiegato come configurare ed installare l'ambiente Scratchbox, il principale ambiente utilizzato per sviluppare applicazioni per Maemo.
Infine verranno presentati due plugin per Eclipse: ESbox e PluThon. Il primo si interfaccia con Eclipse e Scratchbox, permettendo di sviluppare sia applicazione C/C++ che Python e di testarle all'interno dell'ambiente Scratchbox. Il secondo è un plugin specifico per Python e permette di eseguire e debuggare le applicazioni direttamente sul dispositivo.
Un piccolo vademecum su un insieme di programmi open source utili a migliorare l'infrastruttura informatica di scuole, comuni, ospedali, cliniche e piccole e medie imprese
CodingGym - Lezione 3 - Corso Linux, Android e Internet of ThingsMirko Mancin
Corso frontale di 20 ore indirizzato a docenti di scuole superiori nel settore ICT. Il corso vuole essere una palestra (per questo CodingGym) di rafforzamento delle basi già esistenti e di supporto per corsi futuri. Queste slide sono rilasciate con la licenza Creative Commons e quindi potete scaricarle ed utilizzarle a vostro piacere. Ricordate però di CITARMI! :D
CodingGym - Lezione 2 - Corso Linux, Android e Internet of ThingsMirko Mancin
Corso frontale di 20 ore indirizzato a docenti di scuole superiori nel settore ICT. Il corso vuole essere una palestra (per questo CodingGym) di rafforzamento delle basi già esistenti e di supporto per corsi futuri. Queste slide sono rilasciate con la licenza Creative Commons e quindi potete scaricarle ed utilizzarle a vostro piacere. Ricordate però di CITARMI! :D
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsMirko Mancin
Corso frontale di 20 ore indirizzato a docenti di scuole superiori nel settore ICT. Il corso vuole essere una palestra (per questo CodingGym) di rafforzamento delle basi già esistenti e di supporto per corsi futuri. Queste slide sono rilasciate con la licenza Creative Commons e quindi potete scaricarle ed utilizzarle a vostro piacere. Ricordate però di CITARMI! :D
Linux Capabilities: Un miglior root di SUID root.
Traduzione in lingua italiana delle diapositive presentate alla conferenza organizzata dalla Linux Foundation LinuxCon2014, Düsseldorf, 15 ottobre 2014.
Il TechAdvisor Babel Roberto Polli ci propone questo mese un esercizio rivolto a sistemisti e sviluppatori junior: la trasformazione di un comune modem/router ADSL in una postazione multimediale.
Il processo è realizzato grazie a MiniDLNA, un media server open source per musica e video, che impariamo a compilare dopo aver precedentemente configurato un cross-compiler sul PC.
Se siete interessati a questo approfondimento sul modo in cui Linux gestisce i processi su un device minimale, vi invitiamo a scaricare l’articolo completo.
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
Master: Amministratore Linux - Livello Avanzato
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
Introduzione a BeRTOS, sistema operativo embedded open source. Il sistema è gratuito anche per progetti embedded commerciali grazie alla sua speciale licenza.
Il talk prevede una breve introduzione alla piattaforma Maemo ed ai Nokia Internet Tablet, sia dal punto di vista dell'utente comune, sia da quello dello sviluppatore.
Verrà poi spiegato come configurare ed installare l'ambiente Scratchbox, il principale ambiente utilizzato per sviluppare applicazioni per Maemo.
Infine verranno presentati due plugin per Eclipse: ESbox e PluThon. Il primo si interfaccia con Eclipse e Scratchbox, permettendo di sviluppare sia applicazione C/C++ che Python e di testarle all'interno dell'ambiente Scratchbox. Il secondo è un plugin specifico per Python e permette di eseguire e debuggare le applicazioni direttamente sul dispositivo.
Un piccolo vademecum su un insieme di programmi open source utili a migliorare l'infrastruttura informatica di scuole, comuni, ospedali, cliniche e piccole e medie imprese
Intervento al Linux Day 2010@Pisa, organizzato da parte del GULP. L'intervento ha l'obiettivo di presentare il sistema Ubuntu mostrandone gli aspetti principali
Introduzione a ubuntu - Linux Day 2010Nicola Corti
Intervento al Linux Day 2010@Pisa, organizzato da parte del GULP. L'intervento presenta il sistema ubuntu in tutte le sue parti mostrandone pregi e difetti.
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Gabriele Guizzardi
Slide delle 8h di workshop su Raspberry Pi presso Warehouse Coworking Pesaro, 13/12/2014
Slides of 8h workshop about Raspberry Pi at Warehouse Coworking Pesaro, 13/12/2014
Seminario del GULP (Gruppo Utenti Linux Pisa) che introduce alla programmazione in C, mostrando gli strumenti di sviluppo e i principali costrutti del linguaggio.
Design thinking: Redesign the school-to-work transitionDaniele Iori
This is a journey into the Design Thinking Process, through a design challenge proposed by Leticia Britos Cavagnaro for the Design Thinking Action Lab, Stanford University.
July 17 - Aug 20 2013
Quali strumenti utilizzare per migliorare il workflow di uno sviluppatore? Oggi strumenti come git, docker, gitlab e kubernetes ci aiutano a gestire meglio il nostro tempo permettendoci di focalizzarci di piu' sul codice che sulla customizzazione dell'ambiente.
Sempre più di frequente sentiamo parlare di nuove librerie, framework o linguaggi. Tutte queste nuove tecnologie promettono miracoli ma il nostro tempo è una risorsa finita e non abbiamo il lusso di poter approfondire ogni novità.
Le PWA si basano su tecnologie che già usiamo tutti i giorni nello sviluppo WEB quindi, senza farci intimidire, possiamo approcciare qualcosa che effettivamente rivoluzioni il nostro lavoro e che possa farlo con il minimo sforzo da parte nostra.
Emiliano Vavassori e Paolo Asperti, soci del BgLUG, presentano il progetto Linux va a scuola che il BgLUG sta portanto avanti dal 2015 per portare Linux ed il software libero nelle scuole. Diversamente dalle preceneti slides, queste espongono il progetto da un punto di vista puramente tecnico. Sono stati spiegati i requisiti tecnici e descritte le tecnologie e le logiche implementative utilizzate per fornire la soluzione descritta al mattino. Tra questi, Ansible, PXE Boot, Edubuntu, Epoptes, Git e ovviamente la distribuzione server NethServer Linux della quale ci siamo innamorati per efficienza e semplicità di utilizzo.
L'installazione e la prima configurazione di un elevato numero di server è un'operazione lunga e ripetitiva. Il TechAdvisor Roberto Polli mostra come semplificarla utilizzando Cobbler, un'installation server open source. La tecnologia descritta da Roberto sfrutta il boot via rete (PXE-boot) e i kickstart di Red Hat, i file che contengono i parametri per l'installazione e la prima configurazione del sistema.
Oltre a Cobbler, l’articolo illustra alcuni concetti di base relativi alla procedura di boot di un sistema Linux-based e al funzionamento di un server DHCP.
Per saperne di più su questo argomento vi invitiamo a scaricare l’articolo completo. Potete inviarci le vostre domande utilizzando il form "Serve aiuto?" del nostro Centro Risorse http://www.babel.it/it/centro-risorse.html
Una guida passo-passo per installare un laboratorio multimediale/di sviluppo didattico scolastico linux e windows (dual boot) nel minor tempo possibile e con le stesse funzionalità. Aggiornata con Italc2 e Ubuntu 12.04 LTS
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Antonio Musarra
Vedremo come installare step-by-step TIBCO Jasper Reports Server 7.5 Community Edition su RedHat JBoss EAP 7.2, utilizzando CentOS 8.1 come sistema operativo e PostgreSQL come database server.
In questo tutorial vedremo come affrontare l'installazione di Jasper Reports Server senza l'ausilio dell'installer; questa è l'opzione solitamente adottata in ambiti enterprise.
I punti salienti di questo tutorial sono:
1. Quali sono i requisiti software
2. Quali sono i requisiti hardware
3. Download del software
4. Layout d’installazione
5. Installazione di OpenJDK 11
6. Installazione di PostgreSQL 10
7. Installazione di JBoss EAP 7.2.0
8. Configurazione & Installazione di Jasper Reports Server
9. Configurazione di JBoss EAP 7.2.0
10. Start di Jasper Reports Server
[LDNA2018] - JACK Audio Connection Kit: la tua Patchbay virtuale!Marcello Marino
A brief overview, via shell installation and via GUI configuration for Jack Audio Connection Kit on GNU/Linux Ubuntu Qjacktl, presented by myself at Linux Day 2018. If you are searching for a virtual patchbay, JACK will makes you happy!
Una semplice guida che spiega come installare e utilizzare il software open-source Cacti per la gestione della rete.
A simple guide on how to install and use the software open-source Cacti for network management.
Codemotion 2012 : Sphinx: Open Source Search ServerMatteo Baccan
Codemotion 2012 : Sphinx: Open Source Search Server
Sporchiamoci le mani con un'alternativa a Lucene e MySQL. Un prodotto OpenSource, portabile, veloce, attento alle prestazioni e ai consumi di spazio e memoria. Vedremo come distribuire il carico, come effettuare hotswap di indici, come usare lo stesso JDBC per accedere a MySQL e Sphinx, come gestire indici dinamici e statici. Utilizzeremo query, subquery, strategia di ricerca diverse. Studieremo le migliori tecniche per indicizzare milioni di documenti, il tutto tramite PHP e JAVA su casi reali
Twitter è la più grossa piattaforma di microblogging del mondo
Vedremo come è possibile programmarla in Java e PHP
Se non sapete cosa vuol dire OAuth, REST API, Search API e Streaming API, se CURL vi
sembra il nome di un partito politico, se la pigrizia governa la vostra vita e non vi
muovete senza un SDK dedicato ad ogni piattaforma che programmate, allora siete nel
posto giusto.
Codemotion 2011
50 minuti per svelare la tigre, il cavallo e sapere che esiste il delfino.
La nuova versione di Java implementa caratteristiche che da tempo erano attese
nello standard del linguaggio: Metadata, Generic Types, AutoBoxing e
Unboxing dei tipi primitivi, Static import, gestione dinamica dei Loop e delle
Enumeration.
Per Java 6: gestione di SystemTray e motori di scripting.
Vediamo di cosa si tratta e di come poter utilizzare queste nuove feature all'interno dei nostri programmi
Javaday Facebook Java Framework
Facebook è il maggior social network mondiale
Vedremo come è possibile creare delle applicazioni per Facebook
Vedremo cosa significa FBML, FQL, REST Server, FBJS, FQLJDBC
Vedremo soprattutto come e quanto Java può essere usato in questo
ambito
Da 0 a 100 in 35 minuti, allacciate le cinture ;)
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
1. Matteo Baccan
Succo di lampone: come ottimizzare JAVA e PHP
su un’architettura Raspberry Pi Cluster
matteo@baccan.it
2. Chi sono?
Matteo Baccan
JUG Novara, PUG Novara
Matteo Baccan
Divulgatore informatico, giornalista per
riviste tecniche nazionali oltre 700 articoli
per :Dev, Login, Computer Programming,
Mokabyte. Relatore tecnico ad eventi di
programmazione: Borland Forum 2000,
Webbit 2004, JIP day 2005, Javaday
(2006,2007,2010) PHPDay (2008, 2010),
CONFSL 2010, WebTech 2010,
Codemotin (2011,2012,2013). Autore di
Corso di C# ISBN 8881500167. Autore di
JobCrawler e HTML2POP3 (Oltre
900.000 download su SourceForge)
4. Programma
Matteo Baccan
JUG Novara, PUG Novara
Cosa vedremo
Cos’è Raspberry Pi
● Cosa ci possiamo fare
● Alcune ottimizzazioni del sistema di base
● PHP su Raspberry Pi
● Java su Raspberry Pi
● Alternative per lo sviluppo
● Emulazione
●
5. Cos’è Raspberry Pi
Matteo Baccan
JUG Novara, PUG Novara
Tratto da : http://it.wikipedia.org/wiki/Raspberry_Pi
Il Raspberry Pi è un single-board computer (SBC) sviluppato nel Regno Unito dalla
Raspberry Pi Foundation.
Il suo lancio al pubblico è avvenuto alla fine del mese di febbraio 2012.
L'idea di base è la realizzazione di un dispositivo economico, concepito per stimolare
l'insegnamento di base dell'informatica e della programmazione nelle scuole
Il progetto ruota attorno a un System-on-a-chip (SoC) Broadcom BCM2835,
che incorpora un processore ARM1176JZF-S a 700 MHz, una GPU VideoCore IV,
e 256 o 512 Megabyte di memoria.
Il progetto non prevede né hard disk né una unità a stato solido, affidandosi invece a
una
scheda SD per il boot e per la memoria non volatile.
La scheda è stata progettata per ospitare sistemi operativi basati su un kernel Linux
o RISC OS.
6. Cosa ci possiamo fare
Matteo Baccan
per chi non l'avesse mai visto
JUG Novara, PUG Novara
7. Cosa installare
Matteo Baccan
JUG Novara, PUG Novara
Il punto di partenza è sicuramente NOOBS (attualmente v 1.3.2)
http://www.raspberrypi.org/downloads
8. Cosa installare
Matteo Baccan
JUG Novara, PUG Novara
All’interno di NOOBS (New Out Of Box Software) è possibile trovare una serie di
sistemi operativi installabili
Raspbian : Il porting di Debian 7 “Wheezy”, ottimizzato per Raspberry Pi
(consigliata)
Pidora: Pidora is a Fedora Remix optimized for the Raspberry Pi
Arch: An Arch Linux port for ARM devices
OpenELEC: is a fast and userfriendly XBMC Mediacenter distribution.
RaspBMC: An XBMC media center distribution for Raspberry Pi
RISC OS: is a very fast and compact system
9. Raspbian
Matteo Baccan
JUG Novara, PUG Novara
Oggi parleremo di Raspbian
È una distribuzione pensata per essere “general purpose”, con un
utilizzo client
Non esiste una versione server ufficiale di Raspbian
Vediamo insieme come costruirla.
Iniziamo a spremere il nostro lampone
10. Raspbian Server Edition
Matteo Baccan
JUG Novara, PUG Novara
Per fortuna qualcuno si è posto il problema di non avere una
distribuzione ottimizzata per una configurazione server e ha realizzato
Raspbian Server Edition 2.5
http://sirlagz.net/2013/07/19/raspbian-server-edition-2-5/
In realtà è una Raspbian basata su Debian 7 Wheezy portata a Debian 8
Jessie, con la rimozione di una serie di pacchetti “inutili” a livello
server.
Parte dal concetto che: un “purista” considera peccaminoso l’utilizzo
di una GUI su un server, viene quindi rimosso LXDE e tutti i relativi
pacchetti, più una serie di pacchetti non necessari su un server
11. Raspbian Server Edition
Matteo Baccan
JUG Novara, PUG Novara
Non dobbiamo però essere ottimisti: la sola rimozione dei pacchetti
inutili non basta a realizzare una versione server di Raspberry Pi.
Vediamo quali altre tecniche ci permettono di migliorare i 2 aspetti
che possono cambiare notevolmente le prestazioni di un Raspberry Pi
velocità
memoria
12. Velocità: Overclock guidato
Matteo Baccan
JUG Novara, PUG Novara
Chi non ha mai provato ad “overcloccare” il proprio computer?
Con Raspberry Pi l’overclock è ammesso e di sistema.
Tramite l’utility di configurazione
: sudo raspi-config
13. Velocità: Overclock manuale
Matteo Baccan
JUG Novara, PUG Novara
Per chi volesse provare manualmente, basta modificare direttamente il file
sudo nano /boot/config.txt
Sul forum Raspberry Pi sono indicate altre configurazioni possibili, che possono
farci arrivare alla frequenza di 1150MHz.
Per info http://elinux.org/RPiconfig
arm_freq
800
900
900
930
1000
gpu_freq
275
350
Manualmente
1050
1150
core_freq
450
500
500
sdram_freq
over_voltage
500
450
500
500
6
600
6
8
14. Velocità: Overclock manuale
Matteo Baccan
JUG Novara, PUG Novara
Ci sono comunque anche voci di overclock a 1200 MHz e per chi volesse provare,
sono disponibili sul mercato dissipatori a 7 euro, in grado di diminuire di qualche
grado la temperatura del processore.
Oppure se avete ancora in cantina dei vecchi PC .. staccategli la ventolina, costerà
ancora meno :)
15. Memoria: Condivisione memoria CPU/GPU
Matteo Baccan
JUG Novara, PUG Novara
Cambio allocazione della memoria CPU/GPU
Di default Raspberry Pi parte con 64MB di ram per la GPU. Installando un sistema
server possiamo diminuire questa memoria a 16MB
Possiamo modifiare
/boot/config.txt
gpu_mem=16
o usare raspi-config
16. Memoria: Sessioni terminale inutili
Matteo Baccan
JUG Novara, PUG Novara
Ottimizzazione servizi esistenti
sudo nano /etc/inittab
Al netto delle rimozioni fatte su Raspbian, possiamo ancora ottimizzare
diminuendo i processi per le connessioni terminale, passando dalle 6
(default) a 2 .
1:2345:respawn:/sbin/getty --noclear 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
17. Consuntivo PRE/POST ottimizzazioni
Matteo Baccan
JUG Novara, PUG Novara
Aumento velocità di elaborazione passando da 700 a 1000 MHz = 50%
Aumento di memoria = 60%
pi@piserver ~ $ free
total
used
free
shared
buffers
cached
497504
58816
438688
0
15588
26976
-/+ buffers/cache:
16252
481252
0
102396
total
used
free
shared
buffers
cached
448736
175880
272856
0
18368
137004
-/+ buffers/cache:
20508
428228
0
102396
Mem:
Swap:
102396
pi@pinodo2 ~ $ free
Mem:
Swap:
102396
18. Per chi vuole osare
Matteo Baccan
JUG Novara, PUG Novara
Possiamo spremere ancora di più Raspberry Pi
●
staccando alcuni degli ultimi servizi attivi (p.e. rsyslog)
●
passando ad 1 sessione terminale
●
●
aumentando l’overclock e trovando un modo affidabile per
raffreddare il processore (in passato ho utilizzato un ventilatore)
acquistare delle SD più performanti (classe 10)
Ricordiamoci che l’overclock esagerato potrebbe rendere le SD utilizzate
dal sistema operativo inutilizzabili.
Se questo non vi spaventa e avete già bruciato qualche processore (so
che per qualcuno che legge queste slide non sarebbe la prima volta)
allora potete osare.
Fino alla configurazione indicata, funziona tutto, oltre, basta provare :)
20. Stack LAMP
Matteo Baccan
JUG Novara, PUG Novara
Installazione stack LAMP
Ora che abbiamo ottimizzato Raspberry Pi, possiamo passare allo stack
LAMP
Di default, lo stack LAMP non è installato su Raspbian.
Essendo un sistema Linux, l’installazione dello stack LAMP è identica a
quella che si farebbe su un qualsiasi server Debian non Raspberry Pi
21. Stack LAMP
Matteo Baccan
JUG Novara, PUG Novara
Installiamo lo stack LAMP
sudo apt-get install apache2 php5 mysql-server
libapache2-mod-php5 php5-mysql php5-fpm
mysql-client phpmyadmin
Linux
Apache
MySQL
PHP
Wheezy
2.2.22
5.5.31
5.4.4
Jessie
2.4.6
5.5.33
5.5.5 (bi-zona)
Nessuno ci vieta di installare versioni diverse
22. Alternative ad Apache
Matteo Baccan
sudo apt-get install nginx
JUG Novara, PUG Novara
NGINX
MONKEY
sudo nano /etc/apt/sources.list
deb http://packages.monkey-project.com/primates_pi primates_pi main
apt-get update
sudo apt-get install monkey
monkey-liana
monkey-logger
monkey-dirlisting
monkey-cgi
monkey-fastcgi
monkey-mandril
monkey-cheetah
Monkey-auth
LIGHTTPD
sudo apt-get install lighttpd
23. Stress test e Bilanciatore
Matteo Baccan
JUG Novara, PUG Novara
Per valutare le prestazioni del sistema sono necessari 2 tool
●
Programma di Stress Test. Nel mio caso ho installato e compilato siege3.0.5 su Cygwin (lo so sono un programmatore Windows)
wget http://www.joedog.org/pub/siege/siege-3.0.5.tar.gz
●
Un bilanciatore di carico, in questo caso l’ho utilizzato direttamente sul
nodo Master del cluster di test
wget http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev19.tar.gz
make TARGET=linux2628 USE_ZLIB=1
Ho scelto di non utilizzare haproxy 1.4 presente in Raspbian Pi, dato che
non è presente una importante feature : la compressione GZIP
24. Ambiente di test
Matteo Baccan
JUG Novara, PUG Novara
Per i test ho optato per 2 file diversi, in modo da verificare le
ottimizzazioni possibili in caso di risorse testuali (html, css, js, etc)
●
●
<?php phpinfo() ?>
Il sorgente html di phpinfo
Ho volutamente evitato di parlare di risorse non testuali già
compresse (immagini, filmati) in quanto occorrerebbe una trattazione
apposita, e la realizzazione di un server specializzato nel delivery di
risorse statiche (la classica installazione CDN)
I test sono stati fatti tutti mettendo in concorrenza 5 processi sullo
stesso server, dato che stiamo pensando ad un ambiente web di test o
dedicato a piccole aziende, dove non vengono superati i 5000 unique
user al giorno
25. Ambiente di test
Matteo Baccan
JUG Novara, PUG Novara
Nodo server: haproxy
LAMP a default
LAMP modificato
28. Apache Test
Matteo Baccan
JUG Novara, PUG Novara
Usando Haproxy su un nodo master, ho provato a trasferire sul master la
compressione del dato e scaricare il nodo dal consumo di CPU
Dati di partenza
Date & Time, Trans, Elap Time, Data Trans, Resp Time,
**** pinodo2 php gzip ****
2013-11-26 01:23:18,
765,
59.12,
6,
0.38
**** pinodo1 php ****
2013-11-26 01:21:30,
1809,
59.64,
91,
0.16
59.94,
87,
0.17
Overhead di haproxy
**** hapiserver php nodo1 ****
2013-11-26 01:39:35,
1736,
Compressione lato server: prestazioni doppie rispetto al singolo nodo
**** hapiserver php nodo1 gzip ****
2013-11-26 02:25:39,
1538,
59.44,
15,
0.19
29. Apache Test
Matteo Baccan
JUG Novara, PUG Novara
Al posto che usare un output generato da PHP, proviamo ora ad usare
direttamente una pagina HTML con lo stesso testo, per capire l’overhead
generato da PHP
Pagina di partenza
**** pinodo1 php ****
2013-11-27 02:54:02,
1757,
59.95,
88,
0.17
**** pinodo1 htm ****
2013-11-27 02:49:27,
5446,
59.52,
279,
0.05
**** haserver php nodo1 gzip ****
2013-11-27 02:46:21,
1479,
59.90,
15,
0.20
**** haserver htm nodo1 gzip ****
2013-11-27 02:47:51,
2808,
59.86,
29,
0.11
**** haserver php 2 nodi ****
2013-11-27 03:13:07,
2580,
26,
0.12
Pagina html
Pagina php nodo1 compressa lato server
Pagina html nodo1 compressa lato server
Pagina php con 2 nodi, compressi lato server: prestazioni 3 volte il singolo nodo
59.47,
30. Nginx Test
Matteo Baccan
JUG Novara, PUG Novara
Nginx ha dato dei risultati diversi rispetto ad Apache. Per esempio, la perdita di
prestazioni all’atto di una compressione GZIP è assente, anzi si ha un guadagno
lato PHP.
Vengono invece degradate, come ci si aspetterebbe, le prestazioni di HTML
puro.
Oltre a questo viene utilizzata l’interfaccia PHP5-FPM (FastCGI Process
Manager) per interfacciarsi a PHP
**** nodo2
2013-11-29
**** nodo2
2013-11-29
php nginx nogzip ****
02:27:02,
922,
php nginx gzip ****
02:37:33,
1307,
**** nodo2
2013-11-29
**** nodo2
2013-11-29
htm nginx nogzip ****
02:29:31,
4660,
htm nginx gzip ****
02:38:46,
2970,
59.52,
64,
0.32
59.53,
23,
0.23
59.95,
326,
0.06
59.44,
54,
0.10
31. Monkey test
Matteo Baccan
JUG Novara, PUG Novara
Monkey non dispone di una compressione GZIP, quindi i dati che restituisce
sono sempre quelli presenti su disco.
I risultati sono similari a Apache
**** piserver php monkey ****
2013-11-29 03:35:13,
1502,
59.20,
104,
0.20
**** piserver htm monkey ****
2013-11-29 03:36:41,
4456,
59.10,
332,
0.07
Da notare che sul sito
http://www.monkey-project.com/benchmarks/raspberry_pi_monkey_nginx
Vengono presentati dei benchmark che fanno pensare che Monkey sia più
efficiente rispetto a Nginx, ma il test dura 10 secondi, e il file utilizzato per i test
è un file jpg, dove la compressione è chiaramente inutile, oltre al fatto che un
file di questo tipo dovrebbe risiedere su una CDN e non su un server Monkey
siege -b -t10S -c200 http://localhost:PORT/linux.jpg
32. Lighttpd test
Matteo Baccan
JUG Novara, PUG Novara
Lighttpd risponde in modo ancora diverso, non comprimendo i file PHP, ma
solamente i file HTML statici.
In questo caso l’aumento prestazionale è molto importante, dovuto anche alla
strategia di compressione di Lighttpd, che verifica lo stato di aggiornamento dei
file statici e se risultano non aggiornati, restituisce una versione “pre”
compressa presente all’interno di una percorso di cache.
**** nodo2 php lighttpd ****
2013-11-29 03:20:10,
1505,
59.13,
104,
0.20
**** nodo2 htm lighttpd ****
2013-11-29 03:21:29, 17575,
59.93,
157,
0.02
33. Slide's title
Matteo Baccan
JUG Novara, PUG Novara
Cosa abbiamo capito
●
●
●
●
Valutare prestazionalmente PHP su Raspberry può dare risultati molto
diversi, in base al tipo di test che andremo a fare
Alcuni server web sono privi di alcune funzionalità di base (gzip) che prò
possono essere integrate all’interno del bilanciatore
Ottimizzando nel modo corretto, possiamo sfruttare parte della potenza del
processore del bilanciatore, aumentando le prestazioni del nostro HW
Per il tipo di server che andremo ad installare, non c’è una grande differenza
di prestazioni da una soluzione all’altra
35. Java su Raspberry Pi
Matteo Baccan
JUG Novara, PUG Novara
Prima del rilascio da parte di Oracle di un JDK specifico per Raspberry Pi,
veniva utilizato OpenJDK
java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.6) (6b27-1.12.6-1~deb7u1+rpi1)
OpenJDK Zero VM (build 20.0-b12, mixed mode)
Da settembre 2013 possiamo installare un “vero” JDK
sudo apt-get install oracle-java7-jdk
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Client VM (build 24.0-b56, mixed mode)
36. Java su Raspberry Pi
Matteo Baccan
JUG Novara, PUG Novara
Dal sito Oracle è però possibile scaricare ed utilizzare anche un JDK 1.8
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b101)
Java HotSpot(TM) Client VM (build 25.0-b43, mixed mode)
NB
Non credo siano in molti a farlo, quando l’ho fatto io sono stato contattato
direttamente dal supporto Oracle ...
37. Tomcat
Matteo Baccan
JUG Novara, PUG Novara
Il primo test è stato quello di utilizzare un “evergreen” di Java: Tomcat
versione 7 e 8.
Nonostante la lentezza, il sistema parte in un tempo che oscilla fra i 22
e i 26 secondi
Una volta installato, dopo la prima compilazione, il sistema risponde
senza grossi problemi
38. JBOSS
Matteo Baccan
JUG Novara, PUG Novara
Il secondo test è stato quello di utilizzare JBOSS
In questo caso è stato necessario modificare delle configurazioni per
poterlo utilizzare dato che la memoria richiesta di default è troppo alta
Occorre quindi modificare i parametri
-Xms64m -Xmx512m
portandoli a valori più coerenti per Raspberry Pi
-Xms64m -Xmx128m
Il sistema parte in circa 150 secondi
39. Prestazioni
Matteo Baccan
JUG Novara, PUG Novara
Vediamo ora le prestazioni su uno stress test di 1 minuto
Con OpenJDK
**** piserver jdk6 tc 7 ****
2013-11-29 04:13:40,
31,
59.03,
0,
8.82
59.09,
25,
0.12
59.11,
26,
0.12
Con JDK 7
**** piserver jdk8 tc 8 ****
2013-11-29 04:12:18,
2362,
Con JDK8
**** piserver jdk7 tc 8 ****
2013-11-29 04:17:11,
2507,
40. Conclusioni
Matteo Baccan
JUG Novara, PUG Novara
Una volta partito, utilizzando un JDK 7 o 8, il sistema funziona.
Per poterlo utilizzare al meglio è però necessario procedere
all’ottimizzazione della RAM utilizzata e possibilmente disaccoppiare il
database, in modo da eseguirlo su un’altra macchina o un altro Raspberry
Pi, dato che il quantitativo di RAM disponibile è veramente limitato
41. Vincitori e vinti
Matteo Baccan
JUG Novara, PUG Novara
JAVA
Sicuramente Java non è il linguaggio migliore da utilizzare all’interno di un
Raspberry Pi, ma grazie agli ultimi rilasci, ora è un linguaggio utilizzabile con
prestazioni accettabili.
Fino a OpenJDK 6 le prestazioni erano decisamente scadenti
PHP
Risulta avvantaggiato dal limitato overhead che richiede al sistema per poter
essere utilizzato, grazie a questo, non è impensabile utilizzare un server
RaspberryPi con un intero stack LAMP installato e con tutte le applicazioni che
ne conseguono
42. Emulazione
Matteo Baccan
JUG Novara, PUG Novara
Tutto bello, ma se non avessi un Raspberry Pi?
Puoi emularlo con QEMU, utilizzando direttamente le immagini
fornite dal http://www.raspberrypi.org/downloads
DEMO