É necessário o kernel linux de 1000 HZ se eu tiver um temporizador de tickless e de alta resolução?


13

Estou tentando melhorar o desempenho no meu servidor. Eu tenho alguns processos que precisam de baixa instabilidade (variação menor que 10ms).

Eu tenho uma média de carga máxima de 4 em um i7-920 (4 núcleos físicos, 8 com HT). Existem cerca de 10 processos que variam de 40% a 90% do modo de usuário principal. O uso do sistema é de 3% no total. O uso total da CPU é 80% no máximo.

A configuração do kernel de 100hz a 1000hz melhorará a instabilidade se os temporizadores de tickless e de alta resolução já estiverem definidos?

Esta página parece indicar que ainda faz alguma coisa. https://lkml.org/lkml/2009/4/28/401

Que tal mudar de voluntário (PREEMPT_VOLUNTARY) para preemptivo (PREEMPT)?


Detalhes / versão da distribuição do SO?
precisa saber é

Kernel Linux 3.3 do servidor Ubuntu 11.10 de 64 bits.
Bob

Você tem bastante carga no modo de usuário; a hora do sistema é comparativamente insignificante. Eu não sugeriria dançar em torno de sintonizadores de kernel lá. Ou obter agendamento em tempo real é o que você espera obter?
Yrk

Então, você está dizendo que se o uso do sistema é baixo, nada disso faz diferença na capacidade de resposta?
Bob

Respostas:


4

Estou tentando melhorar o desempenho no meu servidor. Eu tenho alguns processos que precisam de baixa instabilidade (variação menor que 10ms).

Qualquer tempo real não melhora o desempenho, tornaria todo o sistema funcionando mais suave, mas um pouco mais lento, na verdade. Em outras palavras, é taxa de transferência x latência. Se é realmente o que você precisa, então várias opções:

  • Use 300 Hz ou até 1KHz, PREEMPT e não use tickless
  • Use nice, schedtoolpara atribuir adequadas prioridades / classes de acordo com suas necessidades
  • Tente RT ou BFS

O que há de errado em usar o tickless?
22412 Bob

1
@Bob, é bom para de economia de energia, mas no caso de você se preocupa com latência, é recomendado para ser desligado, por exemplo ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt
poige

3

Se o jitter baixo for importante para você, sim, convém usar 1000 hz e PREEMPT.

Se esses processos são realmente sensíveis ao tempo, você provavelmente precisará de alguns patches / kernels orientados em tempo real, ou pelo menos alguns parâmetros de agendamento no nível do processo, como o rtprio.

Os usos típicos são servidores de áudio; consulte, por exemplo, conselhos do jackaudio


3

1) Não use tickless, ele ainda é altamente experimental e não é recomendado a ninguém, exceto aos desenvolvedores que trabalham nele, também serve para ajudar a economizar energia.

2) O sistema totalmente preemtível deve aumentar a capacidade de resposta do desktor, enquanto o preemptivo voluntário é para uso geral (mistura de capacidade de resposta e taxa de transferência). Se o seu servidor possui SMP (múltiplos núcleos), você deve optar por não-preemptivo, pois a maioria do trabalho será executada em seus núcleos e sem interrupções, o que geralmente 1) leva tempo 2) cache de lixo

3) 1000Hz é o valor da área de trabalho que introduz sobrecarga, mas permite, por exemplo, jogar jogos e outras coisas. 300 hz é o valor recomendado para vídeo (para que as coisas possam reagendar e você ainda não perca os quadros), enquanto 100Hz fornece a melhor taxa de transferência (embora não seja voltada para coisas de rede de baixa latência).

Se você quiser ficar o mais estável possível (sem usar patches de RT), você deve: ticks periódicos (estabilidade) não-preemptivo (estabilidade) frequência do timer (até você, 1000 para melhor capacidade de resposta e baixas latências, 100 para melhor desempenho, mas resolução de 10ms no temporizador, por exemplo, o material será executado pelo menos 10ms)

Espero que isso ajude um pouco.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.