In che modo una partizione / file di scambio influirà sul sistema?


20

Alcuni amici mi hanno detto che i loro telefoni Android hanno pochissima memoria (<100 MB) disponibile per le app normali, perché il sistema operativo e alcuni servizi non killable occupano la maggior parte della RAM. Ad esempio, un telefono con 512 MB mostra solo 90 MB di memoria disponibile, quindi solo 2-3 app possono essere eseguite contemporaneamente.

Mi chiedo se la creazione di una partizione / file di swap possa aiutare, ma ho visto opinioni contrastanti su tutto il Web e non sono sicuro di cosa fare. Ecco le mie domande:

(1) Ci saranno molte pagine di memoria non usate di frequente da scambiare, specialmente nel sistema operativo e in quei servizi non killable?

(2) In che modo lo scambio di piccole pagine di memoria può danneggiare la durata della memoria flash? Il flash (o la scheda SD?) Esegue automaticamente il livellamento dell'usura?

(3) Lo scambio aiuterà davvero le prestazioni quando si eseguono più app? Suppongo che se la risposta a (1) è sì, lo sarà.

(4) La scrittura su Flash sarà troppo lenta e danneggerà quindi la reattività quando si verifica lo scambio?

(5) È vero che Android mantiene il meccanismo di scambio dal kernel di Linux, quindi finché c'è una partizione / file di scambio, lo farà senza la configurazione aggiuntiva?

Grazie per aver letto.

Risposte:


8

Non penso che ci saranno molti vantaggi con lo scambio per Android, poiché il ciclo di vita delle applicazioni Android è una forma molto più avanzata di scambio.

(1) Ci saranno molte pagine di memoria non usate di frequente da scambiare, specialmente nel sistema operativo e in quei servizi non killable?

Non è possibile scambiare il kernel del sistema operativo nemmeno in Desktop Linux e Android uccide già i servizi quando ha bisogno di più RAM. Se il fornitore del dispositivo persiste sulla necessità di disporre di servizi inutili sempre in esecuzione, eseguire il root del dispositivo.

(2) In che modo lo scambio di piccole pagine di memoria può danneggiare la durata della memoria flash? Il flash (o la scheda SD?) Esegue automaticamente il livellamento dell'usura?

Anche se la scheda SD livella l'usura, lo scambio farà molto male.

(3) Lo scambio aiuterà davvero le prestazioni quando si eseguono più app? Suppongo che se la risposta a (1) è sì, lo sarà.

Non nel contesto di Android. A differenza del sistema operativo tradizionale che continuerà a tentare di bloccare i processi come richiesto, Android forzerà a uccidere i processi più vecchi e inutilizzati e recupererà la loro memoria; questo omicidio è veloce in quanto le applicazioni salveranno già il loro stato quando si cambia attività.

(4) La scrittura su Flash sarà troppo lenta e danneggerà quindi la reattività quando si verifica lo scambio?

Probabilmente, probabilmente no. Avranno bisogno di benchmark per questo.

(5) È vero che Android mantiene il meccanismo di scambio dal kernel di Linux, quindi finché c'è una partizione / file di scambio, lo farà senza la configurazione aggiuntiva?

Non so se Android mantiene il meccanismo di scambio, ma anche se lo fa (o se compili il tuo kernel), avrai comunque bisogno di alcune configurazioni. Di solito ha solo un fstabfile che punta al file di scambio e lo fa swapon -a.

In effetti, ho delle ragioni per cui lo scambio può effettivamente danneggiare le prestazioni: impedisce al ciclo di vita delle applicazioni, lo schema di gestione della memoria di Android, di funzionare correttamente.


Grazie per la risposta. Ho ancora domande però. Su un Samsung Fascinate, 10 servizi non killable occupano circa 110 milioni di memoria. Esistono altri 22 servizi killable in esecuzione ma "Running Application" non mostra alcuna applicazione in esecuzione. È il telefono della mia amica e non sapevo esattamente cosa avesse fatto prima, ma sembra che sia possibile che molti servizi / app possano essere eseguiti contemporaneamente. Non credo che tutti questi servizi / app in background utilizzino tutte le pagine necessarie all'avvio. Inoltre, salvare lo stato dell'app + ricaricare e riavviare l'app + lo stato di ripristino sarebbe lento.
sempreverde,

Un altro modo di pensare a questo problema è questo: supponiamo che la durata della vita del flash non sia un problema, Android dovrebbe fare lo scambio? In caso contrario, qual è la differenza chiave tra app Android e app desktop che rende lo scambio non utile su Android? Non penso che Android Life Cycle funzioni per applicazioni desktop / server.
sempreverde,

