Re: Quale kernel?

2008-05-01 Per discussione Lucio Crusca
Franco Vite wrote:

 Prima, coi kernel amd64, quando andava bene stavo sui 200 Mb di swap
 occupata.
 
 Come mai questo cambiamento veramente rilevante, secondo voi?

Dal p.d.vista dell'utilizzo della RAM, il kernel a 64 bit è sicuramente
peggiorativo rispetto al 32 bit, nonostante la CPU abbia un'architettura a
64 bit. Il principale motivo è che con un kernel a 64 bit ogni variabile
occupa in RAM 64 bit invece di 32, quindi con un kernel a 64 bit è come
avere la metà della RAM rispetto allo stesso kernel a 32 bit. Il vantaggio
del kernel a 64 bit si ha quando il computer ha più di 4gb di RAM. In
quella situazione il kernel a 32 bit deve fare le acrobazie per riuscire ad
usare la ram oltre i 4GB, mentre per il kernel a 64bit non ci sono problemi
e lo fa in modo efficiente.

Fino a qui è matematica. Da qui in poi sono mie ipotesi.

Vista l'inefficienza (matematica) del kernel a 64 bit quando il computer ha
meno di 4GB di RAM, immagino che chi ha impostato i defaults per la
configurazione del kernel a 64 bit abbia preferito favorire i sistemi con
più di 4GB di RAM, dato che quelli con meno di 4GB partono già in
svantaggio per cause matematiche: sarebbe infatti inutile ottimizzare per
quei sistemi a scapito di quelli con molta RAM (per i sistemi con meno RAM
è meglio ottimizzare un kernel a 32bit). Deduco quindi che sui kernel a 64
bit ci siano delle configurazioni impostate di default che danno per
scontato la presenza di almeno 4GB di RAM, quindi sono tutt'altro che
parsimoniose nell'uso della RAM. Da qui si spiegherebbe perché su un
sistema con poca RAM si arrivano ad avere 200Mb di swap usato in più. (Se
la RAM fosse veramente poca, tipo 256MB, penso sarebbero sufficienti le
cause matematiche per spiegare la differenza).

Lucio.

-- 
Virtual Bit di Lucio Crusca
via Isonzo, 5 - 10069 Villar Perosa (TO) - Italy
http://www.virtual-bit.com


-- 
Per REVOCARE l'iscrizione alla lista, inviare un email a 
[EMAIL PROTECTED] con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a [EMAIL PROTECTED]

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Quale kernel?

2008-05-01 Per discussione Federico Di Gregorio
Il giorno gio, 01/05/2008 alle 19.29 +0200, Lucio Crusca ha scritto:
 Dal p.d.vista dell'utilizzo della RAM, il kernel a 64 bit è sicuramente
 peggiorativo rispetto al 32 bit, nonostante la CPU abbia un'architettura a
 64 bit. Il principale motivo è che con un kernel a 64 bit ogni variabile
 occupa in RAM 64 bit invece di 32, quindi con un kernel a 64 bit è come
 avere la metà della RAM rispetto allo stesso kernel a 32 bit.

Questa è abbastanza una panzana. Una variabile occupa sempre lo stesso
spazio ma, per motivi di accesso alla memoria, a seconda del tipo di
variabile c'è un allineamento che spreca qualche byte. Non è
assolutamene vero che è come avere metà memoria.

 Vista l'inefficienza (matematica) del kernel a 64 bit quando il computer ha
 meno di 4GB di RAM, immagino che chi ha impostato i defaults per la

Falso.

 configurazione del kernel a 64 bit abbia preferito favorire i sistemi con
 più di 4GB di RAM, dato che quelli con meno di 4GB partono già in
 svantaggio per cause matematiche: sarebbe infatti inutile ottimizzare per
 quei sistemi a scapito di quelli con molta RAM (per i sistemi con meno RAM
 è meglio ottimizzare un kernel a 32bit). Deduco quindi che sui kernel a 64
 bit ci siano delle configurazioni impostate di default che danno per
 scontato la presenza di almeno 4GB di RAM,

Falso.

Per i motivi esposti prima e anche a causa dell'architettura più nuova e
dei compilatori che ottimizzano peggio, *soprattutto se il programma non
è stato scritto tenendo presenti le richieste di allineamento in memoria
dei dati* un sistema amd64 occupa più memoria, quanta, dipende dal
programma. Questa è l'unica spiegazione per il maggiore consumo. Mentre
non è vero che i kernel a 64 bit sono ottimizzati per 4Gb o più di
memoria a discapito delle configurazioni inferiori.

federico

