Entra

View Full Version : Linux e Ram


DjLode
05-10-2002, 20:39
Ho 128mb di ram sul portatile, non un'enormità ma manco una schifezza. Win Xp ci gira discretamente per l'uso che ne devo fare. Linux ha da sempre posto nella seconda partizione, ma praticamente tutte le distro che ho provato si mangiano la ram a colazione. Cosa voglio dire? Ci installo sopra una distro a caso (Mandrake, Red Hat, Debian) al prompt digito free e già ho tanta ram pappata come quando sono dentro ad Xp.
Faccio partire KDE 3 (ma è uguale anche con il 2, Gnome 2 e parenti stretti o meno) e magia delle magie, 3 mb liberi circa.
Ovviamente facendo partire un paio di prg o qualcuno in più il portatile arriva a soffrire tremendamente.
Ora premettendo che non ho voglia di ricompilarmi il kernel (sono pigro :)), esiste qualche modo di salvare un pò di ram? Ora come ora ho la MDK 9 installata, cosa posso levare e magari non far partire automaticamente al boot?
Mi bastano anche una 10ina di mb, quello che viene in più non lo butto di certo via.

gokan
05-10-2002, 20:51
E' vero che kde e gnome sono pesantucci..ma che con 128 MB ti vanno lenti è troppo;)
Hai provato a fare installazioni più leggerine (anche in termini di programmi installat), le distro di oggi hanno centinaia di programmi che magari una persona non usa mai...quindi per prima cosa fai una installazione ad hoc selezionandoti solo quello che ti serve.
Altra cosa che puoi fare è usare un'interfaccia grafica + leggera (window maker).
Puoi vedere di eliminare alcuni servizi di avvio inutili (tipo sendmail, anacron...insomma quelli inutili)

P.S
Hai mai provato a fare un'installazione di redhat laptop....io no (provaci:D)

alexmaz
05-10-2002, 21:07
da root da un bel ps aux e gurda quanti processi hai attivi... magari posta l'elenco... io sul pc che fa da router ho su slackware 8.1 e mi occupa, senza X attivo, ben 33MB :D

root@slack:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 416 212 ? S 10:54 0:05 init [3]
root 2 0.0 0.0 0 0 ? SW 10:54 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SWN 10:54 0:02 [ksoftirqd_CPU0]
root 4 0.0 0.0 0 0 ? SWN 10:54 0:00 [ksoftirqd_CPU1]
root 5 0.0 0.0 0 0 ? SW 10:54 0:00 [kswapd]
root 6 0.0 0.0 0 0 ? SW 10:54 0:00 [bdflush]
root 7 0.0 0.0 0 0 ? SW 10:54 0:00 [kupdated]
root 8 0.0 0.0 0 0 ? SW 10:54 0:00 [khubd]
root 10 0.0 0.0 0 0 ? SW 10:54 0:00 [kjournald]
root 20 0.0 0.0 0 0 ? SW 10:54 0:00 [kjournald]
root 21 0.0 0.0 0 0 ? SW 10:54 0:00 [kjournald]
root 65 0.0 0.0 0 0 ? SW 10:55 0:00 [eth1]
root 67 0.0 0.0 0 0 ? SW 10:55 0:00 [eth0]
root 68 0.0 0.1 1240 500 ? S 10:55 0:00 /sbin/dhcpcd -t 20
root 70 0.0 0.3 1784 788 ? S 10:55 0:00 /usr/sbin/syslogd
root 73 0.0 0.4 1820 1104 ? S 10:55 0:00 /usr/sbin/klogd -c 3
root 75 0.0 0.2 1756 724 ? S 10:55 0:00 /usr/sbin/inetd
root 78 0.0 0.4 2624 1232 ? S 10:55 0:00 /usr/sbin/sshd
root 81 0.0 1.3 5228 3500 ? S 10:55 0:02 /usr/sbin/named
root 143 0.0 0.2 1356 584 ? S 10:55 0:00 /usr/sbin/crond -l10
daemon 145 0.0 0.2 1356 648 ? S 10:55 0:00 /usr/sbin/atd -b 15 -l 1
root 159 0.0 0.1 1220 504 tty1 S 10:55 0:00 /sbin/agetty 38400 tty1 linux
root 160 0.0 0.1 1220 504 tty2 S 10:55 0:00 /sbin/agetty 38400 tty2 linux
root 161 0.0 0.1 1220 504 tty3 S 10:55 0:00 /sbin/agetty 38400 tty3 linux
root 162 0.0 0.1 1220 504 tty4 S 10:55 0:00 /sbin/agetty 38400 tty4 linux
root 163 0.0 0.1 1220 504 tty5 S 10:55 0:00 /sbin/agetty 38400 tty5 linux
root 164 0.0 0.1 1220 504 tty6 S 10:55 0:00 /sbin/agetty 38400 tty6 linux
root 182 0.1 0.6 2716 1596 ? R 22:12 0:00 /usr/sbin/sshd
root 183 0.0 0.4 2004 1208 pts/0 S 22:12 0:00 -bash
root 199 0.0 0.3 2548 820 pts/0 R 22:14 0:00 ps aux


