Svantaggi dell'utilizzo del precarico? Perché non è incluso per impostazione predefinita?


110

Vorrei sapere quali sono gli svantaggi dell'utilizzo preload? Se non ci fosse un aspetto negativo, preloadsarebbe abilitato per impostazione predefinita, quindi immagino che ce ne siano alcuni.

Ok, hai bisogno di un po 'più di RAM, ma la maggior parte delle persone ha molta più RAM di quella di Ubuntu, quindi quali sono gli svantaggi dell'utilizzo preload?


6
Grazie per la tua utile domanda. Voglio sapere, è un mito?
Saeed Zarinfam,

1
l'utilizzo della cpu e la batteria potrebbero essere uno svantaggio per alcuni ... bugs.launchpad.net/ubuntu/+source/preload/+bug/481861
Mateo

1
Bella domanda Alcune distribuzioni vengono caricate con il precarico, come il sistema operativo elementare (che è quello che eseguo sul mio laptop perché il galà è molto più veloce dell'unità di Ubuntu).

1
Solo un'ipotesi: uno dei motivi per non includerlo per impostazione predefinita è il fatto che non è utilizzabile su tutti i sistemi (i suoi requisiti hardware potrebbero essere diversi dai requisiti standard).
don.joey,

2
brainstorm.ubuntu.com/idea/1122 un post qui suggerisce che "funziona come un demone con privilegi di root". Quale potrebbe essere un problema di sicurezza, c'è anche questo brainstorming che desidera la sua inclusione predefinita brainstorm.ubuntu.com/idea/14092
Mateo

Risposte:


65

In poche parole, Preload non è per tutti. È fantastico se apri molte applicazioni o librerie. È dannoso se si caricano applicazioni o librerie solo occasionalmente. Userò due esempi dal mio effettivo utilizzo (e sì, uso il precarico).

Innanzitutto, Google Chrome. Ora un browser viene aperto solo una volta per avvio, forse due volte (per me, sono uno sviluppatore web). Chrome e le relative librerie rimangono in memoria perché lo utilizzo sempre. Anche quando chiudo tutte le finestre cromate è ancora sullo sfondo a fare le sue cose. Pertanto, tutti i montanti dedicati al possesso di una copia precaricata di Chrome sono uno spreco totale e totale. Non viene mai (o raramente) scaricato. Per l'utente medio questo vale per un gran numero di applicazioni. Quasi sempre un utente di Office aprirà la propria app di posta elettronica. Quindi i piccoli risparmi nei tempi di avvio sono completamente sprecati perché aprono l'app di posta elettronica solo una volta al giorno e la lasciano aperta.

Il secondo esempio è rake. Come sviluppatore di rubini che crede nei test, eseguo rake a TON. il rake viene eseguito, viene eseguito per un paio di secondi - minuti quindi esce. Il precarico mi aiuta ad accelerare il mio lavoro quotidiano perché carica il rake e le sue librerie necessarie (che possono essere molto estese) in anticipo. Quindi ci sono molte partenze e fermate alla corsa del rake. Ne vale la pena il ram extra usato per accelerare i 400 o 500 lanci di rake nell'arco di poche ore.

Pertanto, il motivo per cui non è abilitato per impostazione predefinita è perché la sua capacità di migliorare effettivamente le prestazioni si basa in gran parte sul modo in cui si utilizza il sistema. Per alcune persone sarà negativo e per altri positivo.

Infine, avere il precarico attivo, anche se non lo stai usando, consuma ram. Quindi, se non avvii frequentemente applicazioni, potresti effettivamente rendere l'intero sistema leggermente più lento non avendo quella ram disponibile per altri tipi di cache. Ricorda, anche se hai 32 concerti di ram Linux tenterà di usarne il più possibile per memorizzare nella cache i dati per rendere più veloce l'interazione. Usando il precarico riduci un po 'quella memoria libera. Anche se è solo un po 'piccolo, i 2 secondi che hai salvato avviando Chrome 1 volta potrebbero costarti 60 secondi durante il mese in cui rimane attivo.


1
Inoltre, l'utilizzo del precarico rallenta l'avvio. Più elementi sono precaricati, più tempo è necessario per avviare il sistema. Ora, immagina che tutto ciò che vuoi fare è avviare, scrivere una frase su un memo e chiudere subito dopo. Aspetterai persino di essere in grado di scrivere il memo, perché il tuo sistema sta precaricando le cose molto probabilmente non correlate a quell'attività. Quindi, in un certo senso, il precarico (in generale) è un'arma a doppio taglio.
F-3000,

1
Il precaricamento in realtà non funziona in questo modo ... Dà al kernel suggerimenti come "hey caricalo nella tua cache mentre sei lì, ne avrò presto bisogno" e il kernel lo fa. Quindi in realtà non sta usando la RAM come la descrivi. Potrebbero accadere due cose, tuttavia: il caricamento nella cache elimina le applicazioni che verranno utilizzate presto, il che si traduce in una breve attività di blocco e disco rigido quando si torna all'applicazione.
hurikhan77,

1
Secondo: se il precarico prevede un modello di utilizzo errato (il che potrebbe essere il caso se le applicazioni sono costantemente caricate), memorizza nella cache cose che verranno successivamente rimosse dalla RAM e, a sua volta, spinto la cache fuori dalla RAM che potresti avere uso migliore per. Ma alla fine "consuma" solo la RAM come fa la cache vfs - quindi in realtà è RAM scartabile e quindi "RAM libera" in un certo senso. Tuttavia, compete con la "cache normale" mentre scrivi.
hurikhan77,

1
Dati i coteyr e i richiami di @ hurikhan77 sopra, sei d'accordo sul fatto che Preload è un modo contro-efficace per aiutare a migliorare la velocità percepita sui desktop più vecchi, con poca RAM (~ 800 MB gratis all'avvio). FYI attivando Preload su scatole così rinnovate darà al gestore della memoria virtuale del kernel un sacco di lavoro per un piccolo miglioramento?
tuk0z,