-- 
Federico Di Gregorio http://people.initd.org/fog
Debian GNU/Linux Developer[EMAIL PROTECTED]
INIT.D Developer   [EMAIL PROTECTED]
 La mia nuova versione del mondo prevede una consapevolezza
  distribuita e insapore. -- sisterconfusion


signature.asc
Description: Questa è una parte del messaggio	firmata digitalmente


Re: Quale kernel?

2008-05-01 Per discussione Lucio Crusca
Federico Di Gregorio wrote:

 Questa è abbastanza una panzana. 
 [...]
 Falso.
 [...]
 Falso.
 
Beh, può darsi che mi sbagli, anche se personalmente cercherei di essere un
po' più gentile... è vero che la memoria necessaria non è il doppio, ma mi
premeva spiegare il perché un sistema a 64 bit è sostanzialmente peggio di
un sistema a 32 bit a meno che non ci sia una buona ragione per usarlo,
visto che Franco sembrava stupito di questo fatto. Non sono stato a mettere
le cifre esatte, che peraltro non conosco, ma mi bastava esprimere il
concetto.

 Una variabile occupa sempre lo stesso
 spazio ma, per motivi di accesso alla memoria, a seconda del tipo di
 variabile c'è un allineamento che spreca qualche byte. 
Se una variabile occupa 2 byte ma viene allineata per multipli di 4 byte, è
vero che 2 byte sono solo qualche byte sprecato, ma sono sempre il doppio
di quello che servirebbe per memorizzare quella variabile su un sistema a
32bit. Poi il discorso è che la maggior parte delle variabili dei programmi
sono impacchettate in strutture, quindi solo la struttura viene allineata
ai 64 bit. Torno a dire: non mi interessava tanto calcolare l'effettivo
spreco di memoria, che pur non essendo il doppio è comunque tutt'altro che
trascurabile, mi bastava dare una spiegazione teorica (che fra l'altro è la
stessa che stai dando tu).

 Per i motivi esposti prima e anche a causa dell'architettura più nuova e
 dei compilatori che ottimizzano peggio, 
Questa posizione è interessante, ma servirebbe un po' di documentazione a
sostegno: l'architettura a 64 bit non è poi così nuova dal punto di vista
dei compilatori, soprattutto non lo è quando si parla di problematiche di
allineamento dei dati che sono sostanzialmente le stesse su tutte le
architetture a 64 bit. gcc compila software su sistemi a 64 bit almeno dal
lontano 1998 su Tru64 (forse anche da prima).

http://www.unixguide.net/compaq/faq/Alpha5.shtml

 *soprattutto se il programma non 
 è stato scritto tenendo presenti le richieste di allineamento in memoria
 dei dati* un sistema amd64 occupa più memoria, quanta, dipende dal
 programma.
Scusa la domanda che può sembrare stupida, ma cosa dovrebbe fare un
programma per tenere conto dell'allineamento dei dati? Facciamo di tutto
per scrivere programmi portabili e poi ci dobbiamo preoccupare di scrivere
le strutture in modo che occupino 2 bytes in meno sui sistemi a 64 bit?
Credo che qualsiasi programma ben scritto se ne freghi altamente
dell'allineamento e penso che sia giusto così, nella misura in cui questo
programma se lo possa permettere (ovvero non sia un driver di una
periferica). Coseguenza: la maggior parte dei software diffusi occupano
molta più ram su sistemi a 64 bit. Credo che la dimostrazione sia la prova
di fatta da Franco. Che poi la causa si chiami allineamento, o effettiva
dimensione delle variabili, o il mancato sbattimento dei programmatori ad
ottimizzare le strutture per i sistemi a 64 bit, poco importa, il fatto è
che un sistema a 64 bit occupa molta più RAM dello stesso sistema
ricompilato a 32 bit.

 Questa è l'unica spiegazione per il maggiore consumo.
Che come dicevo è sostanzialmente la stessa ho dato io, solo che la tua la
chiami allineamento mentre la mia la chiami panzana. Comunque mi sono
preso la briga di cercare benchmark a riguardo, se ne trovano pochi e non
particolarmente completi, uno è 

http://www.osnews.com/story/5768/Are_64-bit_Binaries_Really_Slower_than_32-bit_Binaries_/page1/

ma dicono sostanzialmente che:
1. se hai più di 4gb di ram conviene usare sistemi a 64bit
2. se devi macinare numeri conviene usare sistemi a 64bit
3. negli altri casi ci perdi circa da un 5% a un 20% in velocità e da un 20%
a un 50% in occupazione della RAM.

