Por que escolher um kernel de baixa latência sobre um kernel genérico ou em tempo real?

91

Depois de instalar o Ubuntu Studio 12.04, descobri que ele usa um kernel de baixa latência. Eu procurei por que e como mudar de volta para um tempo real ou genérico. Mas parece que esta parte do Linux não tem sido muito abordada.

P: Por que escolher um kernel de baixa latência em vez de um genérico ou em tempo real?

PS: Eu já li as respostas de esta pergunta e este post.

    
por Starx 28.04.2012 / 05:09

4 respostas

53

  

Estas são algumas diretrizes simples fornecidas para ajudá-lo a entender quais   kernel, e em que ordem, você deve testar para se adequar ao seu caso de uso.

     
  • Se você não precisa de baixa latência para o seu sistema, use o kernel -genérico.
  •   
  • Se você precisar de um sistema de baixa latência (por exemplo, para gravar áudio), use o kernel -preempt como primeira opção. Isso reduz a latência   mas não sacrifica recursos de economia de energia. Está disponível apenas para   Sistemas de 64 bits (também chamados amd64).
  •   
  • Se o kernel -preempt não fornecer baixa latência suficiente para as suas necessidades (ou se você tiver um sistema de 32 bits), tente o   -luxo de baixa intensidade.
  •   
  • Se o -lowlatency kernel não for suficiente, você deve tentar o -rt kernel
  •   
  • Se o kernel -rt não for estável o suficiente para você, então você deve tentar o kernel -realtime
  •   

link

Eu acho que depende do que você vai fazer com você, distro de estúdio. Para alguns usuários, o genérico vai funcionar bem, para outros, não.

FREEDOM SPEECH, tente ler este link: link

    
por ubuntu fan 28.04.2012 / 05:21
43

Sou o autor do post do blog linkado pelo fã do ubuntu: link

Essa postagem no blog não apresenta nenhum fato, é apenas teoria . É assim que funciona: o processador "pára" com mais frequência para ver se há alguns processos que exigem atenção imediata. Isso significa que esses processos serão executados antes dos outros, então você não irá pular quadros ao codificar, ou terá grandes atrasos entre os cliques do mouse e as mortes do inimigo. Isso não significa que todos os processos terminarão mais cedo: na verdade, a CPU está perdendo uma parte maior de seu tempo decidindo qual processo será executado a seguir e fazendo a troca de contexto. Portanto, o tempo total de execução é maior, e é por isso que ninguém executa um kernel preemptiva em servidores web ou em bancos de dados. Mas um kernel preemptível de 300Hz (ou mesmo 1000Hz) é o melhor para servidores de jogos.

Mas hoje em dia os processadores têm muitos núcleos, por isso, quando há poucos processos que requerem atenção, eles podem ser facilmente alocados em um núcleo diferente, em vez de esperar que um núcleo o aceite.

(o stackexchange requer referências / experiência pessoal: sou engenheiro eletrônico, noobgamer sedento de sangue mantendo vários servidores no link ).

Então, como regra geral, eu diria: se o seu processador é um poderoso quad-core de alta freqüência e você normalmente não abre muitas páginas enquanto codifica / decodifica / joga (huh) , você poderia apenas tentar o kernel genérico (ou i686, ou amd64 se existirem) e ter o maior throughput possível (isto é, o processamento crúco de números que o processador é capaz de fazer). Se você tiver problemas (eles realmente devem ser menores) ou sua máquina é um pouco menos poderosa do que o topo do mercado, vá para o pré-pagamento.

Se você estiver em uma máquina de baixo custo que tenha apenas um ou dois núcleos, tente a -lowlatency. Você também pode tentar o tempo-real, mas descobrirá que ele tende a bloquear processos até que os "em tempo real" terminem seu trabalho. Eu acredito que o kernel em tempo real não é o "vanilla", mas tem o patch CONFIG_PREEMPT_RT aplicado. Eu acho que os kernels em tempo real são apenas para aqueles que têm que construir um único aplicativo em sistemas embarcados, então usuais usuários de desktop não devem ter benefícios reais, porque eles geralmente executam um bom número de aplicativos ao mesmo tempo.

Finalmente, as opções mais relevantes do kernel, se você quiser recompilar seu kernel para ter uma área de trabalho de baixa latência, são:

PREEMPT=y

e:

CONFIG_1000_HZ=y

Para adicionar um pouco de economia de energia, você pode verificar esta:

CONFIG_NO_HZ=y
    
por seven 24.10.2012 / 22:27
5

BTW: o preemt-, lowlatency ou o kernel do rt não tornarão seu sistema mais rápido. Eles são um pouco mais lentos do que o kernel genérico.

    
por gemue2010 28.04.2012 / 05:53
2

Do documento citado acima ( link )

  1. um sistema em tempo real suave proporcionará latência média reduzida, mas não um tempo máximo de resposta garantido.
  2. Um sistema de tempo real rígido atende os prazos desejados em todos os momentos (100%), mesmo sob uma carga de sistema no pior dos casos.
  3. De acordo com Yaghmour [4], "ofertas em tempo real com garantias, não com velocidade bruta".

O artigo diz que o kernel em tempo real ou o tempo limitado é a propriedade mais importante, por isso atrasam a atividade não crítica que leva ao atraso, mas para o kernel de baixa latência tentam reduzir a latência geral que ajuda na maioria dos casos. Devido à latência reduzida, o sistema parece ser rápido. Leia o artigo com atenção.

    
por Mayank Suman 17.08.2014 / 07:34

Tags