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)?
linux
linux-kernel
Prumo
fonte
fonte
Respostas:
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:
nice
,schedtool
para atribuir adequadas prioridades / classes de acordo com suas necessidadesfonte
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
fonte
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.
fonte