Desvantagens do uso da pré-carga? Por que não está incluído por padrão?

110

Gostaria de saber quais são as desvantagens de usar preload? Se não houvesse desvantagem, preloadseria ativado por padrão, então acho que existem alguns.

Ok, você precisa de um pouco mais de RAM, mas a maioria das pessoas tem muito mais RAM do que o Ubuntu precisa - então, quais são as desvantagens de usar preload?

Paradiesstaub
fonte
6
Obrigado pela sua pergunta útil. Eu quero saber, é um mito?
Saeed Zarinfam
1
uso de CPU e bateria pode ser uma desvantagem para alguns ... bugs.launchpad.net/ubuntu/+source/preload/+bug/481861
Mateo
1
Boa pergunta. Algumas distribuições vêm carregadas com pré-carregamento, como o sistema operacional elementar (que é o que eu corro no meu laptop porque a gala é muito mais rápida que a unidade do Ubuntu).
1
Apenas um palpite: Um motivo para não incluí-lo por padrão é o fato de não ser utilizável em todos os sistemas (seus requisitos de hardware podem ser diferentes dos requisitos padrão).
Don.joey
2
brainstorm.ubuntu.com/idea/1122 um post aqui sugere que "ele roda como um daemon com privilégios de root". O que pode ser um problema de segurança, também há um brainstorm que deseja sua inclusão padrão brainstorm.ubuntu.com/idea/14092
Mateo

Respostas:

65

Simplificando, o Preload não é para todos. É ótimo se você abrir muito aplicativos ou bibliotecas. É prejudicial se você carregar aplicativos ou bibliotecas apenas ocasionalmente. Vou usar dois exemplos do meu uso atual (e sim, eu uso pré-carregamento).

Primeiro, o Google Chrome. Agora, um navegador é aberto apenas uma vez por inicialização, talvez duas vezes (para mim, sou desenvolvedor da Web). O Chrome e suas bibliotecas relacionadas ficam na memória porque eu sempre o uso. Mesmo quando fecho todas as janelas cromadas, ele ainda está em segundo plano. Portanto, todo o carneiro dedicado a manter uma cópia de pré-carregamento do Chrome é um desperdício total e absoluto. Nunca é (ou raramente) descarregado. Para o usuário médio, isso é verdade para um grande número de aplicativos. Um usuário do Office quase sempre terá seu aplicativo de email aberto. Portanto, a pequena economia no tempo de inicialização é completamente desperdiçada, porque eles abrem seu aplicativo de e-mail apenas uma vez por dia e o deixam em aberto.

O segundo exemplo é rake. Como desenvolvedor de ruby ​​que acredita em testes, eu corro uma TON. rake é executado, é executado por alguns segundos - minutos e depois sai. O pré-carregamento me ajuda a acelerar meu trabalho diário porque carrega o rake e suas bibliotecas necessárias (que podem ser muito extensas) antes do tempo. Portanto, existem muitas partidas e paradas para o rake. A ram extra usada para acelerar os 400 ou 500 lançamentos de rake ao longo de algumas horas vale totalmente a pena.

Portanto, o motivo de não ser ativado por padrão é que sua capacidade de realmente melhorar o desempenho se baseia amplamente na maneira como você usa seu sistema. Para algumas pessoas, será negativo e para outros, positivo.

Por fim, a pré-carga, mesmo que você não esteja usando, consome ram. Portanto, se você não estiver iniciando aplicativos com frequência, poderá tornar todo o sistema um pouco mais lento, se não houver esse RAM disponível para outros tipos de cache. Lembre-se, mesmo se você tiver 32 Gigs de memória ram, o Linux tentará usar o máximo possível para armazenar dados em cache para tornar sua interação mais rápida. Ao usar a pré-carga, você reduz um pouco a memória livre. Mesmo que seja apenas um pouquinho, os 2 segundos que você economizou ao iniciar o Chrome 1 podem custar 60 segundos durante o mês em que permanece em execução.

