tmpfs: ramdisk perfetta

Ottobre 13, 2008

Sto usando con soddisfazione tmpfs per montare nella RAM la partizione /tmp, in /etc/fstab ho inserito questa stringa

none /tmp tmpfs mode=1777 0 0

In questa maniera la dimensione massima che si può prendere la partizione virtuale della /tmp è la metà esatta della ram a disposizione, oppure per mettere un limite massimo basta impostarlo con size, per esempio per dare 500MB massimi a /tmp.

none /tmp tmpfs size=500m,mode=1777 0 0

Più facile a farsi che a dirsi, non ha molte altre opzioni, vedere man mount per migliori informazioni.

Ci sono altre alternative a usare tmpfs (ramfs o /dev/ram) ma queste sono le sue peculiarità:

  1. non si prende la metà della ram, il limite massimo è solo il limite massimo, se state usando 50MB di /tmp questa sarà la dimensione che prenderà in ram la partizione. Il limite massimo è quello che mettete voi.
  2. Ha più opzioni delle altre alternative.
  3. swappa, all’occorrenza usa la swap. Anche se non dovrebbe, perché abbiamo abbastanza ram e abbiamo configurato i programmi che sfruttano enormemente tmp di mettere i loro file altrove, se superiamo il size massimo usa la swap, tradotto non vi manda in freeze il sistema. EDIT: ho notato che l’uso della ram è prioritario rispetto a quello della partizione virtuale, il sistema swappa se la ram è piena (compresa la cache) mettendo quello che non ci sta più su /tmp in swap. Poco male, questo si verifica raramente

    $ free -h
    total used free shared buffers cached
    Mem: 2026 1969 56 0 31 1698
    -/+ buffers/cache: 240 1786
    Swap: 2047 8 2038

    [...]

    $ df -h
    Filesystem Dimens. Usati Disp. Uso% Montato su
    /dev/sda3 11G 4,6G 5,0G 48% /
    /dev/sdb1 457G 214G 221G 50% /home
    none 1014M 14M 1000M 2% /tmp
    none 200M 0 200M 0% /dev/shm
    /dev/sda6 2,0G 790M 1,2G 41% /var/cache/pacman
    /dev/sda8 137G 7,7G 122G 6% /mnt/FilmOriginali

Essendo la RAM una memoria volatile non occorre cancellare ad ogni avvio i file al suo interno, quindi si può tranquillamente editare

/etc/rc.sysinit

commentando la seguente riga (idea di el_cammello)

/bin/rm -rf /tmp/* /tmp/.* &>/dev/null

Fatto questo ho perfino spostato la Cache di firefox in /tmp, basta andare all’indirizzo about:config, creare una nuovo parametro Stringa

browser.cache.disk.parent_directory

e come parametro (prendo la mia configurazione come esempio)

/tmp/firefox-ugaciaka

Non serve creare la directory firefox-ugaciaka, viene creata da firefox ogni volta automaticamente.

Visto che ci siamo diminuiamo il tempo che firefox aspetta prima di incominciare a caricare una pagina, basta creare un nuovo valore intero

nglayout.initialpaint.delay

e impostarlo a 0. Ce lo possiamo permettere dato che non ha senso aspettare 250 ms, valore standard, per caricare una pagina avendo una connessione ADSL con la cache del browser in RAM

Ma perché fare tutto questo casino?

  1. la ram è più veloce nelle operazioni rispetto a un HD,
  2. non bollite l’HD,
  3. non dovete creare una tmp apposita se non volete avere la tmp nella root (/)
  4. consuma meno energia, aspetto fondamentale per i portatili!

Maggiori informazioni qui e qui

19 Risposte a “tmpfs: ramdisk perfetta”

  1. Emanuele Dice:

    Corro a rimontare la mia /tmp sulla ram… tanto sul portatile ne tengo un giga di ram!
    Anche troppa, mi sa che non l’ho mai utilizzata tutta, apparte quando ho tentato di parsare un file xml da 28 megabyte (portatile in ginocchio -.-”)…

    Bel post ;-)

    Emanuele

  2. el_cammello Dice:

    Ciao, ho scoperto tmpfs grazie a un tuo post sul forum di archlinux (non si smette mai di imparare), e googolando per saperne di più ti ho ritrovato :-D :-D Ottima guida complimenti

  3. ugaciaka Dice:

    grazie

    peccato però che non riesca a capire cosa altro mettere in tmpfs, ho scritto un post sul forum di archlinux per sentire varie opinioni…


  4. [...] più letti Velocizzare navigazione Internettmpfs: ramdisk perfettaThunar, file manager daemonLXDEArchlinux, kernel 2.6.28 ed ext4custom Kernel e webcam (UVC, [...]


  5. [...] by marinz on March 20, 2009 Qui trovate tutte le [...]

  6. Andrea Dice:

    Ciao. Grande pensata questa.
    Però ho provato a mettere anche la cache di firefox nella ram, ma ho un dubbio: quando uso il browser l’HD lavora come ha sempre fatto. È normale o forse ho sbagliato qualcosa?

    • ugaciaka Dice:

      beh ovvio che l’HD lavori, il binario di firefox è sempre nell’HD…ma mettendo la cache in ram lavora meno

  7. marinz Dice:

    Metto qui questo comandino:

    sudo mount -t tmpfs -o size=900M tmpfs /media/temp

    così quando serve copio e incollo :-)


  8. [...] più letti Velocizzare navigazione Internetcustom Kernel e webcam (UVC, uvcvideo)tmpfs: ramdisk perfettaLXDEA me Paolo Attivissimole candidature: vale più un pelo di figa…unison vs rsyncCon la [...]

  9. ntia89 Dice:

    ci avevi pensato a fare questo: “/var/run and /var/lock can be tmpfs filesystems, to alleviate having to clean them up at each reboot.”

    • marinz Dice:

      grazie ho fatto la modifica nell’fstab :-)

      Comunque non so se è stato un caso che riguarda la mia configurazione, ma mettendoli in ram non mi è più partito hal e quindi al boot sono rimasto senza tastiera e mouse, cmq ho risolto facilmente xke ho sysrescuecd comodo in grub :-p .. in pratica adesso devo specificare in DAEMONS anche “dbus” prima di “hal”, altrimenti hal non parte, mi dice che esiste già un file pid in /var.. il perchè non lo so, visto che hal dovrebbe già chiamarlo automaticamente

    • ugaciaka Dice:

      # ntia89
      sì ma non mi fidavo :-D

  10. ntia89 Dice:

    “mode=1777″ nelle opzioni che cosa fa ???

    • ugaciaka Dice:

      imposti i permessi e per /tmp chiunque può scrivere e leggere, man 8 mount

      • ntia89 Dice:

        e se non lo metto cosa succede?
        dovrebbe creare problemi solo in multi user? noo?!?

  11. ugaciaka Dice:

    quelli sono anche i permessi standard della directory /tmp, visto i permessi li ho settati così di conseguenza per tmpfs ^^

  12. said Dice:

    a me non swappa.. ad esempio quando compilo firefox lo spazio non è sufficiente ed interrompe la compilazione

    • ugaciaka Dice:

      uhm, a me non è mai successo..

    • marinz Dice:

      quando monti in memoria devi specificare una dimensione maggiore della memoria che possiedi, es: se hai 1 gb di ram e 512 di swap, prova a specificare size=1500M


Lascia un commento