Newsgroup: it.comp.os.linux.sys
Titolo: Ram > 4GB

Salve a tutti.
Mi risulta che e' possibile compilare il kernel in modo da poter
utilizzare piu' di 4GB di ram anche su architetture x86 ia32 a patto che
questi abbiano il supporto PAE.
La mia domanda e': la quantita' di memoria visibile da ciascun processo
coincide con l'intero ammontare di memoria fisica o ci sono delle
limitazioni?
Mi sembra di aver letto da qualche parte (purtroppo non ricordo dove)
che la memoria per ogni processo sia comunque limitata a 4GB.
E' corretto?
Dove e' possibile reperire informazioni piu' precise riguardo a questo?
Ringrazio anticipatamente.
Ciao
Antonio
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

E' corretto?
Anche a me risulta cosi'. Ma non ho mai provato una soluzione del genere.
Alessandro.

 wrote in message
news:sPpYb.45546$
VS6....@tornado.fastwebnet.it

Scusa se insisto, ma non hai idea di dove possa trovare informazioni
certe a questo proposito?
Mi basterebbe un indizio. :)
Comunque grazie.
Ciao 


 E' corretto?
Corretto. PAE funziona  mappando di volta  in volta parte  della memoria
fisica nell'address  space del  processo (che rimane  di 4GB). L'impatto
sulle  prestazioni  non e`  per  nulla  trascurabile, soprattutto  se  i
processi "spazzolano" in continuazione la loro area di memoria.
Se ti servono piu` di 4GB di RAM potresti considerare gli Opteron.
Luca
-- 
Home: 
http://kronoz.cjb.net
Al termine di un pranzo di nozze mi hanno dato un
amaro alle erbe cosi' schifoso che perfino sull'etichetta
c'era un frate che vomitava.

Antonio ha scritto:

La quantità di memoria indirizzabile dipende dalla dimensione dei 
registri di indirizzo dei processori.
Il supporto per una quantità di memoria superiore a quello indirizzabile 
è ottenuto con vari artifici, che per essere funzionali devono avere un 
riscontro nel codice che lo utilizza, in pratica una sorta di 
ottimizzazione, usando termini impropri.
Il kernel non entra nel merito di questa gestione, limitandosi a 
permettere di utilizzare un supporto per la memoria diverso da quello 
previsto.
Detto questo, bisogna aggiungere che nessun processo "vede" l'intero 
ammontare della memoria Fisica, ma un quantitativo pre-assegnato, che 
può variare "dinamicamente" in base al tipo di elaborazione richiesta, 
alla presenza o meno di alcune features, ecc ecc.
Questo vuol dire che la memoria indirizzata da un processo non è una 
sola funzione del tempo (inteso come istante di esecuzione del processo 
stesso, con conseguente disponibilità o meno di memoria), ma anche della 
struttura del processo stesso.
Ovviamente si parla di sistemi Linux, su Winsozz la questione è diversa 
(Campo minato, in un paio di occasioni è arrivato ad occuparmi 39 Mb di 
RAM!).
Adesso toglimi una curiosità... che razza di processo necessita di più 
di 4GB di RAM su un singolo IA32?
-- 
  Montag trattenne le bombe, lassù, per un solo istante, col pensiero e
le mani disperatamente brancolanti verso il cielo, a sorreggerle.
-------------------------------------------------------------------------
montagLA_CHIAV...@email.it
 Per rispondere toglere LA_CHIAVE.

 Luca
Grazie mille per le informazioni.
Ciao
Antonio
P.S. Non avresti sotto mano un link?


 di 4GB di RAM su un singolo IA32?
Il mio e' un problema di signal procesing di dati satellitari molto
grandi (~5.5GB).
Sicuramente sara' usata uma macchina multi-processore.
Stavo cercando di valutare se l'architettura a 32 bit poteva consentirmi
di eseguite il processing senza tirare in ballo librerie di shared
memory, MPI e cose del genere.
L'uso di tali tecniche complicherebbe notevolmente il SW (che deve
essere sviluppato).
Sicuramente l'architattura a 64 bit mi risparmierebe un sacco di rogne
(anche se forse me ne darebbe atre).
Grazie mille per le informazioni.
Ciao


 P.S. Non avresti sotto mano un link?