coteyr
fonte
1
Além disso, o uso de pré-carregamento diminui a inicialização. Quanto mais coisas são pré-carregadas, mais tempo leva para colocar o sistema em funcionamento. Agora, imagine que tudo o que você quer fazer é inicializar, escrever uma frase em um memorando e desligar logo depois. Você estará aguardando até para poder escrever a nota, porque seu sistema está pré-carregando as coisas provavelmente não relacionadas a essa tarefa. Assim, de certa forma, a pré-carga (em geral) é uma faca de dois gumes.
F-3000
1
O pré-carregamento não está funcionando dessa maneira ... Ele fornece dicas do kernel como "ei, carregue isso no cache enquanto você estiver lá, precisarei em breve" e o kernel o faz. Portanto, na verdade, não está usando a RAM como você a descreve. Podem acontecer duas coisas: o carregamento no cache empurra os aplicativos que você usará em breve - o que resulta em uma pequena atividade de congelamento e disco rígido quando você voltar ao aplicativo.
hurikhan77
1
Segundo: se o pré-carregamento predizer que seu padrão de uso está errado (o que pode muito bem ser o caso se você carrega aplicativos constantemente), ele armazena em cache coisas que serão posteriormente retiradas da RAM novamente e, por sua vez, empurradas para fora da memória RAM que você pode ter melhor uso para. Mas, no final, ele apenas "consome" a RAM como o cache dos vfs - por isso é realmente descartável e, portanto, "libera RAM". No entanto, ele compete com o "cache normal" enquanto você escreve.
hurikhan77
1
Considerando os coteyr e @ hurikhan77, acima, você concorda que o Preload é uma maneira contra-eficaz de ajudar a melhorar a velocidade percebida em caixas de desktop mais antigas e com pouca RAM (~ 800 MB livres na inicialização). Ativar a Preload nessas caixas recondicionadas dará ao gerente de memória virtual do kernel muito trabalho para melhorar pouco?
tuk0z 13/09/16
2
@lliseil Se esses 800 MB são realmente RAM não alocada, o pré-carregamento pode ajudar ... Mas provavelmente funciona melhor com mais RAM. E, por sua vez, isso significa: O pré-carregamento entrará em conflito com aplicativos que consomem muita memória que você pode iniciar mais tarde. Pode ser necessário diminuir a swappiness aqui, o que provavelmente torna inútil a pré-carga assim que você usar muita memória RAM.
hurikhan77
21

Pergunta feita pelo bountier Saeed Zarinfam em 5 de setembro de 2012:

Olá a todos, eu quero saber, é um mito? O [pré-carregamento] realmente melhora meu desempenho? Quais são as desvantagens de usá-lo? Eu tenho um laptop com esta especificação (CPU Core i5, 4 GB de RAM, 128 GB SSD rígido). Muito obrigado.

  • Não há necessidade real de pré-carregamento se você tiver um SSD
    • Isso ocorre porque os SSDs fornecem tempos de acesso aleatório muito mais rápidos que os discos rígidos; portanto, "pré-carregar" binários / dependências na memória é um desperdício, IMO
    • A desvantagem básica é que a pré - carga está "usando" memória adicional sem fornecer um benefício tangível.
ish
fonte
20
Isso não cobre a questão do OP, pois existem desvantagens no uso do pré-carregamento? Segundo, você formou uma opinião, fez uma declaração sobre "pré-carregamento" e depois introduziu "SSD" na equação. Em que momento você realmente responderia à pergunta?
Ringtail
12

O pré-carregamento é um "daemon adaptável ao readahead" que é executado em segundo plano no seu sistema e observa quais programas você usa com mais freqüência, armazenando-os em cache para acelerar o tempo de carregamento do aplicativo. Ao usar o Preload, você pode colocar a RAM não utilizada em um bom trabalho e melhorar o desempenho geral do seu sistema de desktop.

Não espere ver uma mudança drástica no desempenho imediatamente. Além disso, se você estiver apenas abrindo / fechando aplicativos repetidamente, seu computador armazenará esses arquivos no cache de qualquer maneira (isso é chamado de carga "quente"), para que você não veja nenhuma diferença na velocidade. Você verá, no entanto, uma melhoria na velocidade se, por exemplo, usar um programa de forma intermitente; esses programas serão iniciados mais rapidamente do que sem o Preload.

O pré-carregamento pode fornecer uma grande melhoria no tempo de inicialização do aplicativo; Como a maioria das máquinas modernas tem bastante memória de sobra, o Preload coloca essa RAM em bom uso. 1

Agora, dito isso, parece que a pré-carga é uma grande utilidade, e pode ser.

Eu acho que o motivo pelo qual não é pré-carregado com o sistema operacional é porque o usuário precisa saber exatamente o que está fazendo e ter experiência suficiente para poder usá-lo, e o sistema precisa ter RAM suficiente.

Em um aspecto mais técnico, o pré-carregamento funciona movendo dados do disco rígido para a RAM, o que faz com que a maior parte do disco rígido entre no modo de suspensão se não for usada e, em seguida, precise voltar quando necessário. Portanto, girar para cima / para baixo o inversor faria com que a contagem do ciclo de carga / descarga e a contagem do tempo de inicialização aumentassem, reduzindo a vida útil do inversor.

Projetamos e implementamos o preload, um esquema de pré-busca adaptativa baseado em Markov que funciona em previsões no nível do aplicativo. Além disso, a pré-carga é implementada no espaço do usuário e não altera o ambiente de tempo de execução do aplicativo em nenhum sentido. Este é o primeiro trabalho experimentando a pré-busca do sistema de arquivos nesse nível, tanto quanto sabemos.