root@slack:~# free
total used free shared buffers cached
Mem: 256260 33284 222976 0 3848 20100
-/+ buffers/cache: 9336 246924
Swap: 361452 0 361452




:D :D

DjLode
05-10-2002, 22:41
Ho provato ad usare un' interfaccia più leggera, ma dobbiamo ammettere che siamo sullo scarsino se si esclude KDE e Gnome (e Gnome non mi piace, ma questo è un'altra storia, ecco perchè scelgo kde). Cmq la cosa migliore ma non un esagerazione.
Processi inutili ne ho tolti (considerando che è un desktop, in pratica tutti i server e qualunque cosa abbia a che fare con mail o roba simile.
Avevo provato tempo fa un'installazione laptop di red hat, ma premettendo che red hat non mi piace molto (gusti), lasciava perdere un sacco di cose che mi interessavano, così preferivo fare un installazione normale e poi scegliermi i pacchetti (cosa che faccio anche con MDK).
Ho anche installato Debian 3.0 (sudano un pò, senza connessione ad internet risolvere un problema da solo è un pò un casino ma con pazienza ci si riesce), ma appena si fa partire il kde, pure questa va a banane.
Quando riavvio il pc mi copio/incollo il risultato di ps -aux, ora sto postando da win (winmodem uff....), così magari mi sapete dire.
Ho provato a guardare con top (ordinando i processi per occupazione di ram) cosa magari occupava tanto ma il processo (che non ricordo) che ne occupava di più (x escluso) ne occupava lo 0.7%.

DjLode
05-10-2002, 23:13
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 1.3 0.3 1288 484 ? S 23:49 0:07 init
root 2 0.0 0.0 0 0 ? SW 23:49 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SW 23:49 0:00 [kapmd]
root 4 0.0 0.0 0 0 ? SWN 23:49 0:00 [ksoftirqd_CPU0]
root 5 0.0 0.0 0 0 ? SW 23:49 0:00 [kswapd]
root 6 0.0 0.0 0 0 ? SW 23:49 0:00 [bdflush]
root 7 0.0 0.0 0 0 ? SW 23:49 0:00 [kupdated]
root 8 0.0 0.0 0 0 ? SW< 23:49 0:00 [mdrecoveryd]
root 12 0.0 0.0 0 0 ? SW 23:49 0:00 [kjournald]
root 107 0.0 0.7 1700 960 ? S 23:49 0:00 devfsd /dev
root 203 0.0 0.0 0 0 ? SW 23:49 0:00 [khubd]
rpc 816 0.0 0.4 1416 532 ? S 23:50 0:00 portmap
root 832 0.0 0.4 1360 620 ? S 23:50 0:00 syslogd -m 0
root 840 0.0 0.8 1856 1064 ? S 23:50 0:00 klogd -2
rpcuser 889 0.0 0.5 1500 744 ? S 23:50 0:00 rpc.statd
root 906 0.0 0.3 1336 496 ? S 23:50 0:00 gpm -t ps/2 -m /d
xfs 1074 0.0 2.8 5048 3604 ? S 23:50 0:00 xfs -port -1 -dae
root 1130 0.0 0.3 1268 476 ? S 23:50 0:00 /usr/sbin/apmd -p
daemon 1148 0.0 0.3 1312 504 ? S 23:50 0:00 /usr/sbin/atd
root 1171 0.0 0.3 1500 492 ? S 23:50 0:00 saslauthd -a pam
root 1211 0.0 0.7 2068 948 ? S 23:50 0:00 xinetd -stayalive
root 1242 0.0 1.4 4980 1876 ? S 23:50 0:00 cupsd
root 1490 0.0 0.9 3788 1228 ? S 23:50 0:00 /usr/lib/postfix/
postfix 1506 0.0 1.0 3888 1304 ? S 23:50 0:00 pickup -l -t fifo
postfix 1507 0.0 1.0 3936 1344 ? S 23:50 0:00 nqmgr -l -n qmgr
root 1530 0.0 0.4 1484 624 ? S 23:50 0:00 crond
root 1556 0.0 0.8 2476 1064 ? S 23:50 0:00 /usr/bin/lisa -c
root 1684 0.0 0.8 2248 1060 ? S 23:50 0:00 login -- root
root 1685 0.0 0.9 2280 1224 ? S 23:50 0:00 login -- djlode
root 1686 0.0 0.3 1248 412 tty3 S 23:50 0:00 /sbin/mingetty tt
root 1687 0.0 0.3 1248 412 tty4 S 23:50 0:00 /sbin/mingetty tt
root 1688 0.0 0.3 1248 412 tty5 S 23:50 0:00 /sbin/mingetty tt
root 1689 0.0 0.3 1248 412 tty6 S 23:50 0:00 /sbin/mingetty tt
root 1738 0.1 1.3 2740 1660 tty1 S 23:50 0:00 -bash
djlode 1972 1.2 1.2 2732 1624 vc/2 S 23:58 0:00 -bash
djlode 2006 0.0 0.5 2496 680 vc/2 R 23:58 0:00 ps aux


total used free shared buffers cached
Mem: 127288 98172 29116 0 7952 71348
-/+ buffers/cache: 18872 108416
Swap: 281096 0 281096

qweasdzxc
05-10-2002, 23:16
18 mega usati? non mi pare la fine del mondo...

DjLode
05-10-2002, 23:26
Ehm..... la riga sopra. 98mb :)

