mercoledì 4 ottobre 2006

Cosa manca a linux

Chi mi conosce sa che amo i sistemi unix, ma non è sempre stato così. In tempi bui ho utilizzato pure io Windows, e qualche volta sono stato costretto a emularlo via vmware su linux. Rimango comunque fedele al mio Os preferito (linux).
Ultimamente invece, dato che vorrei comperare un'altra macchina (un Mac), ho installato in una partizione di 5 gb Windows Xp Home sul mio notebook, per mostrare il mio portatile ad eventuali acquirenti.

Ho notato subito una cosa che ha windows rispetto a linux: un buon meccanismo di prefetching / prelinking.

Per farmi capire, se lancio Internet Explorer sotto Windows questo si avvierà in una frazione di secondo, mentre se avvio Firefox su linux, questo ci impiegherà una media di 5 secondi per il primo load. Le cose peggiorano enormemente con i pacchetti office. Microsoft Word, nonostante sia pachidermico quanto OpenOffice Writer, carica in pochi secondi, mentre il suo concorrente open ce ne mette più di 10.
Il problema non è la qualità del software che gira sotto linux, ma come viene caricato.

Per poter caricare velocemente, Internet Explorer viene più volte istanziato all'avvio, così come tutte le librerie. Ora questo sistema esiste in forma non prettamente automatica sotto linux. Ci sono script come "prelink" che velocizzano il tutto, ma sono poche le distribuzioni che lo implementano di default (credo suse e forse RHE). Ho provato questo script all'avvio, insieme ad altri trucchetti (tra cui creare uno script che copia gli eseguibili più usati su /dev/zero, in modo tale che vengano messi pure in cache), ma il risultato è rimasto lontano da quello sperato.

Speriamo che si ponga più attenzione anche a questo fattore nello sviluppo delle distibuzioni, se si desidera portare linux su tutti i pc del mondo (sto sognando, ma serebbe bello).

Ciao Piero

4 commenti:

  1. Bah! Il fatto che IE parta velocemente dipende dal fatto che le sue librerie sono incestuosamente commiste al codice del sistema operativo. Con tutti i problemi di sicurezza che ne derivano! No grazie, preferisco aspettare qualche secondo per fare partire Firefox.

    E per il resto, Linux è imbattibile per la gestione delle cache del disco. Fai partire Firefox la seconda volta su Linux, e partirà all'istante, perché tutto il suo binario sarà già presente nella buffer cache, ovvero in ram.

    Su Windows invece ci mette quasi lo stesso tempo a partire la seconda volta; anche se c'è abbondanza di ram.

    RispondiElimina
  2. Come esprimere in modo più elegante quanto già fatto da Matteo?

    A parte questo, due cose che decisamente _non_ funzionano sotto Windows sono la buffer cache e la virtual memory (strettamente collegate, ok).
    Provate ad usare Win2k/xp in modalità "sottoram" e poi sappiatemi dire. Ripetere l'esperimento con Linux (magari non con la red-hat-enterprais-con-tutti-i-demoni-caricati) e poi concludete...

    -- M

    RispondiElimina
  3. Ovviamente concordo con entrambi (come non potrei?)
    Linux è e rimane imbattibile nella gestione di ram,vm e buffer cache, ma si potrebbe andare ben oltre a questo!
    Per esempio qualche demone in linux potrebbe tener traccia delle librerie più utilizzare, per poi generare una sorta di lista delle librerie preferite da caricare all'avvio.
    Oppure si potrebbe, in linea teorica, salvare la buffer cache su disco, per poi ripristinarla all'avvio (come una sotta di ibernazione parziale).
    Non so quanto possa essere implementabile una cosa del genere ma potrebbe essere un'idea per migliorare i tempi di avvio delle applicazioni...

    Nel post mi riferivo ad ogni modo ad una versione di windows appena instalata... dopo le prestazioni come ben sappiamo decadono inequivocabilmente...

    RispondiElimina
  4. Vero. Il progetto gnome ha investito parecchio in quanto stai dicendo, e sulle ml (e.g. linux kernel) si sprecano i post a riguardo.

    Come direbbe Tanenbaum la guerra del "fallo presto" e "fallo bene" andrà avanti senza fine, così come quella del "fallo veloce" e "fallo bene". Il problema qui è trovare una soluzione elegante, che non capovolga i layer di astrazione e che non introduca problematiche di security.

    Preferisco un sistema piccolo e semplice, magari più lento, ma più stabile e sicuro :)

    My .02

    -- Moreno

    RispondiElimina