@evergreen: lo stato dell'applicazione viene salvato quando l'applicazione passa in background (ad es. quando l'utente preme home per cambiare attività). Successivamente, quando alcune altre applicazioni necessitano di memoria, le applicazioni precedenti o i servizi in background verranno forzati (FK non richiede praticamente tempo). Ciò significa che l'uccisione delle attività è immediata, poiché lo stato dell'applicazione è già stato salvato molto tempo fa. Quando ricarichi un'applicazione che è già in memoria, otterrai il tempo di ricarica più veloce; ma se l'applicazione è già stata scaricata, l'applicazione deve eseguire il ricaricamento completo (che è la stessa situazione con lo scambio)
Lie Ryan,

@evergreen: se usi un task killer, forzerai lo scaricamento delle applicazioni e dovrai sempre ricaricare completamente, invece che ricaricare velocemente quando l'applicazione rimane in memoria. Se si utilizza un file / una partizione di swap, le applicazioni (precedenti) verranno sostituite e il ripristino richiederà quasi la stessa quantità di lavoro del caricamento completo. Tranne: con il ricaricamento completo, lo sviluppatore dell'applicazione ha separato i dati persistenti con i dati temporanei e può ottimizzare cosa salvare e cosa non migliorare l'archiviazione. Mentre ripristini lo swap, non lasci nulla allo sviluppatore dell'applicazione e cambi tutto.
Lie Ryan,

@evergreen: anche quando si presume che la durata del flash non sia un problema, Android non dovrebbe effettuare lo scambio, poiché il ciclo di vita dell'applicazione fa un lavoro migliore. Ciclo di vita di Android è progettato per ambienti con memoria limitata, in ambiente desktop e server, hai una quantità enorme di memoria e gli utenti fanno molto più multitasking e non si aspettano che i programmi in background vengano uccisi dal sistema operativo. Il punto debole del ciclo di vita di Android è che richiede il supporto dell'applicazione. L'applicazione deve essere pronta per essere uccisa in qualsiasi momento e deve salvare lo stato in punti predefiniti. Tale complessità è estranea alle app desktop.
Lie Ryan,

5

C'è sicuramente un vantaggio nello scambio, nonostante ciò che ti diranno tutti gli altri su Internet. Provalo e vedi di persona. Empiricamente, su un telefono G1 o altro con memoria insufficiente, lo scambio rende il telefono migliore e più veloce.

Sì, Android ha integrato la "gestione delle attività" del ciclo di vita, ma non è molto buona. Si uccide ordinariamente processi quando si esaurisce la memoria, e le applicazioni sono tenuti a salvare il loro stato di utilizzo di " bundle ", in modo che quando li si riavvia, si riavviano nello stesso stato in cui erano in ultima.

Una volta che Android stabilisce che deve rimuovere un processo, lo fa brutalmente, semplicemente uccidendolo forzatamente. Il kernel può quindi recuperare immediatamente tutte le risorse necessarie al processo, senza fare affidamento sul fatto che quell'applicazione sia ben scritta e rispondente a una cortese richiesta di uscita. Consentire al kernel di recuperare immediatamente le risorse dell'applicazione rende molto più semplice evitare gravi situazioni di memoria insufficiente.

Sarebbe fantastico se funzionasse davvero e sarebbe meglio dello scambio indiscriminato. Ma le app non salvano davvero il loro stato; salvano solo la minima quantità di informazioni per tornare a quello stato. (E alcune app non si preoccupano nemmeno di farlo.) Tornare a quello stato richiede tempo. Poiché lo swap in realtà salva l'intero stato dell'app, che deve solo essere ricaricato, rende il passaggio tra le app molto più veloce.

Se passi ad un'altra app dal browser, ad esempio, il browser viene quasi sempre ucciso, quindi deve ricaricare l'intera pagina da Internet quando torni ad essa. Ciò richiede molto più tempo rispetto al ricaricare lo stato dallo scambio, spreca i tuoi soldi se sei su un piano dati e causa problemi di stato quando la pagina web è dinamica.

Molte app impiegano molto più tempo ad avviarsi rispetto a quanto dovrebbero, o in realtà non ritornano allo stesso stato quando vengono riavviate, quindi il loro scambio funziona meglio.

Immagino che le persone che sono soddisfatte del sistema stock utilizzino i loro telefoni in modo diverso.

Dovrei usare una partizione di swap con Cyanogenmod?


Se lo lasci al ciclo di vita, sarà la decisione dell'applicazione di memorizzare nella cache dati extra per migliorare le prestazioni (ad esempio pagine Web caricate). Se si utilizza lo scambio, è una decisione del sistema operativo, ma il sistema operativo non è nella posizione migliore per determinare cosa salvare e cosa non salvare per ottimizzare al meglio le prestazioni, quindi deve salvare e ripristinare tutto. Il browser non scarica nuovamente le pagine da Internet se si cambiano le attività, ho spesso aperto il browser, passando a un sacco di giochi pesanti e altre attività e tornando al browser con la mia ultima pagina con tutto in atto caricato all'istante.
Lie Ryan,

Giusto. Nessuno dei due sistemi è ottimale, ma lo scambio è migliore per la maggior parte delle app. Il browser ricarica la pagina solo se viene uccisa prima di riaprirla. Su un telefono con poca memoria, verrà quasi sempre ucciso.
endolith,

@LieRyan - "torna al browser con la mia ultima pagina con tutto in atto caricato all'istante" ripristina la posizione di scorrimento del browser sulle pagine aperte dopo il ricaricamento? Questo è ciò che Chrome non fa (anche se mi piace molto questo browser), il che è molto sfortunato quando hai smesso di leggere in mezzo a qualche pagina web di log piuttosto prima di passare, diciamo, a una chiamata ...
Kerim

2

Ho una Spice mi-435 (venduta solo in India) che ha una RAM di soli 340M. Al diavolo, i file di scambio aiutano molto. Il mio telefono esegue ICS su una RAM così bassa e sicuramente ha inserito molti stati di memoria insufficiente e lì il file di scambio aiuta molto. Tutti gli stati dell'applicazione vengono trasferiti allo scambio quando non sono in uso attivo. Questo offre alla mia cabina telefonica più applicazioni e app affamate di RAM per funzionare senza intoppi con molto meno ritardo rispetto a prima. Anche se c'è un problema quando apro l'app che ho usato prima. Ci vuole tempo per caricare il suo stato poiché la SD è molto più lenta della RAM ad alta velocità integrata. Ma l'opzione di scambio è migliore per così meno RAM. Consiglierei di scambiare la partizione con RAM inferiore a 512 M, ma non per più di 512 M.

Spero sia utile


1

Scambia file aiuta anche su sistemi con RAM più alta. Il mio tablet quad core da 7 GB ram ram da 7 pollici ottiene un notevole impulso multi-tasking da un cambio da 2 GB, sulla scheda micro sd uhs-1. E, naturalmente, il prezzo della memoria diminuisce rapidamente e, anche a scrittura costante, si suppone che nand flash duri anni.

Sono fondamentalmente dell'opinione, perché la differenza di prestazioni è così radicale, che probabilmente chiunque abbia una quantità di RAM inferiore a quella reale dovrebbe farlo. In effetti, probabilmente dovrebbe essere disponibile come opzione standard in Android (insieme a cache di app più grandi e una cache Internet di dimensioni adeguate).

Voglio dire che hai un micro sd da 64-128 gb (uhs-1), o anche il uhs-2 che è uscito quest'anno, oltre a una nand interna da 16-64 gb, spesso "veloce", che è una specie di ssd primitivo o anche SSD, come vengono utilizzati nelle liste di Windows: non riempi esattamente tutto quello spazio ad alta velocità con molto. La velocità entra davvero in gioco solo con il video o il caricamento di app in memoria, che è esattamente l'uso qui.

Naturalmente idealmente, i produttori dovrebbero concentrarsi maggiormente sulla RAM, piuttosto che sulla risoluzione o sui core aggiuntivi, perché chiaramente la velocità del sistema beneficia molto di ram più alti - e probabilmente dovrebbero anche aumentare la velocità della memoria interna (come passare a sistemi di tipo full ssd , o almeno "veloce", ma nel frattempo, mentre alte risoluzioni tendono a causare una sorta di deficit di RAM in tutti i dispositivi, un file di scambio e la memorizzazione nella cache di un SD esterno ragionevolmente scattante ha molto senso.

In effetti sarebbe bello vedere alcuni browser mantenere anche la cache più piena, la maggior parte dei browser sono lenti o con funzionalità bassa, raramente veloci e con funzionalità complete - e questo in parte perché lo spazio per la cache dell'app sull'unità interna è ridotto. Sono progettati per funzionare in un ambiente di memoria e archiviazione insufficiente e l'intera storia sta cambiando. Anche se il ram non è in grado di tagliare quanto dovrebbe essere, lo spazio di archiviazione lo è sicuramente, e può essere dannatamente veloce sugli standard UHS-1 (o l'UHS-2 rilasciato quest'anno), anche se non è " veloce "o ssd.

E il costo della memoria esterna, in realtà, è di arachidi, anche per una maggiore capacità uhs-1. Almeno un 64 GB UHS-1 è perfettamente abbordabile (50 dollari dove sono io, ma sarebbe meno USD), molto più economico del dispositivo, e 32 GB e meno è fondamentalmente un paio di tenner.

Un sacco di lezioni da imparare davvero dal desktop, specialmente ora che le specifiche stanno aumentando: il collegamento delle prestazioni più lento sta caricando dalla memoria alla RAM. Più puoi fare per mitigarlo, meglio è.

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.