Re: Quale kernel?
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?
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?
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?
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?
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?
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?
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]