No, non mi sono mai interessato di hardware di questo livello ;) Non
dovresi avere difficolta` a trovare la configurazione che cerchi.
Luca
-- 
Home: 
http://kronoz.cjb.net
Recursion n.:
	See Recursion.

 
montagLA_CHIAV...@email.it
 Per rispondere toglere LA_CHIAVE.
Ciao.

 Un programma scritto da Gates ? :-D
 
Ue ue! Non scherziamo! ;)
... il programma, in effetti, lo dobbiamo ancora scrivere.
Vedremo cosa viene fuori.


 opteron" su google.
Grazie ancora.
Ciao
Antonio


 (anche se forse me ne darebbe altre).
Su Linux?
-- 
  Montag trattenne le bombe, lassů, per un solo istante, col pensiero e


 grandi (~5.5GB).
momento.
per signal processing intendi filtraggi? ma non c'è bisogno di scassarsi
la testa.
Prendi i dati e li fracchi su un file, poi so che la libreria C permette
di gestire file più grandi di 2 GB, mi sembra di debba usare in
compilazione un define come -DHAVE_LARGE_FILES e puoi indirizzare tutti i
dati che vuoi.
Sicome fai filtraggi a te non serve caricare tutto in ram, tiri su un po'
di dati alla volta e il risultato dei filtraggi lo scrivi in un qualche
altro file.
Una volta ho simulato un sistema di trasmissione digitale, dalla sorgente
pn, passando per modulatore, canale e qualizzatore fino ad arrivare ai bit
in ricezione tuto in ram con matlab, ed è stata una tragedia..... (usando
un bipro amd 2x2ghz e un giga di ram...)

 un bipro amd 2x2ghz e un giga di ram...)
Ciao e grazie


 scrittura e successiva lettura a blocchi dell'intero dato).
prendi 4 pc sufficientemente carrozzati, li metti in rete e il primo
acquisisce i dati e fa la prima elaorazione, poi spara i dati al secondo
con dei socket, che li elabora e li spara al terzo e così via.
fai un bel sistemino distribuito, facilmente espandibile e che non
dovrebbe costare troppo.

 Su Linux?
Ni.
Il discorso e' parecchio complicato e non voglio annoiarti.
Comunque tra le altre cose ci sono di mezzo la disponibilita' di alcuni
tool proprietari, problemi di certificazioni, e di disponibilita' delle
soluzioni richieste presso i fornitori indicati.
In questo senso la soluzione a 32bit ci creerebbe meno problemi,
oltre al fatto che viene comunque percepita come piu' matura e
affidabile.


 wrote in message
news:pan.2004.02.18....@campana.vi.it

Si. Come dicevo nell'altro post questa soluzione e' stata presa in
considerazione.
Abbiamo un altro "quasi prototipo" in MPI che fa esattamente questo su
una vecchia versione dell'algoritmo.
Sinceramente io facevo il tifo per questa soluzione, anzi, fosse stato
per me, ci avrei messo dentro anche OpenMosix.
Il discorso e' che dal punto di vista del SW che andiamo a sviluppare,
questa, e altre soluzioni distribuite, risulterebbero certamente piu'
complesse e costose.
Se riuscissimo a tenere tutto il dato in memoria potermmo fare un SW
molto piu' semplice e meno costoso.
Ovviamente ci sono molti altri fattori da tenere in considerazione.
Per il momento stiamo cercando di valutare tutte le possibili soluzioni.
Ciao



Dipende cosa intendi con "a basso livello".
Il sistema operativo in qualche modo ci riesce, quindi ad un livello molto
basso e' sicuramente possibile, ma probabilmente devi bypassare il
sistema operativo o costruirtene uno tuo.
Alessandro.


Prima di porti il problemadella memoria, sei sicuro che il tempo di
elaborazione del dato sia inferiore al tempo di I/O?
Alessandro.

 in memoria.
Una curiosita`: non mi e` chiaro il requisito real-time.
Voglio dire, tenere tutto in memoria di solito serve nel
caso gli accessi a dischi esterni siano considerati troppo
lenti per l'applicazione.
Da un punto di vista di complessita`, non credo che avere
i dati in un file sia cosi` terribile, anzi.
Consideranto poi che vuoi cimentarti con i thread...
Credo che, da quello che ci hai detto, la soluzione proposta
da Ottavio sia la migliore, un cluster di PC connessi via rete,
se fai le cose per bene, dovresti riuscire ad avere anche un
sistema alquanto scalabile (domani invece che 5.5GB, sono 10GB...).
bye,
-- 
   Piergiorgio Sartor

 wrote in message
news:bvGYb.46693$
VS6....@tornado.fastwebnet.it

No, il tempo di elaborazione e' maggiore.
Il discorso e' che il tempo di I/O sarebbe in ogni caso non trascurabile
e
solo parzialmente sovrapponibile col processing.
Pero', mentre il processing devo farlo per forza, l'I/O, in teoria,
potrei evitarlo, almeno in parte.
Ciao


 molto piu' semplice e meno costoso.
Meno costoso non direi.
bye,
-- 
   Piergiorgio Sartor

 Per il momento stiamo cercando di valutare tutte le possibili soluzioni.
Valutate... valutate... ma Clustering o Server a 64 bit dedicato sono le 
uniche fattibili! Se poi lo volete far girare anche su winsozz 
moltiplicate la potenza hardware richiesta per un fattore random 
compreso tra 100 e 1000000! ;-)
-- 
  Montag trattenne le bombe, lassů, per un solo istante, col pensiero e


 potrei evitarlo, almeno in parte.
Come se trasferire in un'unica lettura 5,5Gb di roba in RAM fosse una 
cosa cmq veloce!
-- 
  Montag trattenne le bombe, lassů, per un solo istante, col pensiero e


 Meno costoso non direi.
Ribadisco che il discorso era riferito al costo del SW.
Non sono un manager ma per quel che ne capisco il costo di sviluppo e
manutenzione del SW e' prevalente risetto al costo dell'HW, almeno per
la classe di macchine di cui stiamo parlando qui.
Ciao,


 la classe di macchine di cui stiamo parlando qui.
Dipende da quante macchine si vendono, dato che il costo
dell'HW e` fisso, mentre il costo del SW e` distribuito.
Un server puo` costare 25.000 US$, se lo riduci a 5000,
puoi investirne 20.000 in SW.
Se vendi 10 macchine, sono 200.000 US$...
Ma come dicevo sopra, non posso giudicare, sto solo
facendo supposizioni.
bye,
-- 
   Piergiorgio Sartor

 compreso tra 100 e 1000000! ;-)