2
@lliseil Se quegli 800 MB sono davvero RAM non allocata, il precarico può aiutare ... Ma probabilmente funziona meglio con più RAM. E a sua volta ciò significa che il precaricamento entrerà in conflitto con le applicazioni affamate di memoria che potresti iniziare in seguito. In questo caso può essere necessario ridurre lo swappiness, che probabilmente rende inutile il precarico non appena si utilizza troppa RAM.
hurikhan77,

21

Domanda posta dal procuratore Saeed Zarinfam il 5 settembre 2012:

Ciao a tutti, voglio sapere, è un mito? Il [precarico] migliora davvero le mie prestazioni? Quali sono gli svantaggi di usarlo? Ho un laptop con questa specifica (CPU Core i5, 4 GB di RAM, 128 GB SSD duro). Grazie mille.

  • Non è necessario precaricare se si dispone di un SSD
    • Questo perché gli SSD forniscono tempi di accesso casuale molto più veloci rispetto ai dischi rigidi, quindi i binari / dipendenze "pre-caricamento" in memoria sono uno spreco, IMO
    • Il rovescio della medaglia quindi è che il precarico sta "usando" memoria aggiuntiva senza fornire un beneficio tangibile.

20
Questo non copre la domanda del PO in quanto vi sono degli svantaggi nell'uso del precarico? Secondo, hai formulato un'opinione, fatto una dichiarazione sul "pre-caricamento" e poi introdotto "SSD" nell'equazione. A che punto avresti effettivamente risposto alla domanda?
Ringtail

12

Preload è un "demone readahead adattivo" che viene eseguito in background del sistema e osserva quali programmi si utilizzano più spesso, memorizzandoli nella cache per accelerare il tempo di caricamento delle applicazioni. Usando Preload, puoi mettere a buon fine la RAM inutilizzata e migliorare le prestazioni generali del tuo sistema desktop.

Non aspettarti di vedere subito un drastico cambiamento nelle prestazioni. Inoltre, se stai semplicemente aprendo / chiudendo le applicazioni ripetutamente, il tuo computer memorizzerà comunque quei file nella cache (questo è chiamato un carico "caldo"), quindi non vedrai alcuna differenza di velocità lì. Tuttavia, vedrai un miglioramento della velocità se, ad esempio, usi un programma in modo intermittente; questi programmi si avviano più velocemente che senza Preload.

Il precarico può fornire un notevole miglioramento nei tempi di avvio dell'applicazione; poiché la maggior parte delle macchine moderne ha una buona quantità di memoria da risparmiare, Preload mette a frutto questa RAM. 1

Detto questo, sembra che il precarico sia una grande utilità, e potrebbe esserlo.

Penso che il motivo non sia precaricato con il sistema operativo, è perché l'utente deve sapere esattamente cosa sta facendo e avere abbastanza esperienza per poterlo utilizzare e il sistema deve avere abbastanza RAM.

Su un aspetto più tecnico, il precaricamento funziona spostando i dati dal disco rigido alla RAM, il che rende la maggior parte del disco rigido in modalità di sospensione se non utilizzata, e quindi deve tornare indietro quando necessario. Quindi la rotazione su / giù dell'unità causerebbe il conteggio del ciclo di caricamento / scaricamento e il conteggio del tempo di accensione aumenterebbe e ciò ridurrebbe la durata dell'unità.

Abbiamo progettato e implementato il precarico, uno schema di prefetch adattivo basato su Markov che funziona su previsioni a livello di applicazione. Inoltre, il precarico viene implementato nello spazio utente e non modifica l'ambiente di runtime dell'applicazione in alcun senso. Questo è il primo lavoro a sperimentare il prefetch del file system a questo livello, per quanto ne sappiamo.