È vero che il 20% in più non è il doppio ed il 50% nemmeno, ma nessuno dei
due può essere liquidato come qualche byte in più. Abbiamo forse entrambi
scritto una panzana? :)

 Mentre 
 non è vero che i kernel a 64 bit sono ottimizzati per 4Gb o più di
 memoria a discapito delle configurazioni inferiori.
Questa infatti era una mia ipotesi e l'avevo anche scritto, che non sia
verificata può starci.

Lucio.
-- 
Virtual Bit di Lucio Crusca
via Isonzo, 5 - 10069 Villar Perosa (TO) - Italy
http://www.virtual-bit.com


-- 
Per REVOCARE l'iscrizione alla lista, inviare un email a 
[EMAIL PROTECTED] con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a [EMAIL PROTECTED]

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Quale kernel?

2008-05-01 Per discussione Federico Di Gregorio
Il giorno gio, 01/05/2008 alle 23.15 +0200, Lucio Crusca ha scritto:
 Federico Di Gregorio wrote:
 
  Questa è abbastanza una panzana. 
  [...]
  Falso.
  [...]
  Falso.
  
 Beh, può darsi che mi sbagli, anche se personalmente cercherei di essere un
 po' più gentile... è vero che la memoria necessaria non è il doppio, ma m
 premeva spiegare il perché un sistema a 64 bit è sostanzialmente peggio di
 un sistema a 32 bit a meno che non ci sia una buona ragione per usarlo,
 visto che Franco sembrava stupito di questo fatto. Non sono stato a mettere
 le cifre esatte, che peraltro non conosco, ma mi bastava esprimere il
 concetto.

Facciamo così. Quando non farai più affermazioni palesemente false, io
sarò più gentile. (Scherzo, e se l'hai patito molto chiedo scusa per
panzana). Insomma, hai detto:

Il principale motivo è che con un kernel a 64 bit ogni variabile
occupa in RAM 64 bit invece di 32, quindi con un kernel a 64 bit
è come avere la metà della RAM rispetto allo stesso kernel a 32
bit.

che, appunto, è palesemnte falso perché non è vero che le variabili
occupano sempre 32 bit in memoria e soprattutto non è vero che su di un
sistema a 64 bit ne occupano automaticamente il doppio.

Sul concetto generale (su sistemi a 64 bit va via più memoria) ti ho
comunque dato ragione.

  Una variabile occupa sempre lo stesso
  spazio ma, per motivi di accesso alla memoria, a seconda del tipo di
  variabile c'è un allineamento che spreca qualche byte. 
 Se una variabile occupa 2 byte ma viene allineata per multipli di 4 byte, è
 vero che 2 byte sono solo qualche byte sprecato, ma sono sempre il doppio
 di quello che servirebbe per memorizzare quella variabile su un sistema a
 32bit. 

Questo (i problemi di allineamento) vale _anche_ su sistemi a 32bit. 

 Poi il discorso è che la maggior parte delle variabili dei programmi
 sono impacchettate in strutture, quindi solo la struttura viene allineata
 ai 64 bit.

Esatto. Poi c'è il problema della dimensione dei puntatori, etc. 

 Torno a dire: non mi interessava tanto calcolare l'effettivo
 spreco di memoria, che pur non essendo il doppio è comunque tutt'altro che
 trascurabile, mi bastava dare una spiegazione teorica (che fra l'altro è la
 stessa che stai dando tu).

Il problema è che invece l'hai dato come un dato certo (consuma il
doppio!); se tu avessi scritto nell'email precedente quello che hai
scritto qui mica ti avrei corretto.

 Scusa la domanda che può sembrare stupida, ma cosa dovrebbe fare un
 programma per tenere conto dell'allineamento dei dati? Facciamo di tutto
 per scrivere programmi portabili e poi ci dobbiamo preoccupare di scrivere
 le strutture in modo che occupino 2 bytes in meno sui sistemi a 64 bit?

Dipende da quante di quelle strutture usi. Se il tuo programma ne crea e
distrugge centinaia di migliaia sarebbe il caso di farci attenzione si.
Non solo per l'uso di memoria ma anche per la velocità (a volte 1 byte
di differenza fa si che una struttura dati non stia tutta in una cache
line con notevole peggioramento delle prestazioni).Per esempio:

int  a
int* b
int  c

è peggio di

int  c
int  a
int* b

