Como uma partição / arquivo de troca afetará o sistema?

20

Alguns amigos me disseram que seus telefones Android têm muito pouco (<100 MB) de memória disponível para aplicativos regulares, porque o sistema operacional e alguns serviços imprescindíveis ocupam a maior parte da RAM. Por exemplo, um telefone com 512 MB mostra apenas 90 MB de memória disponível; portanto, apenas 2-3 aplicativos podem ser executados ao mesmo tempo.

Gostaria de saber se a criação de uma partição / arquivo de swap ajudará, mas vi opiniões contraditórias em toda a web e não tenho certeza do que fazer. Aqui estão as minhas perguntas:

(1) Haverá muitas páginas de memória não usadas com freqüência para trocar, especialmente no sistema operacional e nos serviços que não podem ser mortos?

(2) Como a troca de pequenas páginas de memória prejudicará a vida útil da memória flash? O flash (ou cartão SD?) Faz o nivelamento do desgaste automaticamente?

(3) A troca realmente ajudará o desempenho ao executar vários aplicativos? Presumo que, se a resposta a (1) for sim, será.

(4) A escrita para piscar é muito lenta e, portanto, prejudica a capacidade de resposta quando a troca acontece?

(5) É verdade que o Android mantém o mecanismo de troca do kernel Linux, desde que haja uma partição / arquivo de troca, ele fará a troca sem configuração extra?

Obrigado pela leitura.

sempre-verde
fonte

Respostas:

8

Não acho que haverá muitos benefícios com a troca para Android, pois o Ciclo de vida do aplicativo Android é uma forma muito mais avançada de troca.

(1) Haverá muitas páginas de memória não usadas com freqüência para trocar, especialmente no sistema operacional e nos serviços que não podem ser mortos?

Você não pode trocar o kernel do sistema operacional, mesmo no Desktop Linux e Android, já mata serviços quando ele precisa de mais RAM. Se o fornecedor do dispositivo insistir em que você precisa ter serviços inúteis em execução o tempo todo, faça a raiz do dispositivo.

(2) Como a troca de pequenas páginas de memória prejudicará a vida útil da memória flash? O flash (ou cartão SD?) Faz o nivelamento do desgaste automaticamente?

Mesmo se o cartão SD estiver nivelado, a troca prejudicará bastante.

(3) A troca realmente ajudará o desempenho ao executar vários aplicativos? Presumo que, se a resposta a (1) for sim, será.

Não no contexto do Android. Ao contrário do SO tradicional, que continuará tentando executar processos como você solicitou, o Android forçará a matar processos mais antigos e não utilizados e recuperará sua memória; essa matança é rápida, pois os aplicativos já salvam seu estado quando você alterna a tarefa.

(4) A escrita para piscar é muito lenta e, portanto, prejudica a capacidade de resposta quando a troca acontece?

Provavelmente, provavelmente não. Precisará de benchmarks para isso.

(5) É verdade que o Android mantém o mecanismo de troca do kernel Linux, desde que haja uma partição / arquivo de troca, ele fará a troca sem configuração extra?

Não sei se o Android mantém o mecanismo de troca, mas mesmo se ele o fizer (ou se você compilar seu próprio kernel), você ainda precisará de algumas configurações. Geralmente, é apenas ter um fstabarquivo que aponta para o arquivo de troca e pronto swapon -a.

Na verdade, tenho razões pelas quais a troca pode realmente prejudicar o desempenho: impede que o Application Life Cycle, o esquema de gerenciamento de memória do Android, funcione corretamente.