I nostri risultati sperimentali mostrano promettenti miglioramenti nei tempi di avvio dell'applicazione rispetto alle cache fredde e una percentuale di hit decente rispetto a un algoritmo di previsione ingenuo.

Tuttavia, trovarsi nello spazio utente introduce importanti ostacoli nel rendere il precarico una soluzione competitiva al problema dei tempi di avvio. In particolare, non disporre di informazioni complete sulle richieste di I / O delle applicazioni e la mancanza di forti canali di comunicazione con il sottosistema cache di pagina riduce drasticamente l'efficacia del precarico, specialmente in condizioni di memoria ristretta.

Un altro problema inerente al design del precarico è l'alta varianza e la bassa sicurezza di previsione causata dalla correlazione relativamente libera delle start-up dell'applicazione. Mentre costruiamo con successo un modello per tracciare le correlazioni delle applicazioni, il fatto che i lanci di applicazioni siano eventi molto rari rispetto alla scala temporale su cui lavorano i computer, uno schema di prefetching a livello di applicazione è condannato a consumare un'enorme memoria di prefetching praticamente in periodi di tempo infiniti. Questa memoria può essere utilizzata per migliorare il comportamento della cache a breve termine.

Infine, forniamo una serie di raccomandazioni per gli sviluppatori di sistema su come migliorare il tempo di avvio, il tempo di accesso e il tempo di avvio dell'applicazione senza ricorrere a un prefetcher integrato con il sottosistema cache nel kernel. Naturalmente, un prefetcher basato su file nel kernel può migliorare ulteriormente. 2

1 Fonte: techthrob

2 Fonte: Preload - An Adaptive Prefetching Daemon di Behdad Esfahbod - Una tesi presentata in conformità con i requisiti per il grado di Master of Science - Graduate Department of Computer Science - University of Toronto Copyright (c) 2006 di Behdad Esfahbod.


1
Grazie per la tua risposta, Mitch. Anche questi erano i miei pensieri. Soprattutto sui laptop il precarico potrebbe essere un problema. Tuttavia, mi piacerebbe trovare una fonte / discussione ufficiale sul perché il team di Ubuntu abbia deciso di non precaricare la spedizione.
Glutanimate,

9

Svantaggi? Non ce ne sono!

Migliori prestazioni nell'apertura di applicazioni da parte dell'utente. L'ho usato per anni sui miei sistemi così come "read-ahead" e non ho problemi. La pagina dei bug per il precarico non suggerisce alcun inconveniente.

Il precarico monitora le applicazioni eseguite dagli utenti e, analizzando questi dati, prevede quali applicazioni potrebbero essere eseguite dagli utenti e recupera quei binari e le loro dipendenze in memoria per tempi di avvio più rapidi.

Aumenta leggermente il tempo di avvio, tuttavia la velocità diminuisce il tempo di recupero delle applicazioni supera di gran lunga questo piccolo problema.

vedi articolo

Se usi costantemente app comuni come Firefox o Gimp , noterai alcuni tempi di caricamento notevolmente migliorati. Il precaricamento è un demone che funziona discretamente in background e non disturberà comunque il desktop. Gli utenti di Ubuntu possono installare il precarico con:

sudo apt-get install preload

risultati:

Grafico che mostra la differenza tra l'inizio normale e il precarico

arbitro


3
So che dose e ho letto diversi "HowTos" precaricati, ma da nessuna parte ho potuto leggere qualcosa sugli svantaggi. Se non ci fossero svantaggi, verrebbe spedito di default con molte distribuzioni Linux - ma per quanto ne so - non è così.
Paradiesstaub

1
Le prestazioni non sono diminuite , ma aumentate . Questo è il punto centrale dell'uso del precarico. Forse è solo un errore di battitura.
Marco,

2
Il tuo diagramma sembra fantastico ma manca di informazioni importanti. Si adatterebbe al 100% a una presentazione powerpoint di un addetto alle vendite, ma è un esempio di "cattive statistiche". Da dove vengono queste cifre? Quale protocollo è stato utilizzato per registrarli? Cos'è una singola istantanea? Quante macchine sono state coinvolte nel campione? Qual era l'hardware? Come è stato configurato il programma di precarico?

1
@Ringtail: hai ragione. Non sei l'autore di quel diagramma. Ma se fai clic su tutti i collegamenti negli articoli, vieni su una pagina Techthrob.com che avrebbe dovuto ospitare un articolo scritto dall'autore del programma. Ma quella pagina è andata. Quindi c'è solo una fonte: la tesi dell'autore.

2
Si dovrebbe aggiornare l'hardware se un terminale di gnome impiega più di 2 secondi per avviarsi ...
Peter and the wolf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.