Il problema è che su di un sistema a 32 bit le due strutture sono
assolutamente identiche mentre su di un 64 bit no. Ovviamente buona
parte del software che usiamo è stata scritta prima dell'avvento di
amd64 e quindi.. *burp* buona digestione.

 Credo che qualsiasi programma ben scritto se ne freghi altamente
 dell'allineamento e penso che sia giusto così, nella misura in cui questo
 programma se lo possa permettere (ovvero non sia un driver di una
 periferica). Coseguenza: la maggior parte dei software diffusi occupano
 molta più ram su sistemi a 64 bit. Credo che la dimostrazione sia la prova
 di fatta da Franco. Che poi la causa si chiami allineamento, o effettiva
 dimensione delle variabili, o il mancato sbattimento dei programmatori ad
 ottimizzare le strutture per i sistemi a 64 bit, poco importa, il fatto è
 che un sistema a 64 bit occupa molta più RAM dello stesso sistema
 ricompilato a 32 bit.

Molta andrebbe definito, comunque in senso generico ti do ragione.

  Questa è l'unica spiegazione per il maggiore consumo.
 Che come dicevo è sostanzialmente la stessa ho dato io, solo che la tua la
 chiami allineamento mentre la mia la chiami panzana. Comunque mi sono

No. Leggi sopra la tua frase esatta che ho riportato ed alla quale
panzana era riferito.

 preso la briga di cercare benchmark a riguardo, se ne trovano pochi e non
 particolarmente completi, uno è 
 
 http://www.osnews.com/story/5768/Are_64-bit_Binaries_Really_Slower_than_32-bit_Binaries_/page1/
 
 ma dicono sostanzialmente che:
 1. se hai più di 4gb di ram conviene usare sistemi a 64bit
 2. se devi macinare numeri conviene usare sistemi a 64bit
 3. negli altri casi ci perdi circa da un 5% a un 20% in velocità e da un 20%
 a un 50% in occupazione della RAM.

L'unico applicativo che è nettamente più veloce è openssl. MySQL varia a
seconda dell'operazione 

Re: Quale kernel?

2008-04-30 Per discussione Premoli, Roberto
 

Ora, non sono sicuro che il problema sia il kernel, ma volendo provare a 
tornare ad un kernel 686, e non essendoci più quelli della serie k7, che mi 
consigliate di 
provare?

2.4.24 per 486 oppure 2.4.24 per 686. Un amico con un (mi pare) athlon li ha 
installati entrambi e gli funzionano correttamente.


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
[EMAIL PROTECTED] con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a [EMAIL PROTECTED]

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Quale kernel?

2008-04-30 Per discussione Franco Vite
Alle 10:00 di mercoledì 30 aprile 2008, Premoli, Roberto ha scritto:
 Ora, non sono sicuro che il problema sia il kernel, ma volendo
  provare a tornare ad un kernel 686, e non essendoci più quelli
  della serie k7, che mi consigliate di provare?

 2.4.24 per 486 oppure 2.4.24 per 686. Un amico con un (mi pare)
 athlon li ha installati entrambi e gli funzionano correttamente.

Impressionante!

Ho installato il 2.6.25-686, ho ravviato la macchina e:

 total   used   free
[...]

Swap:  442  0442

Prima, coi kernel amd64, quando andava bene stavo sui 200 Mb di swap 
occupata.

Come mai questo cambiamento veramente rilevante, secondo voi?

PS
Cmq grazie :-)

-- 
Franco
ancora un giorno passa a caccia di denaro / non rido a essere trattato
come schiavo / il mio vestito è nuovo / ma resto il bastardo che ero 
senso dello stato uguale zero  -  Assalti  Frontali,  Banditi,  1996


signature.asc
Description: This is a digitally signed message part.


Re: Quale kernel?

2008-04-30 Per discussione Giorgio Bompiani

Franco Vite ha scritto:

Ciao a tutt*,

sulla mia macchina amd64 (AMD Sempron(tm) Processor 2600+) ho da sempre 
installato debian i386.


  

...
Ora, non sono sicuro che il problema sia il kernel, ma volendo provare a 
tornare ad un kernel 686, e non essendoci più quelli della serie k7, 
che mi consigliate di provare?


  

Io ho un AMD64 e funziono abbastanza bene con 2.6.22-3-amd64, però .
mi trovo spesso che non riesco ad installare qualche cosa o qualche 
driver perché esiste solo la versione a 32 ed ho alcune stranezze nella 
gestione dell'audio, ma forse i problemi vengono dal fatto che l'hrdware 
è molto recente e col tempo si sistemeranno. Forse installando il kernel 
a 32 sarei andato meglio, ma non ho voglia di rifare tutto da capo.


--
Giorgio Bompiani

Gli scaffali dei miei libri sono qui:

http://giorgiobompiani.netsons.org

Linux User # 454514 http://counter.li.org/


--
Per REVOCARE l'iscrizione alla lista, inviare un email a 
[EMAIL PROTECTED] con oggetto unsubscribe. Per

problemi inviare un email in INGLESE a [EMAIL PROTECTED]

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]