Home Tecnica Virtualizzazione Kernel Linux: struttura della memoria condivisa

In evidenza

SMAU a Bologna con Research to Business

SMAU a Bologna con Research to Business

Il 6 e 7 giugno il Roadshow Smau Business torna a far tappa al Padiglione 33 della Fiera di Bologna e...
Gli articolisti del Portale

Gli articolisti del Portale

Abbiamo deciso di dare più visibilità a tutti coloro che hanno pubblicato articoli per noi, questo perché...
SMAU festeggia il suo quinto anno nel NordEst a Padova

SMAU festeggia il suo quinto anno nel NordEst a Padova

Il 18 e 19 aprile al padiglione 5 di Padova Fiere si terrà la prossima tappa di SMAU Business Roadshow. All'evento...
SMAU risale l’Italia e arriva a Roma

SMAU risale l’Italia e arriva a Roma

Il 21 e 22 marzo nella Nuova Fiera di Roma si terrà la prossima tappa di SMAU Business Roadshow. L'evento...

Bandi di Concorso

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Avviso per incarico ad ingegnere informatico alla Provincia di Bergamo

Nell'ambito del progetto denominato "SOS badanti: la rete provinciale di sportelli per assistenti e collaboratori familiari” nell'ambito del programma "SAP - Servizi alla Persona" è stato pubblicato la Provincia di Bergamo ha pubblicato l'avviso per il reclutamento di una unità per incarico di...

21 Mag 2012 - Letture:1

Esperto di servizi e tecnologie cloud al Digit PA

Procedura comparativa per il conferimento di un incarico di collaborazione coordinata e continuativa per un profilo senior di “Esperto di servizi e tecnologie cloud”, nell’ambito del progetto europeo “Open Dai” presso l' Ente nazionale per la digitalizzazione della Pubblica Amministrazione...

18 Apr 2012 - Letture:34

Selezione per addetto servizi informatici all'Autorità Portuale di Brindisi