Lie Ryan
fonte
Obrigado pela resposta. Ainda tenho dúvidas. Em um Samsung Fascinate, 10 serviços imbatíveis ocupam cerca de 110 milhões de memória. Existem outros 22 serviços executáveis ​​em execução, mas "Aplicativo em Execução" não mostra nenhum aplicativo em execução. É o telefone da minha amiga e eu não sabia exatamente o que ela fazia antes, mas parece que é bem possível que muitos serviços / aplicativos possam ser executados ao mesmo tempo. Não acho que todos esses serviços / aplicativos em segundo plano usem todas as páginas necessárias quando começaram. Além disso, salvar o estado do aplicativo + recarregar e reiniciar o estado do aplicativo + restauração também seria lento.
evergreen
Outra maneira de pensar nesse problema é: suponha que a vida útil do flash não seja um problema, o Android deve fazer uma troca? Caso contrário, qual é a principal diferença entre aplicativos Android e aplicativos de desktop que torna a troca não útil no Android? Não acho que o Android Life Cycle funcione para aplicativos de desktop / servidor.
evergreen
@ evergreen: o estado do aplicativo é salvo quando o aplicativo entra em segundo plano (por exemplo, quando o usuário pressiona home para alternar tarefas). Mais tarde, quando algum outro aplicativo precisar de memória, aplicativos mais antigos ou serviços em segundo plano serão eliminados à força (o FK praticamente não leva tempo). Isso significa que a matança de tarefas é imediata, pois o estado do aplicativo já está salvo há muito tempo. Quando você recarrega um aplicativo que já está na memória, obtém o tempo de recarga mais rápido; mas se o aplicativo já está descarregado, o aplicativo precisa fazer recarregamento completo (que é a mesma situação com a troca)
Lie Ryan
@ evergreen: se você usar um assassino de tarefas, forçará o descarregamento dos aplicativos e sempre será necessário recarregar completamente, em vez de recarregar rapidamente quando o aplicativo permanecer na memória. Se você usar um arquivo / partição de troca, os aplicativos (mais antigos) serão trocados e a restauração levará quase a mesma quantidade de trabalho que a recarga completa. Exceto: com a atualização completa, o desenvolvedor do aplicativo separou os dados persistentes por dados temporários e pode otimizar o que salvar e o que não melhorar o armazenamento. Enquanto restaura a troca, você deixa o desenvolvedor de aplicativos sem palavras e troca tudo.
Lie Ryan
@ evergreen: Mesmo quando a vida do flash não é um problema, o Android não deve fazer trocas, porque o Ciclo de Vida do Aplicativo faz um trabalho melhor. O Ciclo de Vida do Android foi projetado para um ambiente com restrição de memória, no ambiente de desktop e servidor, você tem uma quantidade gigantesca de memória e os usuários fazem muito mais multitarefa e não esperam que os programas em segundo plano sejam eliminados pelo sistema operacional. O ponto fraco do Android Life Cycle é que ele requer suporte a aplicativos. O aplicativo deve estar pronto para ser eliminado a qualquer momento e deve salvar o estado em pontos predefinidos. Essa complexidade é estranha para aplicativos de desktop.
Lie Ryan
5

Definitivamente, há um benefício na troca, apesar do que todos os outros na Internet dirão. Experimente e veja por si mesmo. Empiricamente, em um G1 ou outro telefone com pouca memória, a troca faz o telefone funcionar melhor e mais rápido.

Sim, o Android possui o "gerenciamento de tarefas" do Ciclo de Vida, mas não é muito bom. Ele rotineiramente mata processos quando fica sem memória, e os aplicativos devem salvar seu estado usando " Bundles " para que, quando você os reinicie, eles reiniciem no mesmo estado em que estavam.

Uma vez que o Android determina que precisa remover um processo, ele faz isso brutalmente, simplesmente matando-o à força. O kernel pode recuperar imediatamente todos os recursos necessários pelo processo, sem depender de que o aplicativo seja bem escrito e responda a uma solicitação educada de saída. Permitir que o kernel recupere imediatamente os recursos do aplicativo facilita muito evitar situações graves de falta de memória.

Isso seria ótimo se realmente funcionasse e seria melhor do que a troca indiscriminada. Mas os aplicativos realmente não salvam seu estado; eles apenas salvam a quantidade mínima de informações para voltar a esse estado. (E alguns aplicativos nem se dão ao trabalho de fazer isso.) Voltar a esse estado leva tempo. Como o swap realmente salva todo o estado do aplicativo, que apenas precisa ser recarregado, torna a troca de aplicativos muito mais rápida.

Se você alternar para outro aplicativo a partir do navegador, por exemplo, o navegador quase sempre é desativado e, em seguida, é necessário recarregar a página inteira da Internet quando você voltar para ele. Isso leva muito mais tempo do que recarregar o estado do swap, desperdiça seu dinheiro se você estiver em um plano de dados e causa problemas de estado quando a página da web é dinâmica.

Muitos aplicativos levam muito mais tempo para iniciar do que deveriam, ou na verdade não retornam ao mesmo estado quando são reiniciados, portanto, trocá-los funciona melhor.

Suponho que as pessoas que estão satisfeitas com o sistema de ações usem seus telefones de maneira diferente.

Devo usar uma partição de swap com o Cyanogenmod?