qweasdzxc
05-10-2002, 23:27
ma la riga sopra non include anche la cache del disco? perche allora mi pare strano che il mio gnome usi 350 mega di ram eh...

DjLode
05-10-2002, 23:35
Avevo letto anche io qualcosa a riguardo, solo che effettivamente avendo un pò di ram libera mi sembra che i prg rispondano meglio, quando invece arrivo ad avere pochi mb liberi, è un dramma.
Tengo a precisare che quello di cui sopra è senza X attivo, appena dopo il login mi segnava 40mb occupati (dove alexmaz ne ha 33, quindi non mi sarei lamentato), scanchero un pò, ps di qua e un rpm di là e mi trovo con 98mb occupati.
Cmq nella pappardella c'è qualche servizio o demone che si può levare senza paura?

qweasdzxc
05-10-2002, 23:56
alexmarz 33 ce li ha senza x presumo. in ogni caso anche da lui vedo 9 mega occupati, non 33.
9+20 mega cached sono "circa" quei 33 che si vedono. lo stesso da te. se vedi 96 mega occupati dopo avere aperto un po di file, e perche la ram viene usata come cache del disco, tutta, fino all'ultimo bit libero, non perche siano partiti programmi che invadono la ram e non la rilasciano.

DjLode
06-10-2002, 00:10
Non esiste un modo per limitarla?

qweasdzxc
06-10-2002, 00:11
scommetto di si, ma perche mai dovresti limitarla? a che ti serve avere ram non utilizzata?

DjLode
06-10-2002, 00:18
Ferma, io voglio limitare la cache del disco così da avere ram libera pronta all'uso e non ram sporca da svuotare prima di essere usata.

qweasdzxc
06-10-2002, 02:53
Originariamente inviato da DjLode
[B]Ferma, io voglio limitare la cache del disco così da avere ram libera pronta all'uso e non ram sporca da svuotare prima di essere usata.

guarda che il tempo di svuotamento di quella ram e praticamente NULLO. non per niente si chiama Random Access Memory, viene semplicemente sovrascritta. non e ram occupata, che per avere piu memoria libera deve venire paginata, viene usata e basta. limitare la cache del disco viceversa peggiora le prestazioni se devi riutilizzare un programma o qualcosa usato in precedenza e non lo trovi piu in cache.

Duncan
06-10-2002, 10:35
Originariamente inviato da DjLode
[B]Ferma, io voglio limitare la cache del disco così da avere ram libera pronta all'uso e non ram sporca da svuotare prima di essere usata.

Poi comunque dipende dalla gestione della nuova VM di linux, tende ad avere molta più roba in cache rispetto alla vecchia, in genere avendo anche prestazioni migliori... ;)

ilsensine
06-10-2002, 11:09
Originariamente inviato da DjLode

total used free shared buffers cached
Mem: 127288 98172 29116 0 7952 71348
[B]-/+ buffers/cache: 18872 108416[/B]
Swap: 281096 0 281096

Situazione direi "ottima". Considerando che la memoria in cache può essere reclamata in qualsiasi momento a costo zero (e non si tratta di ram "sporca", al contrario!), hai più di 100mb liberi e circa 70 mb in cache.
Non vi fate ingannare da free; linux tiene in cache il più possibile, ed è uno dei suoi punti di forza. Inoltre free non mostra la memoria condivisa (il valore "shared" non è significativo con i kernel nuovi) e i diversi livelli di cache.