Scusate non volevo far innervosire nessuno. :)
Ciao


 facendo supposizioni.
Purtroppo non posso sbilanciarmi piu' di tanto.
Mi rendo conto di essere stato piuttosto vago e di aver generato un po'
di confusione.
Chiedo scusa per questo.
Comunque grazie ancora per le informazioni ed i consigli.
Ciao.


 Una curiosita`: non mi e` chiaro il requisito real-time.
Requisito stringente sui tempi. Non RT.


 Scusate non volevo far innervosire nessuno. :)
Perchè, chi s'è innervosito?
-- 
  Montag trattenne le bombe, lassù, per un solo istante, col pensiero e


 molto piu' semplice e meno costoso.
non conosco il software, ma per esperienza mia non è stato così.

 compreso tra 100 e 1000000! ;-)
non c'è bisogno che scomodi chissà quale soluzione ipercostosa: tanti pc
economici che si spezzettano il lavoro e che lo lo passano via rete. E' il
concetto fordista della catena di montaggio.

 la classe di macchine di cui stiamo parlando qui.
sappi che se sei furbo però te la cavi tranquillamente con molto meno.
Anzi distribuire il lavoro su pc economici ti permete di investire di
più sul software (la butto lì, se proprio hai problemi di tempi di
esecuzione puoi fare addirittura scomposizione polifase dei filtri
complessi e mettere più macchine che fanno il filtraggio in parallelo).
Inoltr se scopri che il tuo sistema non ci sta dietro è molto più
indolore comprare una macchinetta piuttosto che un serverone, che magari
non sfrutti pienamente.

 adattaro bi-dimansionale.
il filtro è separabile?

 Perchè, chi s'è innervosito?
:))


 Il Wed, 18 Feb 2004 08:27:12 +0000, Antonio ha scritto:

Tendenzialmente no.
L'inghippo e' proprio questo.
Sono state individuate alcune sorrovasi pel processing che sono
parallelizzabili in modo semplice.
Ma in linea generale per processare servono tutti i dati.


 non sfrutti pienamente.
Concordo che l'approccio a cluster e' molto interessante.
Semplicemente dico che non e' cosi' banale implementare una cosa del
genere.
Se le cose non sono fatte "molto" bene si rischia di saturare la rete o
cose del genere.
Inoltre non e' cosi' immediato che il problema scali bene.
Ovviamente tutto dipende dal probema che si vuole risolvere.
Ciao


 classica roba da ufficio.
:) bella idea! ... ma non applicabile nel mio caso.


Ottavio Campana ha scritto:

Questo è vero ma fino ad un certo punto... soprattutto in termine di 
gestione ecc. ecc.
il concetto di parallelismo ha senso se da ciò si riesce ad ottenere un 
troughput maggiore, stesso discorso con le pipeline (anche se qui entra 
in gioco la latenza), e le prestazioni pure ed affidabili sono spesso in 
contrasto con l'inventiva dei sistemisti! ;-)
-- 
  Montag trattenne le bombe, lassù, per un solo istante, col pensiero e


 contrasto con l'inventiva dei sistemisti! ;-)
ma non pensare un server con un sacco di cpu abbia i suoi vantaggi. anzi,
se i bus di accesso alla memoria sono condivisi stai fresco....
Una ethernet a 10 gbit tra i computer è un throughput di tutto rispetto.
Oppure fai il bounding di inferfacce ethernet ad 1 gbit e te la cavi
economicamente.

 Ma in linea generale per processare servono tutti i dati.
cambia filtro. :-)

 cambia filtro. :-)
Magari! :)
Ciao


 economicamente.
Si, ma serve una gestione più attenta del progetto altrimenti si 
rischiano problemi di sovra/sotto dimensionamento!


 se i bus di accesso alla memoria sono condivisi stai fresco....
Da quello che ho letto mi pare che gli Altix 3000 con 64 CPU non siano
malaccio. Peccato per il prezzo ;)
ciao
Luca