endólito
fonte
Se você deixar o Ciclo de Vida, será uma decisão do aplicativo armazenar em cache dados extras para melhorar o desempenho (por exemplo, páginas da web carregadas). Se você usa o swap, é uma decisão do sistema operacional, mas o sistema operacional não está na melhor posição para determinar o que salvar e o que não salvar para otimizar o desempenho da melhor forma; portanto, é necessário salvar e restaurar tudo. O Navegador não baixa novamente as páginas da Internet se você alternar tarefas, muitas vezes eu abro o Navegador, alterno para vários jogos pesados ​​e outras atividades, e volto ao Navegador com minha última página com tudo carregado instantaneamente.
Lie Ryan
Direita. Nenhum sistema é ideal, mas a troca é melhor para a maioria dos aplicativos. O navegador só recarrega a página se ela for eliminada antes de você reabri-la. Em um telefone com pouca memória, quase sempre é morto.
endolith 22/10/10
@LieRyan - "retornar ao navegador com minha última página com tudo no lugar carregado instantaneamente" você restaura a posição de rolagem nas páginas abertas após recarregar? É isso que o Chrome não faz (embora eu goste muito deste navegador), o que é muito lamentável quando você parou de ler no meio de uma página da web antes de mudar para, digamos, atender uma chamada ...
kerim
2

Eu tenho um Spice mi-435 (vendido apenas na Índia), que tem uma RAM de apenas 340M. Inferno, os arquivos de troca ajudam muito. Meu telefone executa o ICS em uma RAM tão baixa e definitivamente entrou em muitos estados de falta de memória e o arquivo de troca ajuda muito. Todos os estados do aplicativo são transferidos para troca quando não estão em uso ativo. Isso dá ao meu telefone espaço para que mais aplicativos e aplicativos com fome de RAM sejam executados sem problemas com muito, muito menos atraso do que antes. Embora surja um problema ao abrir o aplicativo que eu já estava usando antes. Leva tempo para carregar seu estado, pois o SD é muito mais lento que a RAM de alta velocidade a bordo. Mas, a opção de troca é melhor por menos RAM. Eu recomendaria trocar a partição da RAM por menos de 512M, mas não por mais de 512M.

Espero que seja útil.

derrota sambit
fonte
1

O arquivo de troca ajuda mesmo em sistemas com maior RAM. Meu tablet quad core de 1gb e ram de 7 polegadas recebe um grande impulso multitarefa ao jogar uma troca de 2gb no cartão micro sd uhs-1. E, é claro, o preço da memória diminui rapidamente e, mesmo com gravação constante, o flash e o flash duram anos.

Sou basicamente da opinião, porque a diferença de desempenho é tão radical que provavelmente qualquer pessoa com menos de uma quantidade realmente grande de RAM deveria estar fazendo isso. Na verdade, provavelmente deve vir como uma opção padrão no Android (juntamente com caches de aplicativos maiores e um cache de internet de tamanho adequado).

Quero dizer, você tem um micro sd de 64-128 gb (uhs-1) ou até o uhs-2 lançado este ano, além de um nand interno de 16-64 gb, geralmente nand "rápido", que é uma espécie de ssd primitivo ou até SSD, como são usados ​​nas janelas do Windows - você não está preenchendo exatamente todo esse espaço de alta velocidade com muito. A velocidade realmente só entra em jogo com o vídeo ou o carregamento de aplicativos na memória - que é exatamente o uso aqui.

Obviamente, idealmente, os fabricantes se concentrariam mais na RAM do que na resolução ou nos núcleos extras, porque claramente a velocidade do sistema se beneficia muito de uma RAM mais alta - e provavelmente também deveriam aumentar a velocidade do armazenamento interno (como mudar para sistemas do tipo SSD completos) , ou no mínimo "rápido", mas, enquanto isso, as altas resoluções tendem a causar um tipo de déficit de RAM em todos os dispositivos, um arquivo de troca e o cache para um sd externo razoavelmente rápido faz muito sentido.

De fato, seria bom ver alguns navegadores manterem o cache mais completo também, a maioria dos navegadores é lenta ou com recursos baixos, raramente rápidos e com recursos completos - e isso ocorre em parte porque o espaço para o cache do aplicativo na unidade interna é pequeno. Eles foram projetados para operar em um ambiente com pouca memória e armazenamento, e toda essa história está mudando. Mesmo que o aríete não esteja tão bom quanto deveria, o armazenamento certamente está, e pode ser bastante rápido nos padrões UHS-1 (ou no uhs-2 lançado este ano), mesmo que não esteja " rápido "ou ssd.

E o custo da memória externa é realmente amendoim, mesmo para maior capacidade uhs-1. Pelo menos um uhs-1 de 64GB é perfeitamente acessível (50 dólares onde estou, mas seria menos USD), muito mais barato que o dispositivo, e 32 GB ou menos é basicamente um par de ofertas.

Na verdade, existem muitas lições a serem aprendidas na área de trabalho, especialmente agora que as especificações estão aumentando - o link de desempenho mais lento é carregado do armazenamento para o ram. Quanto mais você puder fazer para mitigar isso, melhor.

Jamie
fonte