DjLode
06-10-2002, 13:33
Originariamente inviato da qweasdzxc
[B]

guarda che il tempo di svuotamento di quella ram e praticamente NULLO. non per niente si chiama Random Access Memory, viene semplicemente sovrascritta. non e ram occupata, che per avere piu memoria libera deve venire paginata, viene usata e basta. limitare la cache del disco viceversa peggiora le prestazioni se devi riutilizzare un programma o qualcosa usato in precedenza e non lo trovi piu in cache.

Veramente random access memory vuol dire che può accedere a qualsiasi cella di memoria allo stesso costo, ma se è occupata deve liberarla e il costo non è nullo. Che sia breve è un conto ma il costo nullo (lineare) c'è solo quando la ram è libera.
Cmq se dite che quella cosa è normale si vede che è questione di un convincimento mentale :)
Ripeto avevo letto di quella storia della cache del disco eccetera, solo che vedersi 1mb di ram libera, non è che rassicuri :)
Mi rimane solo l'ultima domanda, vedete qualche processo inutile sopra? Ieri sera ne ho tolti un paio (devo ancora riavviare :) Spero non si siano creati casini), magari se ne leva qualcun'altro.
Ad esempio, mi carica Cups all'avvio, non c'è un modo di farlo avviare solo quando serve?

ilsensine
06-10-2002, 14:39
Originariamente inviato da DjLode
ma se è occupata deve liberarla e il costo non è nullo. Che sia breve è un conto ma il costo nullo (lineare) c'è solo quando la ram è libera.
Tieni conto che una pagina libera deve essere "mappata" (anche questo è un costo); una pagina occupata da memoria cache deve essere "rimappata" (costo quasi uguale, ma il caching è di enorme beneficio).

Ripeto avevo letto di quella storia della cache del disco eccetera, solo che vedersi 1mb di ram libera, non è che rassicuri :)
Io mi sentirei molto meno tranquillo vedendo solo 1 mb "occupato" ;)

Mi rimane solo l'ultima domanda, vedete qualche processo inutile sopra? Ieri sera ne ho tolti un paio (devo ancora riavviare :) Spero non si siano creati casini), magari se ne leva qualcun'altro.
Ad esempio, mi carica Cups all'avvio, non c'è un modo di farlo avviare solo quando serve?
Sfatiamo un luogo comune: sotto linux non è necessario uccidere tutti i processi ritenuti "inutili" per avere un aumento di prestazioni. Questo per vari motivi, che dipendono proprio da come è gestita la memoria; ne elenco alcuni:

- I processi fanno pesante uso di memoria condivisa (parametro "share" di top). In genere si tratta di librerie (libc, Qt ecc.) o della parte eseguibile del programma se questo è eseguito più volte (ad es. mingetty)

- Un processo "inattivo" va incontro al "page aging": ovvero, le pagine di memoria che usa, se non vengono accedute per diverso tempo, "invecchiano" e diventano candidate per lo swap. Il modo con cui lo swap di pagine "vecchie" avviene è molto interessante: le pagine vengono swappate in periodi di basso carico, ma rimangono anche in ram sotto forma di cache (una cache...dello swap!). Se la richiesta di memoria aumenta, la parte in ram viene riutilizzata come se fosse memoria libera; lo swap è già stato fatto in un periodo di "calma", senza quindi appesantire il sistema. Se il processo invece viene richiamato, la parte in ram viene riattivata come se lo swap non fosse mai avvenuto. Questo meccanismo molto interessante ha cominciato a funzionare solo nei kernel recenti (forse qualcuno si ricorderà dello "swapping impazzito" in cui si poteva incorrere con i primi kernel 2.4), ed è il motivo per cui sotto linux ram+swap <> totale memoria a disposizione.

- Eccezione alla regola precedente: la parte "eseguibile" di un programma (quello che c'è nel file eseguibile e nelle librerie condivise) può essere scartata e liberata senza neanche finire in swap (come nel caso di memoria in swap, la memoria è sempre _mappata_, ma non _allocata_), e può essere ricaricata dai file quando serve. Questo è uno dei motivi per cui aggiornare le glibc è molto pericoloso.

DjLode
11-10-2002, 14:44
Conosco come funziona il paging di Linux :)
Cmq la mia domanda era riferita solo a processi inutili (non li conosco tutti a memoria, ho levato qualcosa che non userò mai) non per liberare ram, ma perchè sono inutili.
Cmq ora come ora la sto limando (tempo permettendo) e sto installando/disinstallando vari prg.
Mi rimane una domanda, ma apro un altro thread :)