Avviso di selezione pubblica per titoli e prova orale per l’assunzione di n. 1 “addetto ai servizi informatici”, a tempo pieno ed determinato triennale, previo periodo di prova, da inquadrare nell’Area Amministrativa. (Inquadramento al III Livello del C.C.N.L. dei Lavoratori...

12 Feb 2012 - Letture:435

Concorso pubblico per informatico alla Corte dei Conti

E' indetto un concorso pubblico, per   esami,   per   il reclutamento di tre unità di informatici da inquadrare nella III area, fascia retributiva F1, da destinare agli Uffici della Corte dei Conti con sede in Roma. Requisiti: laurea triennale in scienze e...

05 Feb 2012 - Letture:306

Istruttore informatico L.68/1999 al Comune di Potenza

Concorso pubblico, per esami, per la copertura di n. 2 posti di Istruttore Informatico, categoria C, posizione economica C1, a tempo pieno e indeterminato, con riserva assoluta alle categorie dilavoratori di cui all'art. 1 della legge n. 68/1999 (norme per...

21 Gen 2012 - Letture:244

Senior Business Consultant presso Lombardia Informatica

Selezione per figura Senior Business Consultant presso Lombardia Informatica. Il collaboratore dovrà fornire consulenza strategica e di business sulle tematiche verticali della Socio-Sanità. Requisiti di ammissione: Laurea in Ingegneria, Economia e Commercio o Scienze dell’Informazione; Percorsi di formazione professionale in ambito sanitario e socio-sanitario, su...

11 Gen 2012 - Letture:284

Bando progetto TAG (Toscana Area Giovani) per giovani talenti digitali

UPI Toscana ha indetto un avviso pubblico per la selezione di 20 giovani (2 per ciascuna delle 10 province della Toscana), da impiegare come formatori all'interno del Progetto TAG (Toscana Area Giovani). Il bando è finalizzato a valorizzare al meglio i...

03 Gen 2012 - Letture:271

I più attivi

Dati e punteggi dell'ultimo anno

Giovanna Casamassima Giovanna Casamassima
47 articoli
16,501 punti totali
Rodolfo Giometti Rodolfo Giometti
49 articoli
5,153 punti totali
Vittorio D'Aversa Vittorio D'Aversa
33 articoli
3,445 punti totali
Fulvio Lucchetti Fulvio Lucchetti
9 articoli
0,279 punti totali
Luigi Carbone Luigi Carbone
10 articoli
0,262 punti totali

Ci hanno visitato

Oggi:1377
Ieri:2110
Totali (14/04/09):1170552

I nostri numeri

Articoli pubblicati: 552
Iscritti al portale: 768
Iscritti all'Elenco: 184
Iscritti ML Discussioni: 351
Iscritti ML Articoli: 30
Iscritti ML Lavoro: 166
 

AVG Live CD Rescue: l'antivirus live!

Qualche giorno fa mi sono reso conto che in azienda sta per scadere la licenza d...

Rete lenta? Vediamo chi consuma...

Molte volte capita di trovarsi la rete molto lenta e magari non abbiamo a dispos...

Linutop OS 4.0: Internet, Chiosco Multimediale e non solo!

Presentata negli ultimi giorni nella capitale francese la nuova distribuzione LI...

PyGTK su N900

Come programmatore avere un cellulare che in pratica è un computer (oramai il 10...

AccessPoint: la scelta ottimale del canale di trasmissione

Realizzare una rete Wireless outdoor (ma anche indoor) pone il problema della sc...

Maemo extras: ancora più applicazioni per l'N900

Finalmente, grazie a Nokia, abbiamo a disposizione un esemplare dell'N900 su c...

Aggiungere programmi all'N900 con Maemo SDK

Abbiamo già visto come sia facile installare nuove applicazioni sul Nokia N900, ...

Gobby: l'editor collaborativo

Quante volte vi sarà capitato di dover dire come modificare un file di testo ad ...

Mageia 1 alpha1 è tra noi

Finalmente è stata rilasciata la tanto attesa versione alpha1 principalmente riv...

Implementare una LIM con Linux

Come promesso rieccomi qui per illustrare come realizzare una LIM (che ricordo s...

Installare Linux su una USB key: ecco come!

L’installazione  e l'avvio di una distribuzione Linux Live da un supporto U...

Come gestire una presentazione con il Wiimote

Capitandomi spesso si tenere conferenze e workshop mi trovo sempre il problema d...

Grep e Strings due giganti di Linux

Il tempo libero serve anche a sperimentare e quando si ha la passione per la com...

Autenticarsi con la pen drive

La pen drive è ormai diventata come il cellulare, impossibile non averla, ma sie...

Intervista esclusiva a Mageia Linux

La Presidente dell'Associazione MAGEIA.ORG, Anne Nicolas, in questa intervi...

ettercap: il man-in-the-middle facile

Troppo spesso mi rendo conto che molti considerano la rete aziendale o quella ...

Boot from SAN

Intendiamoci, non è l’ultima briciola tecnologica caduta da un banchetto alla NA...

Cloud Money

Discorrendo con un collega di cloud computing, si è finito, come al solito, a pa...

Linutop4 PC

Il produttore francese Linutop, con sede a Parigi, ha annunciato il nuovo modell...

Forno a microonde: analisi emissioni EME

Nell'immaginario collettivo c'è una forte paura per i danni che posso generare s...

Anomalie di partizionamento hard disk: un esperienza personale

Nonostante le decine di installazioni delle varie distribuzioni Linux eseguite s...

Socat: quando i dati passano via rete

Lavorando coi sistemi embedded molte volte mi capita di dovermi arrangiare su di...

Openembedded: la distribuzione «ristretta» per Linux

Quando le risorse di un sistema sono limitate non è possibile usare una distribu...

Arduracing: come realizzare una robot-car intelligente con Arduino

Arduracing è un progetto realizzato con Arduino in collaborazione con il Lucccal...

Generare un file da 10GB in 2 millisecondi!

Chi ha a che fare con le macchine virtuali o deve generare delle immagini di fil...

Come creare un NFS server ridondante

Quelli che mi conoscono sanno che il mio ambito lavorativo è nei sistemi embedde...

Generare un file pieno di 0xff

Per generare in file da 16Kbyte pieno di zeri su di un sistema UNIX/GNU-Linux si...

Verificare spazio su disco su UNIX

Nella gestione si sistemi informativi capita spesso di accedere a postazioni ser...

LIM: la lavagna multimediale con il wiimote

LIM sta per Lavagna Interattiva Multimediale, ed è un progetto che, tramite l'...

"Impronte digitali" anche per le macchine fotografiche

Da www.hwupgrade.it: Una ricerca della Binghamton University ha messo a punto u...

L'SMS autoprodotto!

Tempo fa sulla mailing list di CFI ho provato a lanciare l'idea di effettuare un...

Android: se non hai il telefono usa l'emulatore!

In questi giorni sto valutando di comprare un cellulare basato su Linux. Inizial...

Architettura di una trading room

La trading room o sala mercati è il luogo dove vengono effettuate le operazioni ...

Gimp, OpenOffice & C. su N900? Semplice con Debian!

Che Maemo fosse versatile me ne sono accorto subito, ma l'idea di poter installa...

Geexbox: la mini distro MediaCenter Linux

Geexbox è un piccolo ma potente sistema operativo orientato alla riproduzione di...

IPhone recupero file: un gioco di squadra!

Un giorno l'amico Armando Buzzanca mi chiama perchè deve recuperare una no...

Backup mail server: quando il mail server non è raggiungibile

Se avete il mail server in proprio potrebbe succedere che questo non sia raggiun...

Integrazione Webmaster Tool. Google Analytics, le ultime novità

Google non finisce mai di stupirci, ma soprattutto è inarrestabile sull'implemen...

Android-x86: quando il drone sbarca sui PC

Chi pensa che Andoird abbia vita bere farà bene a ricredersi perché, oltre alle ...

I-Memo: le password personali sempre con te

Prodotto dalla MensTecnica, una giovane azienda della Basilicata fondata nel 200...

Installare strace su Android

Quando si programma è importante avere buoni tool di debug e uno dei più importa...

Controllare MAME con Wiimote su N900!

Ecco un'altra dimostrazione delle potenzialità di questo telefono (se vogliamo c...

I dati e le loro anomalie nascoste

La motivazione per questo articolo nasce dalla crescente problematica di gestion...

SL4A e il drone parla più lingue

Chi come me non ama Java si sentirà a disagio volendo programmare una qualsiasi ...

Server Linux: tutti i trucchi per farlo al meglio

Volete fare un server Linux per la vostra impresa, ufficio o semplicemente per c...

Il telefono… la tua voce!

Era lo slogan pubblicitario della Telecom di un po’ di anni fa. Certo, al concet...

Virtualizzazione di Windows XP o altri SO su Ubuntu con Qemu

I pc odierni sono sempre più potenti e molto spesso sotto sfruttati, la virtua...

Compilare un programma C per Android

Essendo un programmatore C (uso anche altri linguaggi, ma il C e quello che uso ...

Cifratura wireless: TKIP vs AES

Una delle domande più frequenti di chi intende implementare una rete Wireless è...

GNU readline: un tool indispensabile per la linea di comando

Chiunque di voi abbia avuto a che fare con la linea di comando avrà senz'altro a...

Boxee Box: la TV facile di D-Link

Grazie alla D-Link possiamo presentare un nuovo gioiello della tecnologia: il me...

Odroid: la piattaforma di gioco libera

Si chiama Odroid ed e basata su Android, è la prima piattaforma di gioco interam...

Lion desktop: finalmente una distribuzione mirata alle aziende!

Chi è abituato a lavorare con Linux, ed in particolare ha provato a lavorare con...

Tenere i servizi sotto controllo con Monit

In questi giorni mi è capitato di dover risolvere un problema per un mio cliente...

Disattivare il controllo account utente in Windows 7 e Vista

Il controllo account utente è quel particolare servizio progettato per aumentare...

Come ti controllo i tassi di interesse con Linux

In questi giorni sto cercando di fare una surruga per il mutuo di casa mia. Tra ...

Clonare una macchina vera in 30 minuti con VirtualBox

Essendo uno sviluppatore mi son reso conto che la virtualizzazione di una macchi...

(in)sicurezza informatica

L'incremento nell'uso del computer ha portato con se una diversa concezione di s...

F-Droid, e il FOSS su Android è servito!

Come Software Libre Evangelist mi son spesso trovato ad incoraggiare l'uso del s...

Il NAS D-Link DNS-343

Grazie alla D-Link azienda produttrice di apparecchiature di rete e non solo v...

Kernel Linux: struttura della memoria condivisa Stampa E-mail
(19 voti, media 5.00 di 5)
Area Tecnica - Virtualizzazione
Scritto da Marco Ferrigno   
Martedì 12 Luglio 2011 09:25
Articolo letto 1191 volte

Uno dei cambiamenti più interessanti portati dal kernel 2.6, ed in particolar modo dagli sviluppi successivi alla versione 2.6.32, è la memoria condivisa del kernel (Kernel shared memory - KSM).

Il KSM è stato originariamente progettato per l'uso con il Kernel-based Virtual Machine (KVM), ma esso è utile anche in ambienti non virtualizzati; infatti è stato introdotto per essere utile soprattutto nei sistemi embedded, il che indica la grande flessibilità di questo approccio. Nell'analisi che seguirà capiremo come tale meccanismo permetta l'aumento del numero di macchine virtuali concorrenti attraverso il consolidamento di pagine di memoria identiche.

Il KSM esiste sotto forma di demone nel kernel (chiamato ksmd) che esegue periodicamente la scansione delle pagine di memoria per identificare elementi duplicati che vengono poi uniti (e successivamente contrassegnati come "in sola lettura"). È possibile trovare l'implementazione del modulo KSM all'interno del codice sorgente del kernel in ./mm/ksm.c.

L'interfaccia di programmazione (API) di KSM è implementata attraverso la system call madvise (vedi listato) e da un parametro chiamato MADV_MERGEABLE il cui compito è quello di indicare una regione di memoria e renderla unificabile. Una regione di memoria può anche essere sollevata dallo stato di "unificabile" attraverso il parametro MADV_UNMERGEABLE.

Si noti che la rimozione errata di una regione di pagine attraverso madvise può generare un EAGAIN (errore da mancanza temporanea di risorse) oppure l'operazione potrebbe esaurire la memoria durante il processo di non fusione, che porta a problemi ancora maggiori (out-of-memory).

Listato madvise

#include </sys/mman.h>

int madvise(void *start, size_t length, int advice);

Nel KSM le pagine sono gestite da due strutture ad albero. Il primo, chiamato albero instabile (ksm.c/unstable_tree_search()), viene utilizzato per memorizzare nuove pagine che non sono state ancora taggate come stabili e che saranno le probabili candidate ad una fusione. All'interno di questa struttura le pagine presenti non sono protette da scrittura.

Il secondo albero (ksm.c/stable_tree_search() chiamato a sua volta da ksm.c/cmp_and_merge_page()), detto stabile, ha il compito di raccogliere le pagine che sono state trovate per essere poi unite dal KSM.

Per identificare se una pagina è volatile e meno, viene utilizzato un semplice checksum a 32 bit. Quando una pagina viene sottoposto a scansione, il suo checksum viene calcolato e memorizzato; se in una successiva scansione il checksum calcolato è diverso da quello generato in precedenza, vuol dire che la pagina sta cambiando (perchè magari è in uso da un'altra richiesta) e non è più un buon candidato per la fusione.

Il primo passo nella gestione di una singola pagina è quello di vedere se può essere trovata nel ramo stabile. Un memcmp (memory compare) viene eseguito nelle pagine da analizzare. Se il memcmp restituisce 0, le pagine sono uguali e viene rilevata una corrispondenza. Altrimenti, memcmp può restituire -1 (il che significa che la pagina candidata è ad un livello inferiore al nodo corrente) o 1 (la pagina candidata è ad un livello superiore del nodo corrente). Anche se un confronto, ad esempio su pagine da 4KB, può sembrare abbastanza pesante, nella maggior parte dei casi il memcmp si concluderà prematuramente una volta trovata la prima differenza. Pertanto, il processo stesso è veloce ed efficiente.

Quando la scansione è completa (effettuata attraverso ksm.c/ksm_do_scan()), l'albero è mantenuto stabile e le pagine orfane rimosse. L'albero instabile, invece, viene rimosso e ricostruito al momento della scansione successiva.

La struttura ad albero utilizzata dal KSM è una struttura riutilizzabile: infatti essa è anche usata dal Completely Fair Scheduler (CFS) per la memorizzazione, in ordine di tempo, dei compiti da svolgere. Potete trovare l'implementazione degli alberi nel kernel in ./lib/rbtree.c.

La gestione e il monitoraggio del KSM avviene attraverso sysfs (/sys/kernel/mm/ksm). In questa sotto directory, troverete una raccolta di file utilizzati per il controllo e il monitoraggio del KSM.

Il file run viene utilizzato per abilitare o disabilitare la fusione delle pagine. Per impostazione predefinita è disabilitato (0), ma può essere attivato, ad esempio, in questo modo:

root@host:/# echo 1 > sys/kernel/mm/ksm/run

E' possibile disattivare il file run e portare le pagine fuse ad un precedente stato di non-fusione sostituendo al comando precendete il paramentro "1" con "2".

Mentre il KSM è in esecuzione, lo si può controllare con tre parametri (interni a sysfs). Il file sleep_millisecs definisce quanti millisecondi ksmd deve andare in pausa prima di eseguire un'altra scansione. Il file max_kernel_pages definisce il numero massimo di pagine che ksmd può utilizzare (il valore predefinito è il 25% della memoria disponibile, ma è possibile scrivere uno 0 per specificare nessun limite). Infine, il file pages_to_scan definisce il numero di pagine che possono essere lette in una singola scansione. Qualsiasi utente può visualizzare questi file, ma per modificarli si necessita, ovviamente, dei privilegi di root.

Di seguito la descrizione dei restanti file:

  • full_scans: numero di aree di memoria scannerizzate.
  • pages_shared: numero di pagine del kernel non swap-abile che il KSM utilizza.
  • pages_sharing: indicazione dei risparmi di memoria.
  • pages_unshared: numero di pagine uniche controllate per la fusione.
  • pages_volatile: numero di pagine che cambiano troppo spesso.

Linux non è il solo ad usare la condivisione di pagina per migliorare l'efficienza della memoria ma è l'unico tra i sistemi operativi ad aver implementato questa caratteristica. L'hypervisor ESX di VMware fornisce questa funzione sotto il nome di TPS (Trasparent Page Sharing), mentre in XEN si chiama Memory CoW.  Ma qualunque sia il nome, la funzione consente un migliore utilizzo della memoria, permettendo al sistema operativo (o hypervisor, nel caso di KVM) l'over-commit di memoria per supportare un maggior numero di applicazioni o macchine virtuali.

 
 

In primo piano

Simons Voss: un mondo senza chiavi

Simons Voss: un mondo senza chiavi

Il sistema di gestione e di controllo degli accessi 3060 si presenta come un’alternativa con enormi vantaggi...
Pubblicità mirata dei prodotti

Pubblicità mirata dei prodotti

Hai un prodotto o un servizio da pubblicizzare? Fallo su consulenti-ict.it! Pubblicizzare un prodotto...
Recensioni sul Portale

Recensioni sul Portale

Hai un prodotto hardware/software o un libro riguardante uno dei temi dell'ICT? Vuoi farlo conoscere...

Offerte di lavoro

Visualizza Topic »

Eventi

Non ci sono eventi in programma
Maggio 2012
D L M M G V S
29 30 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 31 1 2
Giugno 2012
D L M M G V S
27 28 29 30 31 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

Sondaggi

busyCaricamento Sondaggio...