Nossos resultados experimentais mostram melhorias promissoras no tempo de inicialização do aplicativo em comparação com caches frios e uma taxa de acerto decente em comparação com um algoritmo de previsão ingênuo.

No entanto, estar no espaço do usuário apresenta grandes obstáculos para tornar a pré-carga uma solução competitiva para o problema no momento da inicialização. Em particular, a falta de informações completas sobre as solicitações de E / S dos aplicativos e a falta de canais de comunicação fortes com o subsistema de cache de página diminuem drasticamente a eficácia da pré-carga, especialmente em condições de pouca memória.

Outro problema inerente ao projeto de pré-carga é a alta variação e a baixa confiança de previsão causada pela correlação relativamente fraca das start-ups de aplicativos. Enquanto construímos com sucesso um modelo para rastrear correlações de aplicativos, o fato de que os lançamentos de aplicativos são eventos muito raros em comparação com a escala de tempo em que os computadores trabalham, um esquema de pré-busca no nível de aplicativo é condenado a consumir uma enorme memória de pré-busca por praticamente períodos infinitos de tempo. Essa memória pode ser usada para melhorar o comportamento do cache de curto prazo.

Por fim, criamos um conjunto de recomendações para desenvolvedores de sistemas sobre como melhorar o tempo de inicialização, o tempo de login e o tempo de inicialização do aplicativo sem voltar a um pré-buscador integrado ao subsistema de cache no kernel. Obviamente, um pré-buscador baseado em arquivo no kernel pode melhorar ainda mais. 2

1 Fonte: techthrob

2 Fonte: Preload - Um Daemon de Pré-busca Adaptativa de Behdad Esfahbod - Uma tese apresentada em conformidade com os requisitos para o grau de Mestre em Ciências - Departamento de Pós-Graduação em Ciência da Computação - Universidade de Toronto Copyright (c) 2006 por Behdad Esfahbod.

Mitch
fonte
1
Obrigado pela sua resposta, Mitch. Esses eram meus pensamentos também. Especialmente em laptops, a pré-carga pode ser um problema. Mas ainda assim, gostaria de encontrar uma fonte / discussão oficial sobre por que a equipe do Ubuntu decidiu não enviar a pré-carga.
precisa
9

Desvantagens? Não há nenhum!

Maior desempenho na abertura de aplicativos pelo usuário. Eu o uso há anos em meus sistemas, além de "leitura antecipada" e não tenho problemas. A página de bug do pré-carregamento também não sugere desvantagens.

O pré-carregamento monitora os aplicativos que os usuários executam e, analisando esses dados, prediz quais aplicativos os usuários podem executar e busca esses binários e suas dependências na memória para tempos de inicialização mais rápidos.

Isso aumenta um pouco o tempo de inicialização, no entanto, o tempo de busca por aplicativos diminui muito o problema.

ver artigo

Se você estiver constantemente usando aplicativos comuns como Firefox ou Gimp, perceberá alguns tempos de carregamento bastante aprimorados. O pré-carregamento é um daemon que roda discretamente em segundo plano e não atrapalha sua área de trabalho. Os usuários do Ubuntu podem instalar o pré-carregamento com:

sudo apt-get install preload

Resultados:

Gráfico mostrando a diferença entre o início normal e o pré-carregamento

ref

Ringtail
fonte
3
Eu sei qual é a dose e li vários 'HowTos de pré-carregamento', mas em nenhum lugar consegui ler algo sobre os inconvenientes. Se não houvesse desvantagens, ele seria enviado por padrão com muitas distribuições Linux - mas até onde eu sei - não é esse o caso.
Paradiesstaub
1
O desempenho não é diminuído , mas aumentado . Esse é o objetivo de usar a pré-carga. Talvez seja apenas um erro de digitação.
Marco Marco
2
Seu diagrama parece ótimo, mas falta informações importantes. Seria 100% adequado para uma apresentação em powerpoint de um vendedor, mas é um exemplo de 'estatísticas ruins'. De onde vêm esses números? Qual protocolo foi usado para registrá-los? Foi um único instantâneo? Quantas máquinas estavam envolvidas na amostra? Qual foi o hardware? Como o programa de pré-carregamento foi configurado?
1
@ Ringtail: Você está certo. Você não é o autor desse diagrama. Mas se você clicar em todos os links dos artigos, você acessa uma página da Techthrob.com que deveria ter hospedado um artigo escrito pelo autor do programa. Mas essa página foi embora. Portanto, existe apenas uma fonte: a tese do autor.
2
Deve-se atualizar o hardware se um terminal gnome demorar mais de 2 segundos para inicializar ...
Peter e o lobo