Miguel Mayol, un gran seguidor e comentarista deste blog, recomendou un artigo publicado en Hispásico sobre o uso dos núcleos RT, que decidimos publicar e estender nalgunhas das súas partes.
O Núcleos RT permitir a rendemento óptimo nalgúns situacións particularesPor exemplo, a edición de audio ou o uso de instrumentos musicais virtuais. |
Índice
Núcleo multitarea
O núcleo Linux, como o dos sistemas operativos máis modernos, é multitarea. Isto significa que varios programas están a executarse ao mesmo tempo.
En realidade, este non é exactamente o caso. O que fas é colocar os programas nunha cola e, un a un, o microprocesador os executa durante un tempo determinado. Unha vez esgotado, o microprocesador interrompe a tarefa, deixándoa á metade e cede a seguinte. Esta cantidade de tempo chámase cuántica ou porción de tempo e non ten por que ser constante.
Unha boa analoxía podería ser un cociñeiro de bar preparando varios pratos ao mesmo tempo: un bocadillo de solomillo, un sándwich de callos, unha ensalada mixta ... Agora crebo o pan, acendo a tixola, mentres está quentando lavo a leituga, etc.
Se o cuántico é o suficientemente pequeno, a impresión subxectiva para un observador lento, como o ser humano, é que, en vez de que un procesador rápido execute tarefas alternativamente, temos un procesador lento para cada un deles (varios cociñeiros na mesma cociña fan lentamente cada un deles). un só prato).
O cambio de tarefa ten un custo
A multitarefa non é gratuíta: implica sobrecarga de procesador. De feito, desaloxar unha tarefa e cargar a seguinte é un traballo extra. Esta operación chámase "cambio de contexto" ou "cambio de tarefas". Sería máis rendible en termos de CPU executar os programas completamente, un por un, que cortalos en "franxas" e saltar dun a outro. Non obstante, o sistema perdería en interactividade, non poderiamos ter varias ventás abertas ou, no caso dun servidor, atender varias solicitudes simultaneamente.
Latencia e rendemento
Supoñamos que o noso cociñeiro ten que pelar 20 quilos de gambas e meter 20 quilos de olivas. Como está previsto o traballo?
Nun caso extremo, primeiro pelaba todas as gambas, lavábase as mans para non mesturar sabores e despois poñía todas as olivas. Representarémolo así:
GGGGGGGGGGGGGGGGGGGGGGG ... C AAAAAAAAAAAAAAAAAAAAAA ...
No extremo oposto, pelaba unha gamba, lavábase as mans, poñía unha aceituna, lavábase as mans ... langosta, aceituna, lagostino, aceituna ... Representarémola así:
GCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCAC ...
A 'C' representa o cambio de contexto: lavarse as mans, cambiar os utensilios ...
Ao mesmo tempo, un camareiro recolle as peticións dos clientes: "¡Un con gambas!" ... "Un con olivas!" ... e trasládaas á cociña.
No primeiro caso, supoña que un cliente entra e pide unha porción de camarón. Non hai problema, sérvese inmediatamente. Pero e se pide olivas? O camareiro non o puido servir ata que pelaran todas as gambas. Neste caso, a latencia, que é o tempo que transcorre dende que se fai unha solicitude ata que se responde, sería moi alta.
No segundo caso, o que o cliente pida, estará dispoñible nun curto espazo de tempo, practicamente igual nos dous casos. A latencia será baixa, pero a un custo: debido aos cambios de contexto haberá unha diminución do rendemento, entendida como a parte do tempo durante o cal a CPU está a facer tarefas directamente produtivas, en lugar de tarefas de soporte.
Obviamente neste caso a solución ideal sería un termo medio, que dependería do tamaño das racións e da distribución estatística das solicitudes. A teoría das colas é a rama das matemáticas que se encarga de estudar estas situacións e proporcionar solucións óptimas.
Como podes ver, a latencia e o rendemento son opostos. Por esta razón non é correcto dicir que os núcleos rt dan máis rendemento. Pola contra, diminuír a latencia reduce o rendemento da máquina e, polo tanto, é unha mala opción para sistemas que non requiren respostas súper rápidas, como servidores web ou de base de datos.
Pola contra, os núcleos de baixa latencia son ideais en situacións nas que se precisa a velocidade máxima de resposta a estímulos externos, como sistemas de control industrial ou aplicacións multimedia interactivas, sabendo que estamos sacrificando parte da potencia da máquina para garantir esa reacción rápida. .
Prioridades
Unha opción interesante nos sistemas de tarefas múltiples é dar prioridades diferentes ás tarefas, de tal xeito que as máis importantes reciban máis tempo do procesador e as menos importantes menos. Nun núcleo normal isto faise co comando 'nice'. Se o noso cociñeiro espera servir máis racións de gambas que olivas, faría ben en dedicar máis tempo ás primeiras, por suposto.
Kernel RT (ou baixa latencia)
O problema cos núcleos normais é que as tarefas non se poden interromper en ningures, hai que agardar a que cheguen a certos puntos de execución onde se poden deter para cambiar a outro. Isto introduce o que chamamos latencia.
Para dicilo dun xeito simplificado, os núcleos RT permiten interromper tarefas en máis lugares que os núcleos normais. Poden facer, por dicilo así, anacos de tempo máis finos, polo que a tarefa actual será desaloxada máis rápido e a nosa tarefa prioritaria poderá acceder á CPU antes. Polo tanto, a latencia será menor.
Digamos que un núcleo RT permítenos deixar un camarón medio pelado se o que se precisa con urxencia nese momento é poñer unha oliva canto antes, mentres que nun núcleo normal sería necesario acabar de pelar o camarón.
Ademais de facer máis finas as porcións, os núcleos RT teñen un sistema de prioridades moito máis estricto, onde as tarefas prioritarias pícanse sen piedade (preveníndose) para obter o control da CPU, ralentizando outros programas o necesario para facelo.
Cando é importante usar un núcleo RT?
En dous casos:
1) Cando precisamos latencias moi baixas, é dicir, reaccións moi rápidas da máquina. O exemplo máis claro é a actuación de instrumentos virtuais, onde precisa que o instrumento soe inmediatamente ao premer unha tecla nun teclado MIDI.
2) Cando precisamos prioridades moi estritas, é dicir, que a nosa tarefa de alta prioridade non sexa interrompida por nada no mundo (a non ser que no caso catastrófico de que a CPU estea tan sobrecargada que supere o 100% de utilización). Por exemplo, gravamos unha sesión de audio con Ardor e vemos como os indicadores de fader suben e baixan. Non importa se perdemos un marco de actualización dos faders sempre que o transporte de son do micrófono ao disco duro non se interrompa. Un núcleo RT ralentizará a actualización do fader sempre que sexa necesario mentres non se perda nin unha mostra de audio.
Dito isto, en xeral os novos núcleos non RT melloraron moito o seu sistema de programación e xestión de prioridades. Se non ten a CPU no límite das súas posibilidades (digamos por debaixo do 50% de uso) ou se non lle importa que de cando en vez haxa un pequeno micro corte (faga clic) no son (os tan temidos xruns), un núcleo normal dá un rendemento perfectamente aceptable.
Que latencia é aconsellable?
Persoalmente, calquera cousa por debaixo dos 10 ms está ben para min e a partir dos 20 ms xa empezo a notar o atraso con claridade. Hai xente máis esixente.
Instalación
En Ubuntu e derivados:
sudo apt-get install linux-headers-lowlatency
sudo apt-get install linux-lowlatency
sudo update-grub
Ao iniciar terá dúas opcións (o núcleo normal e o de baixa latencia).
En Arch e derivados:
yaourt -S linux-rt
sudo update-grub
Fuente: Hispásico
13 comentarios, deixa os teus
moi completo e bo
explicou. si, estou a usar Linux para a produción de música con
unha distro normal e non teño problemas de latencia, o
a resposta é instantánea ao reproducir audio. Non teño moitos
coñecemento, pero creo que os controladores de audio en Linux son
moi ben nin sequera necesito jack para conseguir un bo
actuación
Excelente artigo e a explicación non podería ser mellor. Graciñas
Ola: Moi interesante, probareino en tarefas de cálculo intensivas en CPU + GPU.
Como podes deixar o sistema operativo Ubuntu 12.0 como antes, é dicir, desinstala o "linux-headers-lowlatency". Saúdos.
Moitas grazas polo artigo. É realmente moi interesante saber como funcionan os núcleos de baixa latencia. Interésame saber máis sobre el e a súa utilidade. Graciñas
Estupendo artigo! unha vez que souben que era necesario un núcleo de baixa latencia para executar un teclado máis sensible, pero non tiña nin idea de por que e como facelo. A analoxía é moi clara.
Si señor, completamente certo.
É algo completamente vital tamén na produción musical, como se di no uso de VST, por exemplo, nunha actuación en directo usando un controlador MIDI temos que ir ao mesmo tempo que os outros instrumentos e unha alta latencia pode tocar un enganarnos.
Ou non necesariamente no uso de instrumentos virtuais, senón na gravación, a través da interface prodúcese unha latencia que pode confundirnos á hora de interpretar instrumentos
Estupendo artigo, non tiña nin idea do que significaba a baixa latencia nun núcleo (aínda que o relacionei con latencias nos módulos RAM)
Moi ben ... gustoume moito.
cambiando de tema, alguén sabe resolver o problema do wifi (sen fíos do meu colo) que non me deixa traballar en espazos públicos, o sinal é moi baixo.
Teño Ubuntu 11.10 e o meu colo é: Dell inspiron n4110.
Agradézolle de antemán.
Grazas, para engadir que Sabayon leva este núcleo, compilado a 1000 Hz por defecto, que tamén é ideal para servidores de xogos FPS e para xogos FPS e para calquera outro esixente, excepto quizais aqueles que usan bases de datos, aínda que para min en Sabayon freeciv estoupoume ..
Nun escritorio, normalmente prioriza a tarefa principal, polo que pode ser conveniente usala aínda que sexa menos eficiente para as outras tarefas, para o que estamos facendo neste momento irá máis rápido e nos computadores modernos actuais pode ser bastante interesante.
Trátase de instalalos, probalos durante unha semana, regresar ao núcleo (normal) e ver como foi e cal preferimos, así como usalo para as tarefas específicas que cada un deles é mellor.
Excelente artigo, moi ben explicado.
Grazas.
Excelente explicación, moitas grazas, axudoume moito 🙂
Artigo moi interesante, foi un pouco máis claro para min, aínda que sigo tendo dúbidas sobre se un núcleo de baixa latencia me convén. Como podo saber a latencia dun núcleo? Graciñas
Recentemente instalei unha distro studio ubuntu e decateime de baixa latencia, investigando que cheguei á túa páxina. Teño moi claro os conceptos básicos dos sistemas operativos e a túa explicación foi perfecta. Resolveuno. Parabéns